当前位置: 首页 > 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.zskr.cn/news/63087.html

相关文章:

  • conda虚拟环境的创建与删除
  • 约会急救包:幻颜之约如何让你由内而外自信登场
  • 瑜伽、健身达人的私护清单:幻颜之约应对汗湿与摩擦
  • 体育赛场竞风流 热血竞技展锋芒
  • 竞技热血永不熄 体育赛场铸传奇
  • minidot软件的安装
  • 热血体育竞技 赛场荣耀时刻
  • 【JPCS出版 | 前五届均已见刊检索】第六届材料化学与复合材料国际学术会议(MCCM 2025)
  • 2025年琉璃瓦厂家推荐排行榜:哪家好?哪家靠谱?选哪家?——基于 CNPP 榜单的对比评测
  • 2025年11月成都电线电缆厂家最新推荐,高压电缆、中压电缆、低压电缆、铜芯电缆、铝芯电缆、企业综合服务能力与产品特色深度解析
  • rust关键字unsafe
  • 完整教程:TouchDIVER Pro 触觉手套:Weart把火星岩石触感、手术操作感搬进 XR
  • 高品质牛肉品牌推荐:安心之选,守护家庭餐桌
  • 06.入门篇-AI编程助手
  • 2025年11月电线电缆最新推荐厂家,高压电缆、中压电缆、低压电缆、铜芯电缆、铝芯电缆、铝合金电缆多维度综合考量
  • U634637 Star way to heaven
  • 2025 年不锈钢水管厂家最新推荐榜,深度剖析品牌技术实力与市场口碑的核心竞争力薄壁/沟槽/卫生级/环压/快装/316/卡压式不锈钢水管/不锈钢水管工程/不锈钢水管管件/不锈钢水管安装公司推荐
  • 产学研融合!2025年中成药品牌排行榜10强好医生集团的创新引擎
  • FrameWork4.5 项目下使用EF6 同一项目操作多种数据库
  • 2025 年升降柱机芯厂家最新推荐榜,技术实力与市场口碑深度解析,筛选高性能可靠货源IP68 升降柱机芯 / 防撞升降柱机芯 / 低压升降柱机芯 / 液压升降柱机芯 / 路障机升降柱机芯公司推荐
  • java 上转型对象调用
  • 比较好吸收的奶粉怎么选?这篇文章里有答案
  • 深入解析:Angular【基础语法】
  • U635097 有向图
  • 时序约束记录
  • U635732 木叶下
  • 2025深圳粉末冶金展机构权威推荐榜单:2025青岛家博会‌/2025深圳跨境电商展‌/2025新加坡海鲜展源头机构精选
  • U635730 二叉树
  • 2025年宽幅等离子清洗机优质厂家权威推荐榜单:真空等离子清洗机/大气等离子清洗机/等离子体清洗机源头厂家精选
  • 深入解析:简单、高效且低成本的预训练、微调与服务,惠及大众基于 Ray 架构设计的覆盖大语言模型(LLM)完整生命周期的解决方案byzer-llm