项目和依赖都准备好了。

这一篇开始真正调用大模型。

不过我不打算只写一个能跑的接口就结束,而是会顺手把它重构成后续更常用的 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 重构则为后续扩展打基础。

本篇小结

这一篇完成的不是一个孤立知识点,而是让项目继续向最终的“企业知识库问答助手”靠近了一步。

下一篇预告

下一篇我们会继续增强聊天能力:流式输出、系统提示词和结构化返回。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐