《Spring AI 实战系列 入门篇》第 6 篇

106 阅读5分钟

@[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 结果映射为 POJOBeanOutputConverter
第 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

  1. 访问 open.bigmodel.cn/
  2. 注册并登录
  3. 在控制台创建 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推荐,中文能力强 ✅
llama3Meta 开源模型
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

  1. 访问 dashscope.console.aliyun.com/
  2. 登录阿里云账号
  3. 创建 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 赛道深耕逐梦的开发者,都能得偿所愿,与诸君共勉!


📚 参考资料

  1. Spring AI 官方文档

  2. 智谱 AI

  3. 阿里云通义千问

  4. Ollama


📌 引用说明:本文核心概念与技术描述参考自 Spring AI 官方文档(docs.spring.io/spring-ai/r… AI、阿里云通义千问、Ollama 各官方平台公开资料。


🎯 收藏+关注,持续更新

如果觉得有帮助,请:

  1. 收藏本文 —— 方便后续查阅,随时回顾核心概念
  2. 📱 关注公众号「AI日撰」 —— 点击菜单「获取源码」获取完整代码(Gitee 仓库)
  3. 🔗 分享给同事 —— 一起学习 Spring AI,少走弯路

系列更新不迷路,下篇推荐:进阶篇 · 智能客服系统