本文是“Spring AI 智能体实战”系列第 5/30 篇。项目采用 Java 17、Spring Boot 3.4.3 和课程示例所使用的 Spring AI 版本。不同 Spring AI 版本的依赖名称和部分 API 可能存在差异,请以自己项目的版本为准。
前言
编写同步聊天接口,掌握 prompt、call 和 content 三个核心调用步骤。
本文将沿用同一个实战项目逐步完成相关功能。所有密钥均使用环境变量表示,复制代码后请在本地配置真实值,不要把 API Key 或数据库密码提交到代码仓库。
本文目标
理解本节功能解决的实际问题。
掌握关键配置、接口与代码结构。
完成可验证的运行结果,为下一节功能做好准备。
同步调用ChatController.java
接下来,我们定义一个Controller,在其中接收用户发送的提示词,然后把提示词发送给大模型,交给大模型处理,拿到结果后返回。
代码如下:
package com.gdcp.ai.controller; import lombok.RequiredArgsConstructor; import org.springframework.ai.chat.client.ChatClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RequiredArgsConstructor @RestController @RequestMapping("/ai") public class ChatController { private final ChatClient chatClient; // 请求方式和路径不要改动,将来要与前端联调 @GetMapping("/chat") public String chat(@RequestParam(defaultValue = "讲个笑话") String prompt) { return chatClient .prompt(prompt) // 传入user提示词 .call() // 同步请求,会等待AI全部输出完才返回结果 .content(); //返回响应内容 } }注意,基于call()方法的调用属于同步调用,需要所有响应结果全部返回后才能返回给前端。
启动项目,在浏览器中访问:http://localhost:8080/ai/chat?prompt=你好
本文总结
完成第一个可访问的 AI 对话 REST 接口,同时理解同步调用必须等待完整响应的特点。
建议在进入下一篇之前亲自运行本文代码,并记录请求参数、控制台日志和最终响应。遇到问题时,优先检查依赖版本、模型名称、环境变量和包名是否一致。
下一篇预告
下一篇:Spring AI流式输出:让回答像ChatGPT一样逐字返回。