当前位置: 首页 > news >正文

Solon AI 开发学习4 - chat - 模型实例的构建和简单调用

聊天模型接口(ChatModel)支持:

  • 同步调用(call),一次性返回结果
  • 支流式调用(stream,基于 reactivestreams 规范)。通过 ssex-ndjson 流式返回结果。
  • Tool Call(或 Function Call) 与本地数据互动(需要 llm 支持)
  • 提示语多消息输入输出(记忆体)
  • 带图片消息
  • 与 solon-flow 结合使用

1、聊天模型的构建

  • 配置方式构建
solon.ai.chat:demo:apiUrl: "http://127.0.0.1:11434/api/chat" # 使用完整地址(而不是 api_base)provider: "ollama" # 使用 ollama 服务时,需要配置 providermodel: "llama3.2"headers:x-demo: "demo1"
import org.noear.solon.ai.chat.ChatConfig;
import org.noear.solon.ai.chat.ChatModel;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration;
import org.noear.solon.annotation.Inject;@Configuration
public class DemoConfig {@Beanpublic ChatModel build(@Inject("${solon.ai.chat.demo}") ChatConfig config) {return ChatModel.of(config).build();}
}
  • 手动方式构建
@Configuration
public class DemoConfig {@Beanpublic ChatModel build() {return ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base).provider("ollama").model("llama3.2").headerSet("x-demo", "demo1").defaultOptionAdd("stream_options", Utils.asMap("include_usage", true)).build();}
}

2、同步调用(call)

public void case1() throws IOException {ChatResponse resp = chatModel.prompt("hello").call();//打印消息log.info("{}", resp.getMessage());
}

3、异步流式或响应式调用(stream)

流式返回为 org.reactivestreams.Publisher(reactivestreams 规范)

public void case2() throws IOException {Publisher<ChatResponse> publisher = chatModel.prompt(ChatMessage.ofUser("hello")).stream();//return publisher; //使用 solon-web-rx 时可直接返回;或者对接 solon-web-sse 或 websocketpublisher.subscribe(new SimpleSubscriber<ChatResponse>().doOnNext(resp -> {log.info("{}", resp.getMessage());}).doOnComplete(() -> {log.debug("::完成!");}).doOnError(err -> {log.error("{}", err);}));
}

可以直接订阅消费(如上)。也可对接各种流行的响应式框架,比如 mutiny、rxjava 或 reactor:

@Produces(MimeType.TEXT_EVENT_STREAM_UTF8_VALUE)
@Mapping("case2")
public Flux<SseEvent> case2(String prompt) throws IOException {return Flux.from(chatModel.prompt(prompt).stream()).map(resp -> resp.getMessage()).map(msg -> new SseEvent().data(msg.getContent())).doOnError(err->{log.error("{}", err);});
}

4、模型日志

内部默认会打印 llm 请求与响应的日志,分别以 ai-request:ai-response: 开头。日志级别为:DEBUG。

http://www.jsqmd.com/news/53111/

相关文章:

  • 2025 年快速退火炉厂家最新推荐榜,技术实力与市场口碑深度解析,呈现高性能设备优质品牌晶圆 / 高温 / 桌面 / 半自动 / 全自动 / 芯片 / 硅片 / RTP 快速退火炉公司推荐
  • 二进制漏洞扫描技术一览
  • 详细介绍:论文阅读笔记——自注意力机制
  • conda虚拟环境的创建与删除
  • CMTI测试为何成为半导体隔离器件的“必考题”?苏州永创PPS-CMTIX系统给出专业答案 - FORCREAT
  • 约会急救包:幻颜之约如何让你由内而外自信登场
  • 泳池后的安心:幻颜之约游泳后私处护理流程
  • 数组的拼接
  • 泳池、温泉后必做?幻颜之约的“水环境”私护指南
  • 数组的重塑
  • 瑜伽、健身达人的私护清单:幻颜之约应对汗湿与摩擦
  • 2025 年接触角测量仪厂家最新推荐榜,深度剖析品牌技术实力与市场口碑及产品适配性座滴法 / 动态 / 静态 / 全自动 / 水滴 / 高温 / 晶圆 / 便携式接触角测量仪公司推荐
  • mdns shell
  • 体育赛场竞风流 热血竞技展锋芒
  • 竞技热血永不熄 体育赛场铸传奇
  • 2025 年干式超声波除尘厂家最新推荐榜,聚焦技术实力与市场口碑深度解析USC / 非接触式 / 无损伤 / 锂电极片 / 玻璃盖板 / 显示玻璃 / 薄膜 / PCB / 镜头干式超声波除尘公司推荐
  • 2025 年等离子设备厂家最新推荐榜,技术实力与市场口碑深度解析,助力企业精准选型表面处理 / 镀膜 / 封装处理 / 清洗 / 表面活化 / 表面改性设备 / 真空等离子清洗设备公司推荐
  • 音乐模式切换下一曲造成灯光异常问题
  • 洛谷 P3386:【模板】二分图最大匹配 ← 匈牙利算法
  • minidot软件的安装
  • 【Linux】编辑器vim的使用和理解gcc编译器 - 详解
  • UWB汽车钥匙介绍
  • php 8.2 配置安装php-zbarcode扩展
  • 庸者谋事,智者谋局
  • 热血体育竞技 赛场荣耀时刻
  • 2025 年最新推荐液位计厂家排行榜:聚焦投入式 / 磁致伸缩 / 防爆 / 防水 / 浮球液位计优质企业
  • 奥运赛事激情对决 体育竞技热血启航
  • 2025 年传感器厂家最新推荐排行榜:磁致伸缩 / 防爆 / 液位等多类型产品权威测评与实力解析线性 / 矿用 / 直线 / 油缸位移传感器 / 液位传感器公司推荐
  • 【相反数】暴力即可
  • 【JPCS出版 | 前五届均已见刊检索】第六届材料化学与复合材料国际学术会议(MCCM 2025)