从配置到运行,一个请求拿到AI的第一句回复
01 上篇回顾
上一篇,我搭建好了Spring AI的学习"沙盒"项目。pom.xml配好了,依赖下载好了,项目结构也整理清楚了。但项目不能只是个空壳,得让它真正跑起来。
这一篇的目标很明确:写一个接口,调用大模型,拿到回复。
02 配置API Key
第一步,在 application.yml 中配置阿里百炼的API Key和模型:

注意:
api-key换成你自己在阿里百炼控制台创建的那个,注意是DashScope的API Key,不是阿里云账号的AccessKeymodel可以是qwen-max(最强)、qwen-plus(平衡)、qwen-turbo(最快),新手先用qwen-max体验完整能力- 缩进必须用空格,不能用Tab,冒号后面要加一个空格
03 写Service层
创建一个 AIService.java,封装调用逻辑:

这段代码做了什么?
ChatClient.Builder是Spring AI自动注入的构建器,已经帮你配置好了连接信息(从application.yml读取)prompt(question)把用户的问题传进去.call().content()发起同步调用并获取返回的文本内容
04 写Controller层
创建一个 AIController.java,暴露HTTP接口:

05 踩坑:@RequestParam的坑
第一次启动后访问接口,报了这个错:

错误原因:
我一开始写的是 @RequestParam String question,没有指定参数名。Spring在解析URL参数时,需要通过反射获取参数名,但编译时默认不保留参数名信息,导致Spring不知道这个参数叫什么名字。
解决方案:
在 @RequestParam 中显式指定参数名:

改完之后重启项目,问题解决。
06 见证时刻:第一次拿到AI回复
启动项目,打开浏览器,输入:
bash
http://localhost:8080/api/ai/ask?question=你好,请用一句话介绍自己
等待一两秒,浏览器里返回了这样的内容:

看到这句话时,说实话还是有点小激动的。虽然只是调用了一个现成的API,但这是第一次用自己写的Java代码,通过Spring Boot,成功拿到了大模型的回复。从配置到代码,每一步都是自己亲手完成的。
07 小结
这一篇完成了三件事:
- ✅ 在
application.yml中配置了API Key和模型 - ✅ 写了Service层(封装ChatClient)和Controller层(暴露HTTP接口)
- ✅ 解决了
@RequestParam的参数名问题,成功拿到AI回复
现在我可以自豪地说:我的Java项目,已经能和大模型对话了。
下期预告
目前只是最基础的"一问一答",每次请求都是独立的,AI不记得前面聊过什么。
接下来,我要给AI加上记忆能力------让它能记住上下文,实现多轮对话。这才是真正"像聊天"的体验。
另外,请求方式目前还是同步阻塞的,对一个高延迟的外部接口来说,响应时间可能不够理想。后面也会考虑引入 SSE(Server-Sent Events)流式输出 ,实现类似ChatGPT的逐字打字效果,并支持异步/虚拟线程来优化性能。
一步一步来,下期见。
📌 我是超超不吵吵,10年Java全栈,正在转型AI应用开发。
每周一篇实战笔记,不贩卖焦虑,只分享能落地的技术。
掘金/CSDN同名,欢迎关注。