Spring AI ChatClient API 介绍

ChatClient 是 Spring AI 提供的核心 API,提供流畅的调用方式,用于与各类大模型交互。本文结合 chat-model 示例,介绍 ChatClient 的创建方式、调用链、提示模板与结构化输出等能力。

源代码

如果您想自己尝试,可以查看我的源代码。为此,您必须克隆我的示例 GitHub 仓库。然后,您只需按照我的说明操作即可。

核心概念

使用 ChatClient.Builder 创建 ChatClient

本示例通过 Spring Boot 自动配置的 ChatClient.Builder 创建 ChatClient,并在构建时注册默认 Advisor:

@RestController
@RequestMapping("/api/chat")
class ChatClientController {
private final ChatClient chatClient;
ChatClientController(ChatClient.Builder builder) {
this.chatClient = builder
.defaultAdvisors(new SimpleLoggerAdvisor())
.build();
}
@PostMapping
Output chat(@RequestBody @Valid Input input) {
String response = chatClient.prompt(input.prompt()).call().content();
return new Output(response);
}
}

要点:

调用链:prompt → call → content

一次同步调用的典型写法:

String response = chatClient.prompt(input.prompt()).call().content();

若需要完整响应(元数据、用法等),可保留 ChatResponse

ChatResponse chatResponse = chatClient.prompt(input.prompt()).call().chatResponse();
String text = chatResponse.getResult().getOutput().getContent();
// 还可访问 chatResponse.getMetadata() 等

SimpleLoggerAdvisor 与日志

SimpleLoggerAdvisor 会在 DEBUG 级别打印请求与响应,便于调试。启用方式:

logging.level.org.springframework.ai.chat.client.advisor=DEBUG

本示例在 application.properties 中已配置上述日志级别,使用默认或任意模型 profile 启动即可在控制台看到每次调用的 prompt 与模型回复。

配置选项

与本示例相关的配置集中在 application.properties,并配合 Maven Profile 激活不同模型依赖:

spring.ai.openai.api-key=${OPENAI_API_KEY}
spring.ai.openai.chat.options.model=gpt-5
spring.ai.openai.chat.options.temperature=1
spring.ai.anthropic.api-key=${ANTHROPIC_API_KEY}
spring.ai.anthropic.chat.options.model=claude-sonnet-4-5
spring.ai.ollama.chat.options.model=qwen3:8b

运行时可用 Maven Profile 切换依赖:

常用项说明:

配置项说明
spring.ai.openai.api-keyOpenAI API Key 环境变量
spring.ai.openai.chat.options.modelOpenAI 模型名称
spring.ai.openai.chat.options.temperature采样随机度,0~1
spring.ai.anthropic.api-keyAnthropic API Key 环境变量
spring.ai.anthropic.chat.options.modelAnthropic 模型名称
spring.ai.ollama.chat.options.modelOllama 本地模型名称

测试接口

使用 deepseek 模型启动应用:

cd chat-model
mvn spring-boot:run

应用启动后,可用 curl 验证:

curl -s -X POST http://localhost:8080/api/chat \
-H "Content-Type: application/json" \
-d '{"prompt":"What is Spring Boot?"}'

返回为 JSON:{"content":"..."}

ChatClient 扩展示例

本模块在 ChatClient 基础上扩展了提示模板、结构化输出与工具调用等能力:

同一应用若需同时接入多个模型,可关闭默认自动配置后自行定义多个 ChatModel / ChatClient Bean,并通过 @Qualifier 注入。

总结

OpenAI API 接口与 Spring AI 对应关系
Spring AI 和聊天模型入门