昊梵体育网

Spring AI 中智能体技能Agent Skill 入门开发示例-2

在本文中,我们将探讨 Spring AI 中的 Agent Skills 功能。我们会配置一个自定义技能,并将其与一个简

在本文中,我们将探讨 Spring AI 中的 Agent Skills 功能。我们会配置一个自定义技能,并将其与一个简单的聊天机器人相结合,用来对文章进行总结。

一、与聊天机器人互动

既然我们已经完成了实现,那接下来就让我们与聊天机器人进行互动,测试一下该智能体的各项功能吧。

在这里,我们要求聊天机器人通过提供文章的 URL 来总结该文章的内容。我们故意使用一个并不存在的文章的 URL,以此来验证聊天机器人是否真的能总结出我们在 Python 脚本中预先定义好的文章内容。

让我们看看会得到怎样的回应吧:

curl -X POST "http://localhost:8088/chat" \
-H "Content-Type: application/json" \
-d '{"question":"请总结如下文章:: https://www.xxxbbbccc.com/"}'

正如我们所见,该大型语言模型很好地总结了我们预先输入的文章内容。其输出格式完全符合要求:包括简短的总结、若干关键点以及最终结论。

在幕后,该智能体根据用户请求的描述,将请求与相应的文章摘要(article-summarizer )生成功能Skill 相匹配。接着,它使用 FileSystemTools 将相关指令加载到适当的环境中,再通过 ShellTools 执行 fetch_article.py 脚本来获取文章内容。最后,它按照 SKILL.md 文件中的指示来组织响应内容。

二、请求时序图

用户发起一次 POST /chat 请求。

后端并不是只调用一次模型,而是模型与工具之间进行了 3 轮循环。

前两轮模型都返回 TOOL_CALLS(要求调用工具),第三轮才返回 STOP(最终答案)。

控制器拿到最终文本后,封装成 HTTP 200 JSON 返回给客户端。

按阶段看,可以分为如下几个步骤:

入站阶段(1-3)

Client 把问题发到 ChatbotController。

Controller 调用 ChatClient。

ChatClient 组装第 1 轮请求给 Qwen。

第一次工具决策(4-6)

Qwen 第 1 轮返回 TOOL_CALLS,点名 Skill(article-summarizer)。

Tools 执行 Skill。

Skill 结果回传给 ChatClient,作为下一轮上下文。

第二次工具决策(7-10)

ChatClient 发第 2 轮请求(含 Skill ToolResponse)。

Qwen 第 2 轮再次返回 TOOL_CALLS,点名 Bash 执行抓取脚本。

Tools 执行 Bash 命令。

Bash 输出结果(ARTICLE 内容)回传。

最终生成与返回(11-14)

ChatClient 发第 3 轮请求(含 Bash ToolResponse)。

Qwen 第 3 轮返回 STOP 和最终摘要文本。

Controller 取 content 并封装响应体。

返回 HTTP 200 给客户端。

上面时序图介绍:

泳道从左到右是参与者:Client -> Controller -> ChatClient -> Qwen -> Tools。红色节点表示模型响应(最关键是 TOOL_CALLS 或 STOP)。绿色节点表示工具执行或请求载荷。蓝色节点表示用户可见输入输出或工具结果。

Skill 与 Bash 的结果是中间态,会回灌给后续轮次。真正返回给用户的最终文本来自第 3 轮 STOP 响应。

三、小结

在本文中,我们探讨了如何利用 Spring AI 来实现“智能体技能”这一概念。

首先了解了什么是Agent Skill,以及它们如何帮助我们将那些可重复使用的功能呈现给AI Agent。

接着,我们定义了一个自定义的文章总结功能,并将其集成到聊天机器人中。最后,我们与聊天机器人进行了互动,确认它能够正确地识别并使用该功能。

示例项目源码可以在github 上获取。