@[TOC](📖 目录)
国产模型集成指南:智谱GLM、Ollama本地部署、通义千问(兼容模式)
系列说明:本文为《Spring AI 实战系列 入门篇》第 6 篇(终篇)
前置知识:完成第 1-5 篇
预计阅读时间:15 分钟
⚠️ 重要说明:Spring AI 1.1.3 版本对国产模型的支持程度不一,本文会标注每种方式的实际可用性。
📚《Spring AI 实战系列》完整目录
🔗 学习不迷路!系列持续更新中,点击链接直达各篇 👇
📖 入门篇(已完结 · 建议按顺序学习)
| 篇目 | 标题 | 核心内容 |
|---|---|---|
| 第 1 篇 ✅ | 核心概念与快速上手 | Model / Prompt / Embedding + 第一个项目 |
| 第 2 篇 ✅ | Tool Calling:让 AI 调用外部函数 | @Tool 声明式 + 编程式工具定义 |
| 第 3 篇 ✅ | VectorStore + RAG:构建私有知识库 | 向量数据库集成 + 文档检索 |
| 第 4 篇 ✅ | 结构化输出:AI 结果映射为 POJO | BeanOutputConverter |
| 第 5 篇 ✅ | Advisors:自定义 AI 中间件 | 拦截器链 + 对话记忆 |
| 第 6 篇 ✅ | 国产模型集成指南 | 通义千问 / 文心一言 / 智谱 GLM |
🚀 进阶篇(更新中)
| 篇目 | 标题 | 核心内容 |
|---|---|---|
| 进 1 ✅ | 智能客服系统 | 多轮对话 + 工具调用 + 人工兜底 |
| 进 2 ✅ | 企业知识库 RAG 管线 | 多格式 ETL + 混合检索(RRF) |
| 进 3 🔜 | AI Agent 自主规划 | ReAct 模式 + 多工具编排 |
🗺️ 学习路径建议
Week 1-3 【入门篇】第1篇 → 第2篇 → 第3篇 → 第4篇 → 第5篇 → 第6篇
└→ 掌握 Spring AI 核心能力
Week 4-6 【进阶篇】智能客服 → 企业RAG → 代码助手 → AI Agent
└→ 实战企业级 AI 应用
一、为什么要用国产模型?
1.1 优势对比
| 维度 | 国外模型 (GPT-4) | 国产模型 |
|---|---|---|
| 🌐 网络 | 需要科学上网 | 国内直连 |
| 💰 价格 | 按 token 计费,较贵 | 相对便宜/有免费额度 |
| 📝 中文 | 中文能力一般 | 中文优化更强 |
| 🔒 合规 | 数据出境问题 | 数据境内处理 |
| 🚀 速度 | 受网络影响 | 响应更快 |
1.2 Spring AI 1.1.3 国产模型支持情况
┌─────────────────────────────────────────────────────────────┐
│ Spring AI 1.1.3 国产模型支持情况 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ✅ 官方 Starter 支持 │
│ ├── 智谱 GLM (spring-ai-zhipuai) │
│ └── Ollama (spring-ai-ollama) │
│ │
│ ⚠️ 兼容模式(需额外配置) │
│ └── 通义千问 (DashScope OpenAI 兼容) │
│ │
│ ❌ 暂无官方支持 │
│ └── 百度文心一言 (可使用 OpenAI 兼容模式) │
│ │
└─────────────────────────────────────────────────────────────┘
二、智谱 GLM(官方支持)
2.1 简介
智谱 GLM(ChatGLM)是智谱AI开发的开源大模型,国产开源标杆。
| 特点 | 说明 |
|---|---|
| 🌟 官方支持 | Spring AI 1.1.3 内置支持 |
| 📝 中文优 | 针对中文优化 |
| 💰 价格 | 有免费额度 |
2.2 获取 API Key
- 访问 open.bigmodel.cn/
- 注册并登录
- 在控制台创建 API Key
2.3 Maven 依赖
<!-- 智谱 GLM - 官方 Starter -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-zhipuai</artifactId>
</dependency>
2.4 配置
# 智谱 API Key(建议使用环境变量)
spring.ai.zhipuai.api-key=${ZHIPU_API_KEY}
# Chat 模型
spring.ai.zhipuai.chat.options.model=glm-4-flash
2.5 可用模型
| 模型 | 说明 |
|---|---|
glm-4-flash | 快速版,性价比高 ✅ 推荐 |
glm-4 | 旗舰版,能力最强 |
glm-4v | 多模态,支持图片 |
2.6 代码示例
@RestController
@RequestMapping("/glm")
public class GlmController {
private final ChatClient chatClient;
public GlmController(ChatClient.Builder builder) {
this.chatClient = builder.build();
}
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatClient.prompt()
.system("你是一个helpful的AI助手")
.user(message)
.call()
.content();
}
}
三、Ollama 本地部署(官方支持)
3.1 简介
Ollama 让你在本地运行大模型,数据完全私有,无需联网。
| 特点 | 说明 |
|---|---|
| ✅ 官方支持 | Spring AI 1.1.3 内置支持 |
| 🔒 隐私 | 数据不离开本地 |
| 🌐 离线 | 无需网络 |
| 💻 资源 | 需要本地 GPU/CPU |
3.2 安装与使用
# 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
# 下载模型(推荐 Qwen2.5)
ollama pull qwen2.5:7b
# 启动服务(默认端口 11434)
ollama serve
3.3 Maven 依赖
<!-- Ollama - 官方 Starter -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama</artifactId>
</dependency>
3.4 配置
# Ollama 服务地址
spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.options.model=qwen2.5:7b
# 可选:温度参数
spring.ai.ollama.chat.options.temperature=0.7
3.5 可用模型
| 模型 | 说明 |
|---|---|
qwen2.5:7b | 推荐,中文能力强 ✅ |
llama3 | Meta 开源模型 |
mistral | 高效开源模型 |
3.6 代码示例
@RestController
@RequestMapping("/ollama")
public class OllamaController {
private final ChatClient chatClient;
public OllamaController(ChatClient.Builder builder) {
this.chatClient = builder.build();
}
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatClient.prompt()
.user(message)
.call()
.content();
}
}
四、通义千问(兼容模式)
4.1 简介
通义千问是阿里云自研的大语言模型,中文能力强。
| 特点 | 说明 |
|---|---|
| ⚠️ 兼容模式 | 通过 OpenAI 兼容接口接入 |
| 📝 中文强 | 中文理解与生成优秀 |
| 💰 价格 | 有免费额度 |
4.2 获取 API Key
- 访问 dashscope.console.aliyun.com/
- 登录阿里云账号
- 创建 API Key
4.3 Maven 依赖
使用 OpenAI 兼容模式,通过 OpenAI Starter 接入:
<!-- 使用 OpenAI Starter 兼容通义千问 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
4.4 配置
通义千问提供 OpenAI 兼容接口,配置如下:
# 使用 OpenAI 配置连接通义千问
spring.ai.openai.api-key=${DASHSCOPE_API_KEY}
spring.ai.openai.base-url=https://dashscope.aliyuncs.com/compatible-mode/v1
# 模型名称(使用通义千问模型)
spring.ai.openai.chat.options.model=qwen-turbo
# 可选配置
spring.ai.openai.chat.options.temperature=0.7
⚠️ 注意:通义千问的 OpenAI 兼容模式需要开启"增强版"API,在阿里云控制台启用。
4.5 可用模型
| 模型 | 说明 | 特点 |
|---|---|---|
qwen-turbo | 快速版 | 响应快,便宜 |
qwen-plus | 增强版 | 能力更强 |
qwen-max | 旗舰版 | 最强能力 |
qwen-vl-plus | 多模态 | 支持图片 |
4.6 代码示例
@RestController
@RequestMapping("/qwen")
public class QwenController {
private final ChatClient chatClient;
public QwenController(ChatClient.Builder builder) {
this.chatClient = builder.build();
}
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatClient.prompt()
.user(message)
.call()
.content();
}
}
五、多模型切换架构
5.1 策略模式实现
public interface ChatModelProvider {
String getName();
String getDescription();
ChatClient getChatClient();
}
@Service
public class MultiModelService {
private final Map<String, ChatModelProvider> providers = new HashMap<>();
public MultiModelService(List<ChatModelProvider> providerList) {
for (ChatModelProvider provider : providerList) {
providers.put(provider.getName(), provider);
}
}
public String chat(String providerName, String message) {
ChatModelProvider provider = providers.get(providerName);
if (provider == null) {
throw new IllegalArgumentException("未知模型: " + providerName);
}
return provider.getChatClient().prompt()
.user(message)
.call()
.content();
}
}
5.2 使用示例
@RestController
@RequestMapping("/ai")
public class MultiModelController {
private final MultiModelService multiModelService;
public MultiModelController(MultiModelService service) {
this.multiModelService = service;
}
@GetMapping("/chat")
public String chat(
@RequestParam String message,
@RequestParam(defaultValue = "glm") String model
) {
return multiModelService.chat(model, message);
}
}
六、系列总结
Spring AI 1.1.3 国产模型支持情况汇总
| 模型 | 支持方式 | 推荐程度 |
|---|---|---|
| 智谱 GLM | 官方 Starter | ⭐⭐⭐⭐⭐ |
| Ollama | 官方 Starter | ⭐⭐⭐⭐⭐ |
| 通义千问 | OpenAI 兼容 | ⭐⭐⭐⭐ |
| 百度文心 | 需自行实现 | ⭐⭐ |
完整系列回顾
🔥 恭喜! 你已完成《Spring AI 实战系列 入门篇》全部 6 篇!
| 篇目 | 标题 | 核心内容 |
|---|---|---|
| 第 1 篇 ✅ | 核心概念与快速上手 | Model / Prompt / Embedding |
| 第 2 篇 ✅ | Tool Calling | @Tool 注解、工具调用 |
| 第 3 篇 ✅ | VectorStore + RAG | 向量数据库、私有知识库 |
| 第 4 篇 ✅ | 结构化输出 | BeanOutputConverter |
| 第 5 篇 ✅ | Advisors | 中间件、自定义拦截器 |
| 第 6 篇 ✅ | 国产模型集成 | 智谱/Ollama/通义千问兼容 |
进阶篇已更新:
| 篇目 | 标题 | 核心内容 |
|---|---|---|
| 进 1 ✅ | 智能客服系统 | 多轮对话 + 工具调用 + 人工兜底 |
| 进 2 ✅ | 企业知识库 RAG 管线 | 多格式 ETL + 混合检索(RRF) |
| 进 3 🔜 | AI Agent 自主规划 | ReAct 模式 + 多工具编排 |
技术栈总结
Spring AI
├── Model Providers (官方支持)
│ ├── OpenAI (GPT-4/3.5)
│ ├── Anthropic (Claude)
│ ├── 智谱 GLM ⭐ (spring-ai-zhipuai)
│ └── Ollama ⭐ (spring-ai-ollama)
│
├── 兼容模式
│ └── 通义千问 (DashScope OpenAI 兼容)
│
└── Core APIs
├── ChatClient
├── EmbeddingModel
├── VectorStore
└── Tool Calling
下一步学习计划
理论要结合实践,下一步将使用 Spring AI 去实现 AI 智能客服、企业知识库、AI 代码助手的核心功能(后面应该会考虑使用 langchain4j 或者其他集成框架去优化完善这些项目)。
结语
AI 的内核是数学家和算法工程师的战场,但 AI 的应用是每个开发者的机会。
你不需要懂算法、懂微调,但你需要知道怎么用。会用,就是竞争力!
愿每一位仍在 Java 赛道深耕逐梦的开发者,都能得偿所愿,与诸君共勉!
📚 参考资料
-
Spring AI 官方文档
-
智谱 AI
-
阿里云通义千问
-
Ollama
📌 引用说明:本文核心概念与技术描述参考自 Spring AI 官方文档(docs.spring.io/spring-ai/r… AI、阿里云通义千问、Ollama 各官方平台公开资料。
🎯 收藏+关注,持续更新
如果觉得有帮助,请:
- ⭐ 收藏本文 —— 方便后续查阅,随时回顾核心概念
- 📱 关注公众号「AI日撰」 —— 点击菜单「获取源码」获取完整代码(Gitee 仓库)
- 🔗 分享给同事 —— 一起学习 Spring AI,少走弯路
系列更新不迷路,下篇推荐:进阶篇 · 智能客服系统