HermesAgent插件开发:编写你的第一个Tool
HermesAgent插件开发:编写你的第一个Tool

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
想让你的HermesAgent变得更强大,能够调用外部服务或执行特定任务吗?关键在于为其编写自定义Tool。这听起来有点技术门槛,但别担心,整个过程其实逻辑清晰,遵循一套标准化的流程就能搞定。下面,我们就来手把手拆解创建第一个Tool的完整步骤。
一、定义Tool类结构
一切从定义开始。你的Tool必须继承HermesAgent框架提供的基类,并实现规定的接口。这一步的核心目的,是让框架能够准确识别、序列化并最终调度你的工具。其中,名称、描述和参数定义这几项元信息尤为重要,它们将直接用于大语言模型(LLM)的“工具选择”推理过程。
具体操作可以分四步走:
首先,创建一个新的Python文件,比如命名为 weather_tool.py。
接着,导入必要的模块,通常是 HermesTool 基类,如果框架支持装饰器模式,也可能用到 @tool 装饰器。
然后,定义你的工具类。例如,可以创建一个 WeatherQueryTool 类,并为其设置关键属性:name = “get_weather”,description = “根据城市名获取当前天气信息”。名字要简洁,描述要清晰,这直接关系到LLM能否正确理解和使用它。
最后,在类中声明 parameters 字典。这个字典定义了工具所需的输入,比如一个名为 “city” 的参数(类型为 str),以及一个可选的 “unit” 参数(可设置默认值为 “celsius”)。每个参数都需要明确其 type 和 description。
二、实现call方法逻辑
定义好了骨架,接下来就要注入灵魂——实现 call 方法。这个方法是工具被执行时的实际入口,它接收标准化的参数字典,并负责返回LLM能理解的结构化结果。这里有个关键原则:必须确保异常可被优雅捕获,并返回友好的错误信息,避免因单个工具故障而中断整个Agent的工作流。
实现过程大致如下:
在Tool类中定义方法:def call(self, **kwargs) -> dict:。
从 kwargs 中提取出 city 等参数值,并进行基本的校验,比如确保城市名非空且为字符串类型。
构造HTTP请求的URL,调用一个公开的天气API(例如OpenWeatherMap),记得携带必要的API Key和查询参数。
收到响应后,解析JSON数据,提取出我们关心的字段,比如 temperature(温度)、condition(天气状况)、humidity(湿度)。
最后,返回一个结构清晰的字典,例如:{“temperature”: 23.5, “condition”: “partly cloudy”, “humidity”: 64}。这个结果会被HermesAgent框架传递给LLM进行后续解读。
三、注册Tool到Agent实例
工具编写完毕,但如果你不“告诉”Agent,它就永远不知道这个新能力的存在。因此,必须将Tool显式注册到HermesAgent的运行时环境中。这个过程会触发框架内部的元数据校验和索引构建。
注册方式很简单:在初始化你的Agent对象之后,直接调用 agent.register_tool(WeatherQueryTool()) 即可。
注册成功后,通常会在日志中看到类似 Registered tool: get_weather 的输出。为了确认,你可以调用 agent.list_tools() 方法,检查返回的列表里是否包含了 get_weather 及其完整的描述信息。
除了代码注册,有些框架也支持YAML配置方式。如果采用这种模式,你需要在 tools.yaml 这样的配置文件中添加对应的工具块,并指定模块路径和类名。
四、编写单元测试验证行为
在将工具投入生产环境前,充分的测试是必不可少的。单元测试能确保你的Tool在各种输入条件下都能返回预期的格式和内容,有效防止因参数缺失、网络异常或类型错误导致整个Agent意外崩溃。
测试可以这样组织:
创建测试文件 test_weather_tool.py,导入 pytest 和你的 WeatherQueryTool。
编写第一个测试函数 test_call_with_valid_city,传入合法的参数如 {“city”: “Beijing”},然后断言返回的字典中包含 “temperature” 这个键。
再编写一个测试函数 test_call_with_empty_city,验证当城市参数为空时,工具是否能正确地抛出 ValueError 或返回一个结构化的错误信息,例如 {“error”: “city cannot be empty”}。
为了提高测试的稳定性和速度,建议使用 responses 这类库来模拟HTTP响应,从而隔离对外部API的依赖。
五、集成至Agent提示工程
这是最后一步,也是至关重要的一步。LLM本身并不知道你的工具能做什么,它需要通过系统提示词(system prompt)来了解每个工具的功能边界和调用语法。你必须将Tool的描述信息注入到system prompt的特定部分,否则模型永远不会生成相应的工具调用指令。
具体操作流程是:
首先,调用框架提供的 agent.get_tool_descriptions() 方法,获取所有已注册工具的标准JSON Schema描述片段。
然后,将这个片段嵌入到你的system prompt末尾。格式通常是类似 {“name”: “…”, “description”: “…”, “parameters”: {…}} 的JSON结构。
在prompt中,最好给出明确的指示,例如:“仅当用户问题明确涉及天气查询时,才调用get_weather工具;否则不调用任何工具。” 这能引导LLM更精准地使用工具。
完成以上步骤后,就可以进行验证了。向Agent发送一个查询天气的请求,观察LLM的输出中是否出现了预期的工具调用结构,例如:{“name”: “get_weather”, “arguments”: “{…}”}。如果出现了,恭喜你,你的第一个HermesAgent Tool已经成功上线运行。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
谷歌将放弃多元化计划,称不再禁止 AI 武器化“对社会有好处”
谷歌将放弃多元化计划,称不再禁止 AI 武器化“对社会有好处” 一则来自英国《卫报》的报道,上周在科技圈内激起了不小的波澜。报道称,谷歌高管在一次全体员工会议上,详细阐释了公司将如何逐步淘汰长期推行的多元化计划,并为一项关键承诺的转向进行了公开辩护——那就是不再禁止将人工智能技术用于武器和监控领域。
DeepSeek 等秒变操控电脑 AI智能体,微软开源工具 OmniParser V2.0 发布
微软OmniParser V2 0发布:DeepSeek等模型秒变电脑操控高手 要说近期AI智能体领域有什么值得关注的突破,微软最新开源的OmniParser V2 0绝对算一个。这款基于纯视觉的工具,专门解析和识别图形用户界面(GUI)上的可交互元素。之前,它搭配GPT-4V就已经展现出了不俗的屏
AI快速生成思维导图,用DeepSeek一键自动生成思维导图
大家都知道,思维导图能提高效率、激发创意,在学习、生活和工作中都大有用处。 从学生梳理知识框架,到项目团队策划活动、厘清思路,思维导图的作用已经无需赘言。它不仅是个人思考的利器,更是团队高效协作的桥梁。 不过话说回来,手动绘制一张逻辑清晰、内容详尽的思维导图,确实是个耗费精力的过程。从构思结构到填充
图可丽:AI图片和视频抠图工具,智能一键抠图、高清、修复、转卡通
在数字内容创作井喷的今天,一个得心应手的图像处理工具,往往能成为效率倍增的关键。图可丽正是这样一款功能全面的在线平台,它集图片与视频处理于一身,从基础的批量抠图、去水印,到富有创意的视频抠图、一键生成漫画,再到实用的图像修复、视频高清化、AI绘画及背景更换,几乎覆盖了从编辑到创作的全流程需求。 图可
字节跳动 AI 中文 IDE“Trae”已支持 Windows 系统,内置 GPT-4o 免费使用
字节跳动AI编程工具Trae登陆Windows,内置GPT-4o免费使用 对于关注AI编程工具的开发者来说,今年年初的一条消息可能还记忆犹新:字节跳动在1月份推出了一款全新的AI中文IDE工具——Trae。不过当时有个小小的遗憾,它只面向Mac用户。 现在,情况不同了。根据不少开发者的实测反馈,这款
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

