qwen3 惊喜发布了,帅!我们用 ollama 和 solon ai (java) 也来尝个鲜。

1、先用 ollama 拉取模型

听说,在个人电脑上用 4b 的参数,效果就很好了。

ollama run qwen3:4b

2、试试:Hello qwen3

用 solon-initializr ( https://solon.noear.org/start/ ),生成一个 solon-ai 模板项目。之后:

  • 在应用属性里添加配置(app.yml)
solon.ai.chat:
qwen3:
apiUrl: "http://127.0.0.1:11434/api/chat" # 使用完整地址(而不是 api_base)
provider: "ollama" # ollama 是有自己的专有接口格式,通过配置 provider 可识别方言
model: "qwen3:4b"
  • 用配置器类构建通用聊天模型
@Configuration
public class DemoConfig {
@Bean
public ChatModel chatModel(@Inject("${solon.ai.chat.qwen3}") ChatConfig config) {
return ChatModel.of(config).build();
}
}
  • 添加测试用的控制器
@Controller
public class DemoController {
@Inject
ChatModel chatModel; @Mapping("hello")
public String hello(String message) throws IOException {
return chatModel.prompt(message).call().getMessage().getContent();
}
}
  • 测试一下

启动项目。打开浏览器地址:http://localhost:8080/hello?message=hello。效果良好:

3、尝试把输出改成 sse,方便打字效果的聊天窗口开发

@Controller
public class DemoController {
@Inject
ChatModel chatModel; @Produces(MimeType.TEXT_EVENT_STREAM_UTF8_VALUE) //这个很重要,申明用 sse 格式渲染
@Mapping("hello")
public Flux<String> hello(String message) throws IOException {
return Flux.from(chatModel.prompt(message).stream())
.filter(resp -> resp.hasChoices())
.map(resp -> resp.getMessage().getContent());
}
}
  • 测试一下

启动项目。再次打开浏览器地址:http://localhost:8080/hello?message=hello。效果良好:

4、现在开始 RAG,以 “联网搜索” 作为知识库

这里把“联网搜索”,做为一个知识库使用(内部是动态搜索的)。用它作为 RAG 的外部检索支持。

  • 应用属性加一块配置
solon.ai.chat:
qwen3:
apiUrl: "http://127.0.0.1:11434/api/chat" # 使用完整地址(而不是 api_base)
provider: "ollama" # ollama 是有自己的专有接口格式,通过配置 provider 可识别方言
model: "qwen3:4b" solon.ai.repo:
websearch:
apiUrl: "https://api.bochaai.com/v1/web-search" # 使用完整地址(而不是 api_base)
apiKey: "sk-demo..."
  • 配置器类也调整下
@Configuration
public class DemoConfig {
@Bean
public ChatModel chatModel(@Inject("${solon.ai.chat.qwen3}") ChatConfig config) {
return ChatModel.of(config).build();
} @Bean
public Repository repository(@Inject("${solon.ai.repo.websearch}") AiConfig config) {
return new WebSearchRepository(null, config);
}
}
  • 再改改控制器(输出重新写回简单的方式,不然不好截图)
@Controller
public class DemoController {
@Inject
ChatModel chatModel; @Inject
Repository repository; @Mapping("hello")
public String hello(String message) throws IOException {
//检索
List<Document> context = repository.search(new QueryCondition(message).limit(4)); //消息增强
ChatMessage chatMessage = UserMessage.augment(message, context); //提交大模型并简单返回(不然,截图不好截)
return chatModel.prompt(chatMessage).call().getMessage().getContent();
}
}
  • 测试一下

启动项目。打开浏览器地址:http://localhost:8080/hello?message=solon%20%E6%98%AF%E8%B0%81%E5%BC%80%E5%8F%91%E7%9A%84%EF%BC%9F。效果良好:

5、再试个 Tool Call(即 Function Call)

修改下刚才的配置器,加个模型的默认工具。

@Configuration
public class DemoConfig {
@Bean
public ChatModel chatModel(@Inject("${solon.ai.chat.qwen3}") ChatConfig config) {
return ChatModel.of(config)
.defaultToolsAdd(new Tools())
.build();
} public static class Tools {
@ToolMapping(description = "获取指定城市的天气情况")
public String get_weather(@ToolParam(description = "根据用户提到的地点推测城市") String location) {
return "晴,24度";
}
}
}
  • 测试一下

启动项目。再次打开浏览器地址:http://localhost:8080/hello?message=杭州今天的天气如何?。效果良好:

qwen3 惊喜发布,用 ollama + solon ai (java) 尝个鲜的更多相关文章

  1. 谷歌发布"自动机器学习"技术 AI可自我创造

    谷歌发布"自动机器学习"技术 AI可自我创造 据Inverse报道,今年5月份,谷歌宣布其人工智能(AI)研究取得重大进展,似乎帮助科幻小说中最耸人听闻的末日预言成为现实.谷歌推出 ...

  2. 《2017全球人工智能人才白皮书》发布丨解读世界顶级AI牛人的秘密——腾讯研究院

    <2017全球人工智能人才白皮书>发布丨解读世界顶级AI牛人的秘密——腾讯研究院:下载链接:http://www.tisi.org/c16 这个报告写的很好,排版布局,表格,色调,内容都值 ...

  3. XMOS发布集单片机,AI,FPGA,DSP于一身的跨界处理器完全体xcore.ai,致力于AIOT,售价1美元起步

    说明:XMOS这次致力于打造全新的,颠覆性的嵌入式平台,简化开发人员要学一堆东西才能开发一款高性能AIOT产品的痛点. XCORE.AI集单片机,AI,FPGA,DSP于一身,嵌入式软件开发人员可以灵 ...

  4. FaceBook 发布星际争霸最大 AI 数据集

    简介 我们刚发布了最大的星际争霸:Brood War 重播数据集,有 65646 个游戏.完整的数据集经过压缩之后有 365 GB,1535 million 帧,和 496 million 操作动作. ...

  5. java 多线程 发布订阅模式:发布者java.util.concurrent.SubmissionPublisher;订阅者java.util.concurrent.Flow.Subscriber

    1,什么是发布订阅模式? 在软件架构中,发布订阅是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者).而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话 ...

  6. tomcat与iis公用80端口(已经发布.net项目现在开发Java项目时tomcat在eclipse中localhost:8080打不开问题)

    在开发过.net项目的电脑上安装eclipse配置tomcat运行时打不开页面问题描述,这也是本人亲生经历,找了好多资料网上大多都是tomcat配置问题描述,今天突然想到是不是IIS的问题,果然上网一 ...

  7. resin发布spring-boot项目报错“java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger”

    说白了还是jar包冲突问题,直接说解决方式: 首先将resin/lib下的validation-api-1.0.0.GA.jar替换成项目中的包validation-api-2.0.1.Final.j ...

  8. WorkflowAsCode 来了,Apache DolphinScheduler 2.0.2 惊喜发布

    文章目录 前言 01 新功能 1 WorkflowAsCode 2 企业微信告警方式支持群聊消息推送 02 优化 1 简化元数据初始化流程 2 删除补数日期中的"+1"(天) 03 ...

  9. 又一个小而美的Java Web框架: Solon!

    Solon 是Java世界里一个新的极易上手的Web框架.参考过 Javalin . Spring 等很多现有框架的设计. 取名自海贼王里的角色,说是希能像他一样能打 小.真的是小.最小的运行单位只有 ...

  10. 又一个小而美的Java 开发框架: Solon 1.2 新篇

    Solon 1.2 发布后,取消了X类名前缀.故对此文做些调整. Solon 是Java世界里一个新的极易上手的Java开发框架.参考过 Javalin . Spring boot 等很多现有框架的设 ...

随机推荐

  1. Kali 关闭自动锁屏功能

    Kali 关闭自动锁屏功能 1.点击 [开始] -> [设置] -> [电源管理器] 2.选择 [安全性],将 [自动锁定会话] 选为 [从不],将 [当系统休眠时锁定屏幕] 取消勾选,点 ...

  2. [AHOI2013] 差异 题解

    后缀自动机维护子串公共后缀方便一点,所以直接倒序插入字符串即可. 我们给所有前缀打上标记,然后跑树形 \(dp\),设 \(sum_i\) 表示第 \(i\) 个点的子树内有多少个前缀,\(ans\) ...

  3. Deepseek学习随笔(6)--- API 开发与自动化

    获取 API Key 要开始使用 DeepSeek 的 API,你首先需要获取 API Key: 登录 DeepSeek 控制台 . 进入 API 管理 页面,生成 API Key. API 调用示例 ...

  4. NCS开发学习笔记-基础篇-第 1 课 – nRF Connect SDK 简介

    第 1 课 – nRF Connect SDK 简介 目标 了解 nRF Connect SDK 的结构和内容 在内部,nRF Connect SDK 代码分为四个主要存储库: nrf – 应用程序. ...

  5. Vulnhub-Zico2靶机-漏扫弱口令数据库+文件包含反弹shell+zip,tar提权

    一.靶机搭建 选择扫描虚拟机 选择路径即可 二.信息收集 官方信息 先看一下官网的信息 级别:中级 目标:获取root并读取标志文件 说明: Zico正试图建立自己的网站,但在选择使用什么CMS时遇到 ...

  6. Java SE 24 新增特性

    Java SE 24 新增特性 作者:Grey 原文地址: 博客园:Java SE 24 新增特性 CSDN:Java SE 24 新增特性 源码 源仓库: Github:java_new_featu ...

  7. 查看CentOS7的版本信息

    1,查看CentOS的版本号:                            cat /etc/centos-release  显示结果:                            ...

  8. 在Linux中查看分区表的4种方法

    作为Linux管理员,我们需要一次又一次地查看硬盘的分区表.这有助于我们通过为进一步分区腾出空间来重新组织旧驱动器,并在必要时为新驱动器创建空间.您可以在硬盘上创建不超过四个主分区,但可以在多个逻辑分 ...

  9. [WPF] 在RichTextBox中输出Microsoft.Extension.Logging库的日志消息

    背景 微软的日志库一般是输出到控制台的,但是在WPF中并不能直接使用控制台,需要AllocConsole. 但是这种做法个人觉得不太安全(一关闭控制台整个程序就退出了?).这时候就需要一个更加友好的方 ...

  10. 微服务架构的守护者:Redisson 分布式锁与看门狗机制实战指南

    1. 分布式锁简介 1.1 什么是分布式锁 在单机应用中,可以使用 Java 内置的锁机制(如 synchronized.ReentrantLock 等)来实现线程间的同步.但在分布式环境下,由于应用 ...