Solon AI 开发学习 3 - chat - 模型配置与请求选项

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   默认工具(每次请求,都会附上)
defaultToolsContext:Map   默认工具上下文(每次请求,都会附上)
defaultInterceptors:List   默认拦截器(每次请求,都会附上)
defaultOptions:Map   默认选项(每次请求,都会附上)

关于 model 配置:

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

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

示例:

//用 ChatConfig 构建聊天模型(ChatConfig 一般用于接收配置注入)
public void case1(@Inject("${xxx.yyy}") ChatConfig config) {
    ChatModel chatModel = ChatModel.of(config).build(); 
}

//直接构建聊天模型(ChatModel.Builder 内置 ChatConfig)
public void case2() {
    ChatModel chatModel = ChatModel.of(apiUrl).apiKey(apiKey).model(model).build();
}

2、聊天模型请求选项(ChatOptions)

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

方法 描述
toolsContext():Map 获取工具上下文(附加参数)。v3.4.0 后支持
toolsContext(Map):self 设置工具上下文(附加参数)。v3.4.0 后支持
     
tools():FunctionTool[] 获取所有函数工具(内部构建请求时用)
tool(name):FunctionTool 获取函数工具
toolsAdd(FunctionTool):self 添加函数工具
toolsAdd(Iterable<FunctionTool>):self 添加函数工具
toolsAdd(ToolProvider):self 添加函数工具
toolsAdd(Object):self 添加函数工具(@ToolMapping object)
toolsAdd(String, Consumer<FunctionToolDesc>):self 添加函数工具(构建模式)
     
interceptors():ChatInterceptor[] 获取所有聊天拦截器(内部构建请求时用)
interceptorAdd(ChatInterceptor):self 添加聊天拦截器
interceptorAdd(int, ChatInterceptor):self 添加聊天拦截器
     
options():Map<String, Object> 获取所有选项(内部构建请求时用)
option(key):Object 获取选项
optionAdd(key,val):self 添加选项(常用选项之外的选项)
     
tool_choice(choiceOrName):self 常用选项:工具选择(可选:none,auto,required,或 tool-name)
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 常用选项:存在惩罚
     
response_format(map):self 常用选项:响应格式
user(user):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 查询合适数据;
    }
}

3、关于 response_format (模型的响应格式)

每个模型可能不同,一般:默认为 md 格式。其它格式参考(具体要看模型的说明):

chatModel.prompt("hello")
    .options(o->o.response_format(Utils.asMap("type", "json_object"))) //使用聊天选项
    .call();
chatModel.prompt("hello")
    .options(o->o.response_format(Utils.asMap("type", "json_schema",
                                    "json_schema", Utils.asMap("type","object","properties",Utils.asMap()),
                                    "strict", true))) //使用聊天选项
    .call();
优秀的个人博客,低调大师

微信关注我们

转载内容版权归作者及来源网站所有!本站原创内容转载请注明来源!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。