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();
### 关于 Solon AI MCP Server 的技术信息 Solon AI 是一个基于 Java 的轻量级框架,旨在简化微服务架构下的开发流程。`solon-ai-mcp-server` 是其生态系统中的一个重要模块,主要用于支持模型控制协议(Model Control Protocol, MCP)。以下是关于 `solon-ai-mcp-server` 的一些技术和使用方面的详细介绍: #### 1. **Maven 依赖** 要集成 `solon-ai-mcp-server` 到项目中,可以通过 Maven 添加以下依赖项: ```xml <dependency> <groupId>org.noear</groupId> <artifactId>solon-ai-mcp</artifactId> </dependency> ``` 此依赖提供了基础功能以构建和运行 MCP 服务器[^1]。 #### 2. **基本配置** 为了启用并正确配置 `solon-ai-mcp-server`,需要在项目的 `application.properties` 文件中设置如下参数: ```properties spring.ai.mcp.server.enabled=true spring.ai.mcp.server.name=my-solon-mcp-server spring.ai.mcp.server.version=1.0.0 spring.ai.mcp.server.type=ASYNC spring.ai.mcp.server.sse-message-endpoint=/mcp/stream-messages ``` 这些属性定义了 MCP 服务器的行为模式以及消息流的处理方式[^3]。 #### 3. **启动初始化** 通过继承或扩展默认的服务类,开发者能够快速创建自定义逻辑的服务实例。例如: ```java import org.noear.solon.annotation.Component; import org.noear.solon.core.Aop; @Component public class MyCustomService extends AbstractMcpservice { @Override public String processRequest(String input) { // 自定义业务逻辑 return "Processed: " + input; } } ``` 在此基础上,确保应用上下文中已注册该组件以便被自动扫描加载[^4]。 #### 4. **客户端交互** 虽然当前讨论重点在于服务端部分,但了解如何设计兼容性强的客户端同样重要。Python 实现了一个简单的例子展示怎样连接到远程部署好的 MCP Server 并发送请求获取响应数据[^2]: ```python import requests url = &#39;http://localhost:8080/mcp/api&#39; payload = {&#39;text&#39;: &#39;hello world&#39;} headers = {&#39;Content-Type&#39;: &#39;application/json&#39;} response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` 以上脚本演示了向本地运行的服务发起 POST 请求的过程,并解析返回的结果作为 JSON 格式输出显示给用户查看。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值