从零实操 Spring AI 第 2 篇:写出第一个聊天接口,再用 ChatClient 重构
·
项目和依赖都准备好了。
这一篇开始真正调用大模型。
不过我不打算只写一个能跑的接口就结束,而是会顺手把它重构成后续更常用的 ChatClient 写法。
答案先说
这一篇只做一件事:先用 ChatModel 跑通第一次模型调用,再用 ChatClient 重构聊天接口。
读完并跟着做完后,项目会有一个明确的新增能力,而不是只停留在概念介绍。
上一篇做到哪了
第 1 篇我们完成了 Spring Boot 项目创建、Spring AI 依赖接入和模型基础配置。
这篇会在上一节的基础上继续往前走。

这张图就是本篇的主线。先把流程看清楚,再进入代码会轻松很多。
核心概念
ChatModel 更像底层一点的聊天模型抽象。
ChatClient 则更适合业务开发,它可以更自然地组织 user prompt、system prompt、流式输出和结构化返回。
所以这一篇先跑通,再重构。
开始实操
1. 第一个聊天接口
@RestController
@RequestMapping("/ai")
public class ChatController {
private final ChatModel chatModel;
public ChatController(ChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/chat")
public String chat(String message) {
return chatModel.call(message);
}
}
2. 配置 ChatClient
@Configuration
public class AiConfig {
@Bean
public ChatClient chatClient(ChatClient.Builder builder) {
return builder.build();
}
}
3. 用 ChatClient 重构接口
@GetMapping("/chat")
public String chat(String message) {
return chatClient
.prompt()
.user(message)
.call()
.content();
}
运行效果
curl "http://localhost:8080/ai/chat?message=你好,介绍一下 Spring AI"
这里后续补充真实模型返回结果。
踩坑记录
这里先列出本篇最可能遇到的问题,后面实操时再补充真实截图和日志。
- API Key 无效或额度不足
- 模型接口超时
- 中文参数没有正确编码
ChatClient.Builder没有自动注入- Spring AI 版本变化导致 API 有差异
项目里怎么理解
这一篇跑通了 AI 应用最小闭环:用户输入进入后端,后端调用模型,模型结果返回给用户。ChatClient 重构则为后续扩展打基础。
本篇小结
这一篇完成的不是一个孤立知识点,而是让项目继续向最终的“企业知识库问答助手”靠近了一步。
下一篇预告
下一篇我们会继续增强聊天能力:流式输出、系统提示词和结构化返回。
更多推荐

所有评论(0)