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同名,欢迎关注。

相关推荐
苏三说技术36 分钟前
为什么越来越多人用OpenWiki?
后端
IT_陈寒42 分钟前
Java里用Stream.parallel()翻车实录,这性能还不如单线程
前端·人工智能·后端
Bs_MoneyMagnet1 小时前
基于springboot+vue的生态果园采摘预约系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·毕业设计·计算机毕业设计
码事漫谈1 小时前
FDE 的起源、形态与真实边界
后端
ServBay2 小时前
Grok Bot 还是 OpenClaw?聊聊真正能替人打杂的 AI 智能体
后端·aigc·grok
掘金挖土2 小时前
前端手摸手跑路之 AI 应用开发(五)
前端·后端
弈栈录2 小时前
LangGraph 入门:用状态机设计可靠的 Agent 工作流
后端·程序员
LEE3 小时前
前端转型全栈 00:AI 时代该学哪些,不该学哪些
前端·后端
Go_error4 小时前
上下文取消链:摧毁我们支付系统的 bug
后端·go
无限压榨切图仔4 小时前
一个优惠券需求改了三端,我才明白全栈不是多学一门语言
前端·后端