> 技术文档 > 【SpringAI篇01】:5分钟教会你使用SpringAI (1.0.0稳定版)_spring ai使用

【SpringAI篇01】:5分钟教会你使用SpringAI (1.0.0稳定版)_spring ai使用

后端开发之 SpringAI 使用篇01:从创建 SpringAI 项目开始,到快速入门实现调用大模型 API 实现对话功能(较低代码量+精简教程)。

目录

1. 创建项目

2. API Key的准备

3. 必要的配置

4. 开始写代码

4.1. 配置Bean

4.2 使用 ChatClient 向大模型发送请求

4.3 效果展示

5. 【SpringAI篇02】:对话功能与对话记忆功能


1. 创建项目

如下图所示即可,在自己的目录创建 Maven 项目,JDK 版本最低要使用 17

 依赖选择:

项目自动创建好后,在 pom.xml 中会有这些依赖:

    org.springframework.ai spring-ai-bom ${spring-ai.version} pom import  

 org.springframework.boot spring-boot-starter-web………… org.springframework.ai spring-ai-starter-model-openai

2. API Key的准备

在继续之前,我们需要先获取一个兼容 OpenAI 的平台的 ApiKey,这里推荐大家使用阿里的百炼平台,因为不仅模型众多,还没有繁琐的申请与开通流程,注册账号、认证之后就可以直接使用:大模型服务平台百炼控制台https://bailian.console.aliyun.com/#/home

 先生成个人的 ApiKey,然后打开模型广场,随便选择一个模型,查看详情:

可以看到,每个模型都是自动有免费额度的,在 Code 栏随便复制一个模型名称,如:qwen-max

 在文档界面,可以看到百炼平台的模型是支持 OpenAI 接口规范的,所以我们之前导入的 OpenAI 的依赖是通用的。

复制文档中的 base_url 和 之前的模型名,下面进行 application.yaml(或application.properties)的配置


3. 必要的配置

 application.yaml 的配置,在 spring 的下一级,键入一个 ai 就可以弹出许多相关的配置:

做一些基本的配置 ,最终代码如下:

 当然,若是不想把 ApiKey 直接配置在 yaml 配置文件中,也可以这样,配置在环境变量中,只需要两步即可:

 

然后再弹出的“环境变量”输入框中,格式为之前在yaml中,使用$符引用的变量名=ApiKey,将 ApiKey 输入,应用即可


4. 开始写代码

4.1. 配置Bean

我们在项目下建一个config包,创建这样一个配置类,初始化使用指定模型的 ChatClient

package com.demo.aiqqq.config;import lombok.extern.slf4j.Slf4j;import org.springframework.ai.chat.client.ChatClient;import org.springframework.ai.openai.OpenAiChatModel;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @Author: qiquqiu * @Date: 2025/6/26 15:27 */@Slf4j@Configurationpublic class ChatConfig { /** * 普通对话聊天功能的模型 * @param model 用百炼的qwen-max模型,需要在yaml中做必要配置 */ @Bean public ChatClient chatClient(OpenAiChatModel model) { log.debug(\"初始化ChatClient...\"); // ChatClient chatClient = ChatClient.create(model); // 简单创建实例 // 或使用builder创建更高级控制 return ChatClient .builder(model) // 也可以使用ChatClient.Builder,利用build获取ChatClient对象 .defaultSystem(\"你是一个和蔼可亲的传统文化文学大师,精通诗词歌赋、琴棋书画,需要帮助用户创作\") .build(); }}

其中:defaultSystem() 方法,用来设置 SystemPrompt(系统提示词),一般用来指定大模型的身份,使用限制,范围等等方面 

ChatClient 是一个非常重要的 Bean,后续由它调用大模型;ChatClient 的创建有多种方式,上述代码的注释中给出了一些例子,但是一般均使用 builder 创建更好,能指定更多的高级设置(后面会讲到)

更多拓展可查看 SpringAI 关于这块的官方文档聊天客户端 API :: Spring AI 参考https://docs.spring.io/spring-ai/reference/api/chatclient.html

4.2 使用 ChatClient 向大模型发送请求

 创建一个 ChatController,马上就可以实现浏览器的简单访问了:

package com.demo.aiqqq.controller;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.ai.chat.client.ChatClient;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import reactor.core.publisher.Flux;@Slf4j@RestController@RequestMapping(\"/ai\")@RequiredArgsConstructorpublic class ChatController { // 注入上文配置好的 ChatClient private final ChatClient chatClient; /*@RequestMapping(\"/chat\") public String chat(String prompt) { return chatClient.prompt() .user(prompt) .call() // 非流式响应 .content(); }*/ // produces属性:指定响应的Content-Type和字符集,解析默认的流结果的乱码 @RequestMapping(value = \"/chat\", produces = \"text/html;charset=utf-8\") public Flux chat(String prompt) { log.debug(\"用户说:{}\", prompt); return chatClient.prompt() .user(prompt) // 用户输入 .stream() // 流式响应 .content(); }}

注意,这两种方法,一个调用 call(),返回 String,不支持流式响应,一个调用 stream(),返回 Flux,支持流式响应。显然为了达到大模型流式输出的效果,我们选择后者,如果选择了后者,要添加 produces = \"text/html;charset=utf-8\" 属性,不然响应会是乱码(call()方法调用不需要加)

然后,启动项目,打开浏览器,输入如下地址: localhost:8080/ai/chat?prompt=你的提问内容,回车即可实现请求

4.3 效果展示

响应过程是流式输出,说明案例成功了! 


5. 【SpringAI篇02】:对话功能与对话记忆功能