Solon v3.8.3

agent - 与容器型框架集成

</> markdown
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();
    }
}