找回密码
 立即注册
首页 业界区 业界 qwen3 惊喜发布,用 ollama + solon ai (java) 尝个鲜 ...

qwen3 惊喜发布,用 ollama + solon ai (java) 尝个鲜

砂歹汤 2025-6-2 22:44:33
qwen3 惊喜发布了,帅!我们用 ollama 和 solon ai (java) 也来尝个鲜。
1、先用 ollama 拉取模型

听说,在个人电脑上用 4b 的参数,效果就很好了。
  1. ollama run qwen3:4b
复制代码
2、试试:Hello qwen3

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

  • 在应用属性里添加配置(app.yml)
  1. solon.ai.chat:
  2.   qwen3:
  3.     apiUrl: "http://127.0.0.1:11434/api/chat" # 使用完整地址(而不是 api_base)
  4.     provider: "ollama"  # ollama 是有自己的专有接口格式,通过配置 provider 可识别方言
  5.     model: "qwen3:4b"
复制代码

  • 用配置器类构建通用聊天模型
  1. @Configuration
  2. public class DemoConfig {
  3.     @Bean
  4.     public ChatModel chatModel(@Inject("${solon.ai.chat.qwen3}") ChatConfig config) {
  5.         return ChatModel.of(config).build();
  6.     }
  7. }
复制代码

  • 添加测试用的控制器
  1. @Controller
  2. public class DemoController {
  3.     @Inject
  4.     ChatModel chatModel;
  5.     @Mapping("hello")
  6.     public String hello(String message) throws IOException {
  7.         return chatModel.prompt(message).call().getMessage().getContent();
  8.     }
  9. }
复制代码

  • 测试一下
启动项目。打开浏览器地址:http://localhost:8080/hello?message=hello。效果良好:
1.png
3、尝试把输出改成 sse,方便打字效果的聊天窗口开发
  1. @Controller
  2. public class DemoController {
  3.     @Inject
  4.     ChatModel chatModel;
  5.     @Produces(MimeType.TEXT_EVENT_STREAM_UTF8_VALUE) //这个很重要,申明用 sse 格式渲染
  6.     @Mapping("hello")
  7.     public Flux<String> hello(String message) throws IOException {
  8.         return Flux.from(chatModel.prompt(message).stream())
  9.                 .filter(resp -> resp.hasChoices())
  10.                 .map(resp -> resp.getMessage().getContent());
  11.     }
  12. }
复制代码

  • 测试一下
启动项目。再次打开浏览器地址:http://localhost:8080/hello?message=hello。效果良好:
2.png
4、现在开始 RAG,以 “联网搜索” 作为知识库

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

  • 应用属性加一块配置
  1. solon.ai.chat:
  2.   qwen3:
  3.     apiUrl: "http://127.0.0.1:11434/api/chat" # 使用完整地址(而不是 api_base)
  4.     provider: "ollama"  # ollama 是有自己的专有接口格式,通过配置 provider 可识别方言
  5.     model: "qwen3:4b"    solon.ai.repo:  websearch:    apiUrl: "https://api.bochaai.com/v1/web-search" # 使用完整地址(而不是 api_base)    apiKey: "sk-demo..."
复制代码

  • 配置器类也调整下
  1. @Configuration
  2. public class DemoConfig {
  3.     @Bean
  4.     public ChatModel chatModel(@Inject("${solon.ai.chat.qwen3}") ChatConfig config) {
  5.         return ChatModel.of(config).build();
  6.     }
  7.    
  8.     @Bean
  9.     public Repository repository(@Inject("${solon.ai.repo.websearch}") AiConfig config) {
  10.         return new WebSearchRepository(null, config);
  11.     }
  12. }
复制代码

  • 再改改控制器(输出重新写回简单的方式,不然不好截图)
  1. @Controller
  2. public class DemoController {
  3.     @Inject
  4.     ChatModel chatModel;
  5.     @Inject
  6.     Repository repository;
  7.     @Mapping("hello")
  8.     public String hello(String message) throws IOException {
  9.         //检索
  10.         List<Document> context = repository.search(new QueryCondition(message).limit(4));
  11.         //消息增强
  12.         ChatMessage chatMessage = UserMessage.augment(message, context);
  13.         //提交大模型并简单返回(不然,截图不好截)
  14.         return chatModel.prompt(chatMessage).call().getMessage().getContent();
  15.     }
  16. }
复制代码

  • 测试一下
启动项目。打开浏览器地址: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。效果良好:
3.png
5、再试个 Tool Call(即 Function Call)

修改下刚才的配置器,加个模型的默认工具。
  1. @Configuration
  2. public class DemoConfig {
  3.     @Bean
  4.     public ChatModel chatModel(@Inject("${solon.ai.chat.qwen3}") ChatConfig config) {
  5.         return ChatModel.of(config)
  6.                 .defaultToolsAdd(new Tools())
  7.                 .build();
  8.     }
  9.     public static class Tools {
  10.         @ToolMapping(description = "获取指定城市的天气情况")
  11.         public String get_weather(@ToolParam(description = "根据用户提到的地点推测城市") String location) {
  12.             return "晴,24度";
  13.         }
  14.     }
  15. }
复制代码

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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册