Spring AI 实战:快速接入通义千问、OpenAI,实现基础对话问答
专栏导读:本专栏为Spring AI 科普实战系列,从框架认知、环境搭建、基础对话、流式输出、会话记忆、函数调用到 RAG 知识库,全方位讲解 Spring 生态 AI 集成方案,零基础 Java 开发者也可轻松上手。
上一篇我们已经搭建好了干净、稳定的 Spring AI 基础工程,解决了版本适配、环境依赖等前置问题。有了基础环境,本篇我们正式进入核心实战阶段。
在企业实际开发中,接入公有云大模型是最普遍、最高频的场景。国内项目首选阿里通义千问,海外项目首选 OpenAI,而 Spring AI 最大的优势就是一套代码、无缝切换多模型。
本篇将手把手带你完成 通义千问、OpenAI 双模型接入,从零完成密钥申请、项目配置、代码开发、接口测试,实现第一个真正意义上的 AI 智能对话功能,同时梳理新手高频报错解决方案。
一、前置说明:为什么优先使用公有云大模型?
很多新手会疑惑:为什么不直接用本地模型,还要对接公有云?这里简单说明适用场景:
- 公有云大模型:开箱即用、无需本地显卡、模型能力强、更新迭代快,适合绝大多数 ToB、ToC 线上业务,成本极低。
- 本地离线模型:适合数据涉密、内网隔离、零网络场景,需要本机硬件资源,模型能力弱于商用模型。
因此我们优先实战公有云模型,贴合企业主流业务需求,后续篇章再讲解离线私有化部署方案。
二、核心准备:API 密钥申请
对接公有云大模型,核心凭证就是 API Key(密钥),下面分别讲解通义千问、OpenAI 密钥获取方式。
1. 阿里通义千问 DashScope 密钥申请
通义千问是国内最稳定、适配最好的商用大模型,个人开发者有免费额度,非常适合学习测试。
操作步骤:
- 访问官网:https://dashscope.aliyun.com/,使用阿里云账号登录
- 进入「控制台」,找到「API-KEY 管理」
- 创建新密钥,复制生成的 API_KEY(务必妥善保存,仅展示一次)
2. OpenAI 密钥申请
适合学习 GPT 系列模型对接,需要合规网络环境与账号额度。
操作步骤:
4. 登录 OpenAI 官网平台,进入个人中心
5. 找到 API Keys 模块,新建密钥
6. 复制密钥备用,注意密钥不要泄露、公开上传
三、引入对应模型 Starter 依赖
上一篇我们只引入了 Spring AI 核心基础包,想要对接具体大模型,需要引入对应厂商的专属 Starter。
在原有 pom.xml 依赖中,追加以下两个依赖(按需引入,不需要可删除对应依赖):
<!-- 阿里通义千问 DashScope 适配依赖 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-alibaba-starter</artifactId>
</dependency>
<!-- OpenAI 适配依赖 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-starter</artifactId>
</dependency>
因为我们之前引入了 spring-ai-bom 统一版本管理,此处无需写版本号,自动适配对应稳定版本。
四、配置文件编写(YAML)
统一使用 application.yml 配置,分别配置通义千问、OpenAI 的密钥与默认模型,二选一使用,也可同时配置。
清空原有配置,粘贴以下完整配置:
spring:
# 通义千问配置
ai:
dashscope:
api-key: 你的通义千问API_KEY
chat:
options:
model: qwen-turbo # 通用对话模型,性价比最高、响应最快
# OpenAI配置
openai:
api-key: 你的OpenAI_API_KEY
chat:
options:
model: gpt-3.5-turbo
重点说明:替换配置中的密钥为自己的真实密钥,切勿直接明文提交到代码仓库,生产环境建议使用配置中心、环境变量加密存储。
五、核心代码开发:实现基础对话问答
Spring AI 最大的优势在此体现:切换模型无需修改业务代码,仅修改配置即可。我们编写一套通用对话接口,同时适配通义千问和 OpenAI。
1. 编写 AI 对话 Controller
新建 AiChatController,实现通用问答接口:
package com.ai.demo.controller;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AiChatController {
// 注入Spring AI通用对话客户端
private final ChatClient chatClient;
public AiChatController(ChatClient.Builder chatClientBuilder) {
this.chatClient = chatClientBuilder.build();
}
/**
* 通用AI问答接口
* @param message 用户提问内容
* @return AI回答结果
*/
@GetMapping("/ai/chat")
public String chat(@RequestParam String message){
// 调用大模型对话能力
return chatClient.prompt(message)
.call()
.content();
}
}
2. 代码核心逻辑讲解
- ChatClient.Builder:Spring AI 自动装配构建器,自动读取配置文件中的模型、密钥信息
- prompt():接收用户输入的提示词/问题
- call():发起大模型远程调用
- content():获取大模型返回的文本结果
六、项目启动与接口测试
1. 启动项目
运行项目启动类,控制台无报错、端口正常启动即为成功。
2. 接口访问测试
浏览器/Postman 访问接口,传入自定义问题:
http://localhost:8080/ai/chat?message=用Java简单介绍一下Spring AI框架
此时即可获取大模型实时返回的智能回答,恭喜你,第一个 AI 对话功能开发完成!
七、模型快速切换技巧
验证 Spring AI 统一 API 的强大之处:
当前如果使用通义千问,想要切换为 OpenAI,无需改动一行代码,仅需两步:
- 注释掉 dashscope 配置,开启 openai 配置并填入正确密钥
- 重启项目,接口完全通用,正常调用 GPT 模型
真正实现了 一套代码,适配全模型 的设计理念。
八、新手高频报错与解决方案
1. 密钥错误/为空报错
报错现象:接口 401 鉴权失败、认证失败
解决方案:检查密钥是否填写正确、是否有多余空格、密钥是否过期、是否开启对应模型权限。
2. 模型名称填写错误
报错现象:模型不存在、参数非法
解决方案:严格使用厂商官方公开模型名,通义千问推荐 qwen-turbo,OpenAI 推荐 gpt-3.5-turbo。
3. 额度不足报错
报错现象:请求被拒绝、额度耗尽
解决方案:登录对应厂商控制台,查看账户余额与免费额度,充值或更换密钥。
4. 自动配置不生效
解决方案:确认依赖引入完整、版本统一,重启 IDEA + 刷新 Maven 依赖。
九、本篇总结
本篇我们完成了Spring AI 公有云大模型完整接入实战,掌握了密钥申请、依赖引入、配置编写、接口开发全流程,成功实现了基础 AI 智能问答功能。
同时深刻体会到 Spring AI 的核心优势:统一 API、零代码切换模型、开箱即用,彻底告别原生 HTTP 对接的繁琐适配工作。
目前我们实现的是一次性单轮对话,每次提问都是独立上下文,无法连续聊天。后续我们会逐步优化,实现流式输出、多轮记忆、提示词工程等高阶能力。
下一篇:离线也能用!Spring AI 整合 Ollama 本地大模型,私有化部署方案
我们将脱离公网、脱离付费额度,搭建本地离线大模型环境,实现内网私有化 AI 部署!
更多推荐




所有评论(0)