package com.xly.config; import dev.langchain4j.model.chat.StreamingChatModel; import dev.langchain4j.model.openai.OpenAiStreamingChatModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.time.Duration; import java.util.List; /** * agent 用的流式模型 Bean(OpenAI 兼容协议:Ollama /v1、vLLM、云端网关皆可,换供应商只改配置)。 * *
单一 ReAct agent 的**组装**已移到 {@link AgentFactory}(按每次请求的身份新建携带 token/权限的工具实例, * 见 §5/§7 per-call context)。本类只保留全局复用的流式模型。 */ @Configuration public class AgentConfig { @Value("${llm.base-url}") private String baseUrl; @Value("${llm.api-key:ollama}") private String apiKey; @Value("${llm.chat-model}") private String chatModelName; @Autowired private TracingChatModelListener tracingListener; /** 专供 agent 的流式模型:低温度利于稳定的工具调用。 */ @Bean("agentStreamingModel") public StreamingChatModel agentStreamingModel() { return OpenAiStreamingChatModel.builder() .baseUrl(baseUrl) .apiKey(apiKey) .modelName(chatModelName) .temperature(0.1) .topP(0.9) .reasoningEffort("none") .listeners(List.of(tracingListener)) .timeout(Duration.ofSeconds(180)) .build(); } }