Solon v3.3.3

chat - 模型配置与请求选项

</> markdown

1、模型配置(ChatConfig)

ChatConfig,聊天模型配置

属性要求描述
apiUrl:String必须大语言模型接口地址(完整地址)
apiKey:String 接口令牌
provider:String 服务提供者(如ollama、dashscope、openai),默认为 openai
model:String必须大语言模型
headers:Map<String, String> 头信息(其它配置,都以头信息形式添加)
timeout:Duration 请求超时(默认:60s)
proxy:ProxyDesc 网络代理
defaultTools:Map 默认工具(每次请求,都会附上)

关于 model 配置:

  • 如果是 ollama ,运行什么模型即填什么(如: ollama run deepseek-r1:7b,则填:deepseek-r1:7b
  • 如果是其它服务平台,请按平台的接口说明填写

更多可参考:《模型实例的构建和简单调用》

2、请求选项(ChatOptions)

ChatOptions,聊天请求选项(不同模型,支持情况不同)

方法描述
tools():FunctionTool[]获取所有函数工具(内部构建请求时用)
tool(name):FunctionTool获取函数工具
toolsAdd(FunctionTool):self添加函数工具
toolsContext(Map):self工具上下文(附加参数)。v3.4.0 后支持
options():Map<String, Object>获取所有选项(内部构建请求时用)
option(key):Object获取选项
optionAdd(key,val):self添加选项
max_tokens(val):self常用选项:最大提示语令牌数限制
max_completion_tokens(val):self常用选项:最大完成令牌数限制
temperature(val):self常用选项:temperature 采样
top_p(val):self常用选项:top_p 采样
top_k(val):self常用选项:top_k 采样
frequency_penalty(val):self常用选项:频率惩罚
presence_penalty(val):self常用选项:存在惩罚

示例:

public void case1(ChatConfig config) {
    ChatModel chatModel = ChatModel.of(config).build(); //使用聊天配置
    
    chatModel.prompt("hello")
        .options(o->o.max_tokens(500)) //使用聊天选项
        .call();
}
public void case2(ChatConfig config, String user) {
    ChatModel chatModel = ChatModel.of(config).build(); //使用聊天配置
    
    chatModel.prompt("hello")
        .options(o->o.toolsAdd(new WeatherTool()).toolsContext(Utils.asMap("user", user))) //使用聊天选项
        .call();
}

//user 参数不加 @Param(即不要求 llm 输出),由 toolsContext 传入(扩展参数)!
public class WeatherTool {
    @ToolMapping(description = "获取指定城市的天气情况")
    public String get_weather(@Param(description = "根据用户提到的地点推测城市") String location, String user) {
        return "晴,24度"; //可使用 “数据库” 或 “网络” 接口根据 location 查询合适数据;
    }
}