尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Hermes Agent 扩展开发实战:如何快速注册自定义工具并组装工具集

Hermes Agent 扩展开发实战:如何快速注册自定义工具并组装工具集 Hermes Agent 扩展开发实战如何快速注册自定义工具并组装工具集【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agentHermes Agent 是一款开源 AI 代理框架其内置的工具集Toolset系统管理着搜索、终端等 40 余种工具。内置能力再全也总有覆盖不到的业务场景——比如你希望对文档做特定格式的大小写转换、批量统计字数这些都得自己动手加。读完这篇文章你能在 30 分钟内完成 Hermes Agent 自定义工具集的完整链路注册一个自己的工具、把它组装进可复用的工具集、并掌握验证与排错手段。原理先行工具、工具集、注册表各是什么动手之前先建立心智模型用工具箱来类比工具Tool一把单独的螺丝刀。它由三样东西构成——干活的 Python 函数handler、描述输入参数的 JSON Schema以及在注册表里的登记记录。工具集Toolset工具箱里的一个抽屉。一个抽屉可以放多把工具也可以引用另一个抽屉嵌套包含方便整组拿取。注册表Registry仓库的台账。工具只有登记在册代理运行时才借得到它工具集本身只是抽屉的布局图真正能用的前提是抽屉里的工具都已经在台账上。技术定义对应到代码工具集统一声明在 toolsets.py 的字典里每个条目有description、tools直接包含的工具名列表、includes依赖的其他工具集三个关键属性工具则通过 tools/registry.py 中的registry.register()方法登记。最短路径5 分钟注册一个自定义工具以文本大小写转换为例。先写处理函数并完成注册——注意toolset参数要指向你打算归属的工具集名注册时就会和抽屉绑定from tools.registry import registry def text_transform(args): text args.get(text, ) mode args.get(transform_type, uppercase) return text.upper() if mode uppercase else text.lower() registry.register( nametext_transform, toolsettext_processing, schemaTEXT_TRANSFORM_SCHEMA, handlertext_transform, )Schema 负责告诉代理这个工具吃什么参数enum约束取值范围required保证必填项不会被漏传TEXT_TRANSFORM_SCHEMA { name: text_transform, description: 转换文本大小写, parameters: { type: object, properties: { text: {type: string}, transform_type: {type: string, enum: [uppercase, lowercase]}, }, required: [text], }, }两段拼起来就是一个可运行的最小工具函数负责执行Schema 负责契约注册负责上架。进阶组装工具集的组合、复用与动态创建用 includes 实现抽屉套抽屉工具集的价值在于复用。在 toolsets.py 的TOOLSETS字典里新增条目includes可以引用任意已有工具集依赖会逐层展开TOOLSETS { # ... 内置条目 text_processing: { description: 文本处理大小写转换、字数统计, tools: [text_transform, word_count], includes: [web], # 复用 web 工具集 }, content_creation: { description: 内容创作综合工具集, tools: [text_rewrite], includes: [text_processing], # 间接带上 web }, }组装好之后启动时指定工具集即可生效hermes run --toolset text_processing运行时动态创建工具集不想改源码文件时可以用create_custom_toolset在运行时直接创建from toolsets import create_custom_toolset create_custom_toolset( namemy_dynamic_toolset, description运行时创建的动态工具集, tools[text_transform], includes[web, vision], )适合做灰度验证先在运行时拼一个临时工具集跑通流程确认没问题再固化到toolsets.py。验证与排错工具集没生效时先查这三处先验证再启动from toolsets import validate_toolset, get_toolset_info if validate_toolset(text_processing): info get_toolset_info(text_processing) print(info[description], info[resolved_tools])resolved_tools给出依赖展开后的完整工具清单——看到自己的工具名出现在里面说明链路是通的。三个高频错误⚠️ 按出现频率排序工具没注册或名字对不上工具集里写了text_transform但注册时用了transform_text。用注册表核对最可靠available, unavailable registry.check_tool_availability()unavailable非空就是工具集声明了未注册的工具。includes 引用了不存在的工具集比如手误写成webs。这种情况validate_toolset会直接报错不要带病启动。Schema 缺required或字段类型错误工具能注册成功但代理调用时传参失败。改完 Schema 后手动跑一次 handler 验证最稳妥。用树形视图看结构from toolsets import print_toolset_tree print_toolset_tree(content_creation)输出形如 content_creation: 内容创作综合工具集 Tools: text_rewrite Includes: text_processing: 文本处理 Tools: text_transform, word_count Includes: web: Web research tools嵌套层级一目了然includes 写错层级、漏依赖的问题在这一屏里基本都能发现。要点回顾工具 函数 Schema 注册记录三者缺一不可工具集是声明式的抽屉布局tools放具体工具includes做复用注册名必须与工具集中的引用严格一致用check_tool_availability()兜底动态创建适合灰度验证稳定后再固化到 toolsets.py。延伸资源工具集定义见 toolsets.py注册系统源码见 tools/registry.py测试写法参考 tests/tools/test_registry.py 和 tests/test_toolsets.py。【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表