AgentConfig.java
1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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、云端网关皆可,换供应商只改配置)。
*
* <p>单一 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();
}
}