ChatGPT太贵?教你用Spring AI在本地白嫖聊天模型!

你有没有想过,本地也能跑一个类 ChatGPT 的模型,不用连 OpenAI,也不用担心 Key 被封?今天,我来带大家体验一下 Spring AI 里非常酷的一个能力:用 Docker Model Runner 聊天模型聊起来!

我最近在折腾 Spring AI 的时候,发现它除了支持 OpenAI、Azure、Anthropic 这些平台外,还有一个宝藏功能:可以在本地通过 Docker 启动语言模型,直接和它对话! 听起来是不是很像"开箱即用的 AI 聊天机器人"?这不,我立马就搞了一下,今天就以故事的方式,把全过程分享给大家!

准备好工具,才能开干!

话说,有一天我灵感来了,想着用 Spring Boot 做个"类 ChatGPT 聊天助手",但我不想连外网 API。于是我找到了 Spring AI 的 Docker Model Runner 支持,发现居然可以本地跑模型!

不过嘛,凡事都有准备环节,先把前提条件交代清楚:

  • JDK 17+
  • Spring Boot 3.2+
  • Spring AI 0.8.1+
  • Docker 已安装且运行中
  • 网络可以拉模型(建议科学上网)

还有个重要前提是,Spring AI 已经支持了多个开源模型,像是:

  • Ollama 系列(比如 Mistral、LLaMA2)
  • LM Studio、本地端口模型
  • 甚至自己构建一个聊天服务也可以

我们今天就基于 Spring AI 的 Docker Model Runner 来跑一个 LLM 聊天服务。

选项一:直接连接 Docker 模型服务

先说最简单的用法:直接连接到一个已经在本地跑着的 LLM 容器,比如用 Ollama 启动 Mistral 模型:

ollama run mistral

启动成功后,本地 localhost:11434 就是一个聊天 API 服务,Spring AI 只需要加点配置,就能直接连上了。

在 application.yml 里加上:

是不是超级简单?Spring AI 会自动识别这个 base-url,把它当成一个兼容 OpenAI 的聊天模型来处理。你可以用 ChatClient 来交互,和连 OpenAI 一样爽!

选项二:使用 Testcontainers 自动拉起容器

如果你觉得每次启动都要手动开个模型太麻烦了,那我告诉你,Spring AI 支持自动用 Testcontainers 启动模型容器!

比如要拉起 mistral 模型,可以写个测试类:

然后,在 Spring 的配置里读取容器端口动态注入 base-url,实现一键运行、一键销毁。适合测试环境或快速原型开发。

自动配置:Spring Boot 的魔法依然在

一旦你依赖了 Spring AI 的 starter,比如:

再加上前面那个 base-url,Spring AI 会自动给你注入一个 ChatClient,你就可以像调用 Bean 一样用它了。

再比如:

是不是很有"秒回"的感觉?这就是 Spring AI 的自动配置魅力。

聊天属性详解

为了让模型"听话懂人话",我们可以配置一堆属性来精细控制模型行为。

1. 重试属性

连接不稳定咋办?加重试!

模型卡了一下没关系,Spring 帮你重试几次,保证交互稳定。

2. 连接属性

有时候模型加载慢,可以加连接超时配置:

避免一直等模型回消息等到天荒地老。

3. 配置属性(最重要的部分)

想让模型多说点话?少点废话?来设置参数:

这些参数决定了模型的 创造力、输出长度、随机性、重复性惩罚 等等,调得好,效果差异巨大!

运行时选项:想聊什么随你定

除了配置文件里设置,你也可以在代码里动态传入 options!

这一招在需要根据用户输入动态调整回复策略时超有用,比如:长回答、技术性强的回答、风格轻松的回答。

函数调用 Function Calling(真的支持!)

你没看错,本地模型现在也能玩函数调用了!

假设我们定义了一个函数,让 AI 调用它来获取天气数据:

然后在模型对话中:

AI 会自动"识别意图 + 调用函数 + 拼接返回"。是不是越来越像个真 AI 助手了!

控制器示例:做一个聊天 API

最后,我们来构建一个 Spring Boot 控制器,把这个聊天模型封装成 REST 接口,前端、微信小程序都能用!

是不是超级丝滑?部署后,前端 POST 一段话,就能秒回一句机智回复。完美!

写在最后:模型跑在本地,心里更安心

现在回头看,其实整个流程并不复杂:

  • 你可以选择连接已有模型,也可以用 Testcontainers 自动拉起容器;
  • 可以用配置文件控制模型行为,也可以在代码里灵活注入参数;
  • 更可以拓展函数调用,甚至包装成接口,做出自己的 AI 服务!

Docker Model Runner + Spring AI 真的是构建 AI 原型的神器。如果你想脱离外部依赖,在公司内网、自建服务、本地演示里快速搞定聊天模型,强烈建议试试!

好了,今天的分享就到这啦!

END

我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号"软件求生",获取更多技术干货!

相关推荐
程序猿不脱发223 分钟前
万字详解架构设计:业务架构、应用架构、数据架构、技术架构、单体、分布式、微服务都是什么?
后端·架构
IT_陈寒31 分钟前
React性能优化:5个90%开发者不知道的useEffect内存泄漏陷阱与实战解法
前端·人工智能·后端
Victor3561 小时前
Redis(32)Redis集群(Cluster)是什么?
后端
风象南1 小时前
docker cp 引发的 node_exporter CPU 暴涨踩坑记
后端
Victor3561 小时前
Redis(33)Redis集群的工作原理是什么?
后端
程序员 Andy2 小时前
项目中为什么使用SpringBoot?
java·spring boot·后端
bobz9659 小时前
5070 Ti CodeLlama 7B > Mistral 7B > Qwen3 8B
后端
麦兜*9 小时前
Spring Boot 集成 Docker 构建与发版完整指南
java·spring boot·后端·spring·docker·系统架构·springcloud
程序视点9 小时前
2025最佳图片无损放大工具推荐:realesrgan-gui评测与下载指南
前端·后端