agent - 与容器型框架集成
2026年1月14日 下午3:00:50
本指南以 Solon 框架为例,展示如何将 ReActAgent 集成到 Web 服务中。其它容器型框架的集成逻辑类似。
1、配置智能体和会话管理
通过 @Configuration 定义智能体实例和会话存储方案。在生产环境中,建议将会话存储(AgentSession)与 Redis 等持久化介质对接。
import org.noear.solon.ai.agent.AgentSession;
import org.noear.solon.ai.agent.AgentSessionProvider;
import org.noear.solon.ai.agent.react.ReActAgent;
import org.noear.solon.ai.agent.session.InMemoryAgentSession;
import org.noear.solon.ai.chat.ChatModel;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Configuration
public class AgentConfig {
@Bean
public ReActAgent getAgent() {
ChatModel chatModel = ChatModel.of("https://ai.gitee.com/v1/chat/completions")
.apiKey("***")
.model("Qwen3-32B")
.build();
return ReActAgent.of(chatModel)
.build();
}
@Bean
public AgentSessionProvider getSessionProvider() {
Map<String, AgentSession> map = new ConcurrentHashMap<>();
return (sessionId) -> map.computeIfAbsent(sessionId,
k -> InMemoryAgentSession.of(k));
}
}
2、对接 web api
在控制器中注入智能体,并通过 sessionId 实现多轮对话的上下文管理。
import org.noear.solon.ai.agent.AgentSessionProvider;
import org.noear.solon.ai.agent.react.ReActAgent;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Inject;
import org.noear.solon.annotation.Mapping;
@Mapping("/agent")
@Controller
public class AgentController {
@Inject
ReActAgent agent;
@Inject
AgentSessionProvider sessionProvider;
@Mapping("call")
public String call(String sessionId, String query) throws Throwable {
return agent.prompt(query)
.session(sessionProvider.getSession(sessionId))
.call()
.getContent();
}
}