news 2026/4/16 18:10:15

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Solon AI 开发学习4 - chat - 模型实例的构建和简单调用

天模型接口(ChatModel)支持:

同步调用(call),一次性返回结果

支流式调用(stream,基于 reactivestreams 规范)。通过 sse 或 x-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 服务时,需要配置 provider

model: "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 {

@Bean

public ChatModel build(@Inject("${solon.ai.chat.demo}") ChatConfig config) {

return ChatModel.of(config).build();

}

}

手动方式构建

@Configuration

public class DemoConfig {

@Bean

public 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 或 websocket

publisher.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。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 22:42:03

音乐系统源码 Python+Django+Vue 前后分离 万字文档

一、关键词音乐系统、在线音乐平台、音乐播放系统、音乐分享平台、音乐推荐系统二、作品包含源码数据库万字设计文档PPT全套环境和工具资源本地部署教程三、项目技术前端技术&#xff1a;Html、Css、Js、Vue2.6、Element-ui后端技术&#xff1a;Python、Django、PyMySQL四、运行…

作者头像 李华
网站建设 2026/4/15 18:44:09

收藏!30+程序员别再内耗:零基础转大模型,2个月拿2W+offer

还在纠结要不要转行&#xff1f;捧着大模型理论资料却迟迟不动手&#xff1f;作为一名30北漂程序员&#xff0c;我用2个月时间完成零基础转行&#xff0c;成功拿下月薪2W的大模型岗位offer。今天把我的真实经历和避坑指南全分享出来&#xff0c;尤其适合想跨界的程序员和刚入门…

作者头像 李华
网站建设 2026/4/16 14:02:42

Cocos Creator三消游戏开发终极指南:从零到精通

Cocos Creator三消游戏开发终极指南&#xff1a;从零到精通 【免费下载链接】kaixinxiaoxiaole 使用cocos creator 编写的三消游戏 开心消消乐 项目地址: https://gitcode.com/gh_mirrors/ka/kaixinxiaoxiaole 你是不是也想开发一款像开心消消乐一样风靡的三消游戏&…

作者头像 李华
网站建设 2026/4/15 16:52:12

HunyuanVideo重磅开源:重新定义视频生成开发范式

HunyuanVideo重磅开源&#xff1a;重新定义视频生成开发范式 【免费下载链接】HunyuanVideo 项目地址: https://ai.gitcode.com/hf_mirrors/tencent/HunyuanVideo 在文生视频技术快速迭代的当下&#xff0c;开源与闭源模型的性能鸿沟始终是制约行业发展的关键瓶颈。腾讯…

作者头像 李华
网站建设 2026/4/16 12:15:23

如何高效使用TestDisk:从入门到精通的完整操作指南

当硬盘分区意外丢失、重要文件无法访问时&#xff0c;你是否曾感到束手无策&#xff1f;TestDisk作为一款功能强大的开源数据恢复工具&#xff0c;能够帮助你在数据灾难中快速找回丢失的文件&#xff0c;修复受损的文件系统。无论你是技术新手还是IT专业人士&#xff0c;掌握这…

作者头像 李华
网站建设 2026/4/15 23:07:35

如何用Moonlight for Tizen实现智能电视游戏串流:完整操作指南

如何用Moonlight for Tizen实现智能电视游戏串流&#xff1a;完整操作指南 【免费下载链接】moonlight-chrome-tizen A WASM port of Moonlight for Samsung Smart TVs running Tizen OS (5.5 and up) 项目地址: https://gitcode.com/gh_mirrors/mo/moonlight-chrome-tizen …

作者头像 李华