告别传统AI开发!SpringAI Agent + Skills重新定义智能应用
要说最近AI相关话题中什么最火,毫无疑问是Claude Skills,让我感到震惊的倒不是它为什么火爆,而是SpringAI居然已经迅速支持上Skills了,这效率真的是堪比🚀了。
谁说AI时代java开发者要掉队了? 肉虽然不一定吃得上,但是喝口汤还是妥妥的
接下来我们通过构建一个code reviewer, 来实际体验一把,如何将SpringAI和Skills结合起来使用
1. 基础环境要求
要体验SpringAI & Skills,目前需要升级到SpringAI 2.x版本,同时我们的SpringBoot也可以升级到4.x
- SpringAI: 2.0.0-M2
- JDK21
- SpringBoot: 4.0.1
除了这几个基本依赖之外,我们可以选择一个支持Function Tool的大模型来作为这个实现的大脑中枢
我们这里选择智谱的大模型 (原因就是因为它免费,且效果还行,对所有想体验的小伙伴没有任何额外成本投入)
2. 项目创建
接下来我们创建一个SpringAI应用,对于一个标准的SpringAI应用,在配置中,你会看到下面这些基础版本指定,这个也没什么好说的
GPT plus 代充 只需 145
接下来重点看一下我们这个项目所用到的几个核心依赖
- spring-ai-agent-utils: 这个就是SpringAI进行agent开发的关键依赖包
- spring-ai-starter-model-zhipuai: 这个是智谱大模型进行交互的依赖包
3. 项目配置
依赖搞定之后,接下来就是在配置文件中,配置LLM访问的相关信息、以及agent相关配置参数,对应的配置文件
GPT plus 代充 只需 145
这几个配置看起来和之前SpringAI相关的并没有太多的区别,其中 相关的配置中,主要设置了skills的存放路径,使用的model
根据上面的定义,我们将skills信息,放在目录下
新增一个目录,目录下的文件为
对应的内容如下
GPT plus 代充 只需 145
4. Skills简要说明
我们上面的Skill比较简单,就是一个markdown文档,SpringAI支持的Skills中,除了包含基本的文件(包含元数据(名称和描述)以及指导代理如何执行特定任务的说明)之外,还可以有相关的脚本、模板和参考资料
一个常见的skills结构如下
现在前置准备已经完成,接下来开始正式的体验吧
2.1 交互日志打印 MyLoggingAdvisor
为了让系统与大模型之间的交互更清晰,我们将双方交互的日志进行更友好的打印(也顺便看一下,一次用户感知的问答过程中,实际上有几次交互)
GPT plus 代充 只需 145
2.2 准备用于评审的代码
我们直接使用 实战 | 零基础搭建知识库问答机器人:基于SpringAI+RAG的完整实现 中的代码分块的内容作为待评审的内容,看下这段简单的文本分块工具会评审出什么内容
2.3 核心实现
配置Agent实现代码评审
Bean定义与依赖注入
- CommandLineRunner: Spring启动后自动执行的接口
- ChatClient.Builder: 用于构建聊天客户端
- @Value(“${agent.skills.dirs:Unknown}”): 注入配置属性,获取技能目录资源列表
ChatClient配置链
- 系统提示词配置:
- 技能工具配置:
- SkillsTool.builder().addSkillsResources(agentSkillsDirs).build(): 动态加载预定义的技能资源
- FileSystemTools.builder().build(): 提供文件系统访问能力
- ShellTools.builder().build(): 提供命令行执行能力
- Advisor配置:
- ToolCallAdvisor.builder().build(): 处理工具调用逻辑
- MyLoggingAdvisor.builder().showAvailableTools(false).showSystemMessage(false).build(): 自定义日志记录,隐藏工具和系统消息详情
代码评审执行流程
请求执行
- prompt(): 构建提示词
- .call(): 发起AI请求
- .content(): 获取返回结果
GPT plus 代充 只需 145
2.4 执行演示
接下来我们启动项目,验证一下效果如何(在启动命令行参数中,配置上大模型的api-key,当然也可以直接在yml配置文件中进行配置)
从上面的截图也可以看出,系统与大模型之间进行了三轮对话,
- 第一轮: 用户的原始诉求 -> 大模型
- 大模型识别到需要进行代码评审,给系统响应
- 第二轮:系统接收到响应之后,读取skills的约束进行响应
- 大模型返回需要读取需要评审的代码内容,对应的响应为
- 第三轮:系统读取代码内容,发送给大模型
- 大模型返回评审结果
下面是完整的返回文本,有兴趣的小伙伴可以看看
GPT plus 代充 只需 145
SpringAI的Agent开发范式配合Skills机制,非常简单就实现了AI应用的工程化。整个过程实现下来,门槛还是比较低的。 不得不高喊一声:
实现方式虽然简单,但是这个背后的设计哲学、开发思维的转变,还是很值得我们学习参考的——在AI时代,如何将我们现有的技能(如可复用、模块化思设计等)转变到大模型应用开发,这可能是我们每一个程序员最大的财富。
那么这一套是怎么实现的呢?
Spring AI采用基于工具的集成方法,通过实现各种工具,使任何LLM都能回调执行,Skills的运行过程,通常是下面三步:
- 发现(启动阶段)
- 通过文件中的元数据,快速实现技能的安装注册
- 语义匹配(对话过程中)
- 当用户发出请求时,LLM 会检查工具定义中嵌入的技能描述。如果 LLM 判断用户请求在语义上与某个技能的描述匹配,则会调用该技能工具,并将技能名称作为参数传递给它。
- 执行(技能调用时)
- 当调用技能工具时,SkillsTool会从磁盘加载完整的SKILL.md内容,并将其与技能的基础目录路径一起返回给大型语言模型(LLM)。然后,LLM会按照技能内容中的指令执行。如果技能引用了其他文件或辅助脚本,LLM会使用的函数或的函数来按需访问它们
项目源码:
- https://github.com/liuyueyi/spring-ai-demo/tree/master/v2/T01-agentic-skills-simple-design
零基础入门:
- LLM 应用开发是什么:零基础也可以读懂的科普文(极简版)
- 大模型应用开发系列教程:序-为什么你“会用 LLM”,但做不出复杂应用?
- 大模型应用开发系列教程:第一章LLM到底在做什么?
- 大模型应用开发系列教程:第二章 模型不是重点,参数才是你真正的控制面板
- 大模型应用开发系列教程:第三章 为什么我的Prompt表现很糟?
- 大模型应用开发系列教程:第四章Prompt 的工程化结构设计
- 大模型应用开发系列教程:第五章 从 Prompt 到 Prompt 模板与工程治理
- 大模型应用开发系列教程:第六章 上下文窗口的真实边界
- 大模型应用开发系列教程:第七章:从 “堆上下文” 到 “管理上下文”
实战
- 大模型应用开发实战:两百行实现一个自然语言地址提取智能体
- 大模型应用开发实战:基于SpringAI与大模型的零配置发票智能提取架构
- 实战 | 零基础搭建知识库问答机器人:基于SpringAI+RAG的完整实现
参考:
- Spring AI Agentic Patterns (Part 1): Agent Skills - Modular, Reusable Capabilities
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/239774.html