Java AI转型实战(三):第一次调用大模型API,拿到AI回复

从配置到运行,一个请求拿到AI的第一句回复

01 上篇回顾

上一篇,我搭建好了Spring AI的学习"沙盒"项目。pom.xml配好了,依赖下载好了,项目结构也整理清楚了。但项目不能只是个空壳,得让它真正跑起来。

这一篇的目标很明确:写一个接口,调用大模型,拿到回复。

02 配置API Key

第一步,在 application.yml 中配置阿里百炼的API Key和模型:

注意:

  • api-key 换成你自己在阿里百炼控制台创建的那个,注意是DashScope的API Key,不是阿里云账号的AccessKey
  • model 可以是 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 小结

这一篇完成了三件事:

  1. ✅ 在 application.yml 中配置了API Key和模型
  2. ✅ 写了Service层(封装ChatClient)和Controller层(暴露HTTP接口)
  3. ✅ 解决了 @RequestParam 的参数名问题,成功拿到AI回复

现在我可以自豪地说:我的Java项目,已经能和大模型对话了。

下期预告

目前只是最基础的"一问一答",每次请求都是独立的,AI不记得前面聊过什么。

接下来,我要给AI加上记忆能力------让它能记住上下文,实现多轮对话。这才是真正"像聊天"的体验。

另外,请求方式目前还是同步阻塞的,对一个高延迟的外部接口来说,响应时间可能不够理想。后面也会考虑引入 SSE(Server-Sent Events)流式输出 ,实现类似ChatGPT的逐字打字效果,并支持异步/虚拟线程来优化性能。

一步一步来,下期见。


📌 我是超超不吵吵,10年Java全栈,正在转型AI应用开发。

每周一篇实战笔记,不贩卖焦虑,只分享能落地的技术。

掘金/CSDN同名,欢迎关注。

相关推荐
ZWZhangYu1 小时前
从 Dify 实践理解大模型上下文缓存
java·后端·spring
考虑考虑2 小时前
瀚高数据库
数据库·后端·postgresql
锋行天下3 小时前
DeepSeek写Langgraph就是个大傻逼,一本正经胡说八道
前端·人工智能·后端
小小张说故事5 小时前
Python 的 str 为什么设计成不可变?拆开字符串驻留、字符串池,以及 += 拼接到底慢在哪
后端·python
AI架构师之家5 小时前
我把 Hermes 这匹"马"养了两周,它干了一件让我有点发毛的事
后端
dpharness5 小时前
块协议用了两周,我把九个坑按顺序记下来了
后端
加宝的起点雷达5 小时前
跑了两周的信号日报,我把降级链改了四次
人工智能·后端
IT枫斗者枫哥5 小时前
CompletableFuture失败后返回空列表:异常没了,业务含义也变了
java·后端
Gopher_HBo5 小时前
opentelemetrySDK源码解析
后端
UrbanJazzerati6 小时前
AutoHotkey v2 零基础快速入门 Part 10:给路线回放添加高精度计时,理解累计延迟与路线一致性
后端