专栏导读:本专栏为Spring AI 科普实战系列,从框架认知、环境搭建、基础对话、流式输出、会话记忆、函数调用到 RAG 知识库,全方位讲解 Spring 生态 AI 集成方案,零基础 Java 开发者也可轻松上手。
上一篇我们已经搭建好了干净、稳定的 Spring AI 基础工程,解决了版本适配、环境依赖等前置问题。有了基础环境,本篇我们正式进入核心实战阶段。
在企业实际开发中,接入公有云大模型是最普遍、最高频的场景。国内项目首选阿里通义千问,海外项目首选 OpenAI,而 Spring AI 最大的优势就是一套代码、无缝切换多模型。
本篇将手把手带你完成 通义千问、OpenAI 双模型接入,从零完成密钥申请、项目配置、代码开发、接口测试,实现第一个真正意义上的 AI 智能对话功能,同时梳理新手高频报错解决方案。

一、前置说明:为什么优先使用公有云大模型?

很多新手会疑惑:为什么不直接用本地模型,还要对接公有云?这里简单说明适用场景:

  • 公有云大模型:开箱即用、无需本地显卡、模型能力强、更新迭代快,适合绝大多数 ToB、ToC 线上业务,成本极低。
  • 本地离线模型:适合数据涉密、内网隔离、零网络场景,需要本机硬件资源,模型能力弱于商用模型。
    因此我们优先实战公有云模型,贴合企业主流业务需求,后续篇章再讲解离线私有化部署方案。

二、核心准备:API 密钥申请

对接公有云大模型,核心凭证就是 API Key(密钥),下面分别讲解通义千问、OpenAI 密钥获取方式。

1. 阿里通义千问 DashScope 密钥申请
通义千问是国内最稳定、适配最好的商用大模型,个人开发者有免费额度,非常适合学习测试。
操作步骤:

  1. 访问官网:https://dashscope.aliyun.com/,使用阿里云账号登录
  2. 进入「控制台」,找到「API-KEY 管理」
  3. 创建新密钥,复制生成的 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,无需改动一行代码,仅需两步:

  1. 注释掉 dashscope 配置,开启 openai 配置并填入正确密钥
  2. 重启项目,接口完全通用,正常调用 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 部署!

Logo

一站式 AI 云服务平台

更多推荐