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

0 阅读4分钟

Spring AI 实战系列 | 第 6 篇

国产模型集成指南:通义千问、智谱GLM、文心一言、Ollama

系列说明:本文为《Spring AI 实战系列 入门篇》第 6 篇(终篇)

前置知识:完成第 1-5 篇

预计阅读时间:15 分钟


📖 目录

  1. 为什么要用国产模型?
  2. 通义千问 (Qwen)
  3. 智谱 GLM
  4. 百度文心一言
  5. Ollama 本地部署
  6. 多模型切换架构
  7. 系列总结

一、为什么要用国产模型?

1.1 优势对比

维度国外模型 (GPT-4)国产模型
🌐 网络需要科学上网国内直连
💰 价格按 token 计费,较贵相对便宜/有免费额度
📝 中文中文能力一般中文优化更强
🔒 合规数据出境问题数据境内处理
🚀 速度受网络影响响应更快

1.2 国产模型选型

┌─────────────────────────────────────────────────────────────┐
│                    国产模型选型指南                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  追求性价比 ──→ 通义千问 (Qwen) / 智谱 GLM                   │
│  企业级应用 ──→ 文心一言 (ERNIE)                            │
│  完全私有 ──→ Ollama 本地部署 Llama/Qwen                    │
│  长上下文 ──→ Kimi (Moonshot)                               │
│  多模态强 ──→ 通义千问 VL / 文心 VL                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

二、通义千问 (Qwen)

2.1 简介

通义千问是阿里云自研的大语言模型,中文能力强,开源可商用。

特点说明
🌟 开源Qwen 系列开源可商用
📝 中文强中文理解与生成优秀
🔢 多版本Qwen2, Qwen2.5, Qwen-VL (多模态)
💰 价格有免费额度,按量计费

2.2 获取 API Key

  1. 访问 dashscope.console.aliyun.com/
  2. 登录阿里云账号
  3. 创建 API Key

2.3 Maven 依赖

<!-- 通义千问 -->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-dashscope</artifactId>
</dependency>

2.4 配置

# 通义千问 API Key
spring.ai.dashscope.api-key=${DASHSCOPE_API_KEY}

# Chat 模型
spring.ai.dashscope.chat.options.model=qwen-turbo

# Embedding 模型
spring.ai.dashscope.embedding.options.model=text-embedding-v2

2.5 可用模型

模型说明特点
qwen-turbo快速版响应快,便宜
qwen-plus增强版能力更强
qwen-max旗舰版最强能力
qwen-vl-plus多模态支持图片

2.6 代码示例

@Configuration
public class QwenConfig {
    
    @Bean
    public ChatClient qwenChatClient(DashScopeChatModel chatModel) {
        return ChatClient.builder(chatModel)
            .defaultOptions(
                DashScopeChatOptions.builder()
                    .model("qwen-plus")
                    .temperature(0.7)
                    .build())
            .build();
    }
}

@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();
    }
}

三、智谱 GLM

3.1 简介

智谱 GLM(ChatGLM)是智谱AI开发的开源大模型,国产开源标杆。

特点说明
🌟 开源GLM-4 开源可商用
📝 中文优针对中文优化
🔧 微调支持 LoRA 微调
💰 价格有免费额度

3.2 获取 API Key

  1. 访问 open.bigmodel.cn/
  2. 注册并登录
  3. 在控制台创建 API Key

3.3 Maven 依赖

<!-- 智谱 GLM -->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-zhipu</artifactId>
</dependency>

3.4 配置

# 智谱 API Key
spring.ai.zhipu.api-key=${ZHIPU_API_KEY}

# Chat 模型
spring.ai.zhipu.chat.options.model=glm-4

3.5 可用模型

模型说明
glm-4旗舰版,能力最强
glm-4-flash快速版,性价比高
glm-4v多模态,支持图片

3.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();
    }
}

四、百度文心一言

4.1 简介

文心一言(ERNIE Bot)是百度自研的大模型,企业级应用友好。

特点说明
🏢 企业级企业用户友好
📝 中文强中文理解优秀
🔗 生态与百度云生态集成

4.2 获取 API Key

  1. 访问 console.bce.baidu.com/wenxin/
  2. 创建应用获取 AppID、API Key、Secret Key

4.3 Maven 依赖

<!-- 百度文心一言 -->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-wenxin</artifactId>
</dependency>

4.4 配置

# 百度文心 API 凭证
spring.ai.wenxin.api-key=${WENXIN_API_KEY}
spring.ai.wenxin.secret-key=${WENXIN_SECRET_KEY}

# 模型
spring.ai.wenxin.chat.options.model=ernie-4.0-8k-latest

4.5 可用模型

模型说明
ernie-4.0-8k旗舰版,8K上下文
ernie-3.5-8k主力版

五、Ollama 本地部署

5.1 简介

Ollama 让你在本地运行大模型,数据完全私有,无需联网。

特点说明
🔒 隐私数据不离开本地
🌐 离线无需网络
💻 资源需要本地 GPU/CPU

5.2 安装与使用

# 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh

# 下载模型
ollama pull llama3
ollama pull qwen2

# 启动服务
ollama serve

5.3 Maven 依赖

<!-- Ollama -->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>

5.4 配置

# Ollama 服务地址
spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.options.model=llama3

六、多模型切换架构

6.1 策略模式实现

public interface ChatModelProvider {
    String getName();
    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();
    }
}

6.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 = "qwen") String model
    ) {
        return multiModelService.chat(model, message);
    }
}

七、系列总结

完整系列回顾

篇目标题核心内容
第 1 篇核心概念与快速上手Model、Prompt、Embedding
第 2 篇Tool Calling@Tool 注解、工具调用
第 3 篇VectorStore + RAG向量数据库、私有知识库
第 4 篇结构化输出BeanOutputConverter
第 5 篇Advisors中间件、自定义拦截器
第 6 篇国产模型集成通义/智谱/文心/Ollama

技术栈总结

Spring AI
├── Model Providers
│   ├── OpenAI (GPT-4/3.5)
│   ├── Anthropic (Claude)
│   ├── 通义千问 (Qwen) ⭐
│   ├── 智谱 GLM ⭐
│   ├── 文心一言 ⭐
│   └── Ollama (本地)
│
├── Core APIs
│   ├── ChatClient
│   ├── EmbeddingModel
│   ├── VectorStore
│   └── Tool Calling
│
└── Advanced
    ├── RAG
    ├── Structured Output
    └── Advisors

下一步个人学习计划

理论要结合实践,下一步将使用spring AI去实现AI智能客服、企业知识库、AI代码助手的核心功能(后面应该会考虑使用langchain4j或者其他集成框架去优化完善这些项目)。

总结

AI 的内核是数学家和算法工程师的战场,但 AI 的应用是每个开发者的机会。

你不需要懂 算法、懂微调,但你需要知道怎么用。会用,就是竞争力!

愿每一位仍在Java赛道深耕逐梦的开发者,都能得偿所愿,与诸君共勉!


📚 参考资料

  1. Spring AI 官方文档

  2. 阿里云通义千问

  3. 智谱 AI

  4. 百度文心一言

  5. Ollama


📌 引用说明:本文核心概念与技术描述参考自 Spring AI 官方文档(docs.spring.io/spring-ai/r… AI、百度文心一言各官方平台公开资料,Ollama 内容来自 Ollama 官方文档。


关注公众号「AI日撰」,点击菜单「获取源码」获取完整代码(Gitee 仓库)。


🎉 恭喜完成《Spring AI 实战系列 入门篇》全部 6 篇!

文章更新时间:2026-03-24 系列:《Spring AI 实战系列 入门篇》终篇(共 6 篇)