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

相关推荐
菜鸟谢1 小时前
Rust let / static / const 完整详解
后端
名字还没想好☜1 小时前
Go 1.23 range-over-func 迭代器实战:自定义可迭代类型、提前退出与惰性求值
开发语言·后端·golang·go·迭代器
对象存储与RustFS1 小时前
给 Kubernetes 找一个对象存储后端:RustFS Helm 部署 + 应用接入实录
后端·云原生·kubernetes
用户8181870627461 小时前
第7章 死锁排查实录:jstack定位死锁的完整流程
java·后端
逻辑帧1 小时前
给 AI 时代找工作的同学一些实用建议
前端·后端
喵同志不止步于码农2 小时前
Java Caffeine 快速入门
java·开发语言·后端·并发·缓存一致性
东风破_2 小时前
NestJS CRUD 实战:用 Todos 模块打通 Controller-Service-Module 三层
后端
东风破_2 小时前
NestJS 框架入门:从工厂模式到模块化架构
后端
灯澜忆梦2 小时前
【基于GO的Web开发4】html/template 模板语法
后端·golang·html