目录
一、明确需求
二、理清技术链路
三、明确项目使用版本
四、搜索关键词信息
五、查API文档、抄示例
六、考虑是否要客户端配置
七、现在AI这么强,自己查文档、练习独立开发,还有价值吗?
前言:我的电商项目已经进入尾声了,今天完成了最后一个功能模块AI客服,突然想记录一下独立开发的过程,一方面是想起自己独立开发的时候确实遇到了困难,弄得自己挺崩溃的。想写一篇记录来帮助更多初级开发者。另一方面是,没有另一方面,哈哈哈哈,感觉记录这个例子还是有广泛实用性的,现在基本上都会接AI嘛,所以这个以 AI 查订单功能为例,记录一下整个开发流程和思路。当然这个内容是不完善的,因为此内容只针对我个人去实现这个功能当时的历程,有什么补充和指导希望您在评论区留言,非常感谢🙏。
一、明确需求
功能:让AI客服根据用户 ID 查询订单,还可以指定返回多少条。
现在:我只知道需求,其他的我都不知道。
二、理清技术链路
业务逻辑:
AI 只负责理解用户的话 提取信息,它没有权限也没有能力去查我们的微服务。所以,我们需要提供一个工具给 AI。
执行流程:
当 AI 识别出用户要查订单时,它会提取出查询条件,并主动调用我们写的后端工具。
我们的后端工具接收条件后,通过 Dubbo 远程调用订单微服务获取数据,再把结果返回给 AI, 最后由AI组织成自然语言回复用户。
三、明确项目使用版本
给不知道快捷搜索键的小伙伴简单捯饬两句:
打开项目的pom.xml。比如我们要找 Spring AI 的版本号,以及项目使用的依赖。Ctrl + F搜索:spring-ai。
版本号决定我们应该看哪一版 API 文档。
如果项目依赖要求用旧版函数注册机制写,而我们用的是新版本文的写法,最后就可能出现两套都看似合理、放进同一个项目却不兼容的代码。
我们的版本是1.0.0
四、搜索关键词信息
明确我们需要什么之后,就根据关键词去搜索相关文档。
- 明确使用技术:Spring AI
- 明确实现内容:写一个后端函数工具,让 AI 能够调用我们的后端业务(通过 Dubbo 查订单微服务)。
- 明确需要哪些类:一个是让AI 能够调用我们的后端业务的,一个是让AI知道有这个工具的。
(1)搜索:由此我们定位了搜索信息,去 Google 搜索 “Spring AI 函数调用工具”。
五、查API文档、抄示例
(2)找到API文档网站进入。
补充:搜素条件可以带上“ 1.0.0 版本 ”的关键词。
我这里是进入后再选择版本的。总之一定不要忘记注意版本这一点。
(3)根据导航栏以及文档介绍,找到正确的函数示例
(4)然后我们把示例粘到代码编辑器,根据我们的业务内容进行修改。完成下:
@Component // 表示这是一个Spring组件,可以被Spring容器管理 public class OrderQueryService implements Function<OrderQueryService.Request, OrderQueryService.Response>{ @DubboReference private OrdersService ordersService; /** * 应用 * @param request 请求参数 * @return 响应参数 */ @Override public Response apply(Request request) { Long userId = request.userId(); Integer size = request.size() == null ? 1 : request.size(); Integer status = request.status(); List<Orders> orders = ordersService.findUserOrders(userId,status); List<Orders> subList = orders.subList(0, size < orders.size() ? size : orders.size()); return new Response(subList); } /** * 输入 * @param userId 用户ID * @param size 查询条数 * @param status 订单状态 */ public record Request(Long userId, Integer size, Integer status){} /** * 输出 * @param orders 订单信息集合 */ public record Response(List<Orders> orders){} }(5)思考补充
核心解决了。有时候我们不知道有没有什么要补充的,就根据导航栏去发现。
比如这里,我们就注意到了,代码写完了,但 AI 怎么知道有这个工具? 它又怎么知道这个工具需要什么参数?所以要写一个配置类(Config)。
依旧搬过来修改。
@Configuration public class FunctionCallConfig { @Bean @Description("查询当前用户的订单信息,输入订单状态(1=待支付,2=已完成)和查询条数(默认为1),用户ID从prompt获取") public Function<OrderQueryService.Request,OrderQueryService.Response> getOrderQueryService(){ return new OrderQueryService(); } }六、考虑是否要客户端配置
在前面几步,我们已经把“查订单”的工具造出来了,并交给了 Spring 容器管理。但是,大模型本身是个封闭的云端大脑,它不知道我们的代码里有什么。
所以,我们需要一个“统一入口(客户端配置)”。在这个入口里,我们要提前告诉大模型:
配置全局默认工具:默认拥有哪些工具(比如查订单、查商品)。
查文档定位:去官方文档的“聊天客户端 API”章节<ChatClient>,根据描述找到正确内容。
方法是这个:
写法是这样:
我们代码这样:
@Bean public ChatClient chatClient(ChatClient.Builder builder){ return builder // 默认函数 .defaultFunctions("getOrderQueryService", "getGoodsQueryService") .build(); }如果官方文档实在是看不明白或者写不明白,把已知的信息和实现想法提供给AI插件实现。
看文档知道概念 -> 让AI写示例 -> 自己改业务。
七、现在AI这么强,自己查文档、练习独立开发,还有价值吗?
对此,我的理解是这样的。
AI 可以帮助我们编写代码,却不意味着它生成的代码一定正确。
面对陌生的 API、复杂的框架配置、版本兼容问题,以及难以复现的异常,我们仍然需要查阅官方文档、分析日志、验证实现。
查文档的目的,也不再只是为了自己写出代码,而是为了理解技术的使用方式,并判断 AI 给出的方案是否可靠。
因此,学习独立开发并不是为了拒绝 AI,而是为了建立使用 AI 的基础能力。
先通过独立开发建立理解,理解需求如何拆解、API 如何使用、功能如何实现,以及问题应该如何排查;再逐渐学会让 AI 帮你完成开发、提高效率,将更多精力投入架构设计、业务逻辑、测试验证和问题分析。
AI 可以降低编写代码的门槛,但不能替代开发者对软件质量的判断。
未来,开发者的价值或许不再体现在写了多少行代码、查阅了多少文档,而在于能否将需求转化为可靠的软件,并在系统出现问题时,找到原因、验证判断,最终解决问题。
先建立理解,再借助 AI 放大自己的能力。这或许才是 AI 时代更值得坚持的学习路径。
✨祝看到这里的初级开发者们日后都成为业届的技术大牛哦,哈哈哈哈。
真是人类群星闪耀时啊🎇