首页 > 人工智能 >Python脚本自动化:HermesAgent调用本地工具

Python脚本自动化:HermesAgent调用本地工具

来源:互联网 2026-04-23 19:52:15

通过 Hermes Agent Python SDK 直接实例化 AIAgent 若需将 Hermes Agent 深度集成至自有 Python 脚本,并希望完全掌控其生命周期,直接使用其 Python SDK 是最直接、最灵活的方式。该方法允许现场定义工具、管理会话状态,无需依赖外部服务进程。 具

通过 Hermes Agent Python SDK 直接实例化 AIAgent

若需将 Hermes Agent 深度集成至自有 Python 脚本,并希望完全掌控其生命周期,直接使用其 Python SDK 是最直接、最灵活的方式。该方法允许现场定义工具、管理会话状态,无需依赖外部服务进程。

具体操作步骤如下:

长期稳定更新的攒劲资源: >>>点此立即查看<<<

1. 确保环境已安装 Hermes Agent Python 包。通常可通过 pip 命令完成:pip install hermes-agent

2. 在脚本中导入核心的 AIAgent 类并进行初始化。这相当于为自动化任务创建一个专属的“智能体”。

Python脚本自动化:HermesAgent调用本地工具

3. 构建“工具包”。创建一个工具列表,将希望 Agent 调用的本地功能(如使用 subprocess 执行系统命令、读写特定文件等)封装成符合规范的工具函数,并传入 Agent。

4. 调用 run_conversation 方法。使用自然语言发出指令,例如“帮我列出当前目录下所有的 .py 文件”。Agent 将理解意图并自动调用相应工具。

5. 从方法返回结果中,精准捕获 tool_result 字段。此字段包含本地工具执行后的原始输出,脚本可据此进行后续逻辑判断与处理。

调用 Hermes Agent 内置 REST API 服务并注入本地工具插件

若倾向于服务化架构,即让 Hermes Agent 作为独立的 HTTP 服务运行并通过 API 调用,此方式较为合适。其优势在于职责分离,主程序仅需关注发送请求与接收结果。

实现路径如下:

1. 将封装了本地操作的工具脚本(如 file_tools.py)放置到 Hermes Agent 指定的插件目录下,通常为 ~/.hermes/tools/

2. 在工具脚本中,按规定格式定义函数。使用 @tool 装饰器,并清晰声明每个参数的名称、类型和描述。这相当于为每个工具制作详细“说明书”,便于 Agent 理解与调用。

3. 以启用插件扫描的模式启动 Hermes Agent API 服务。命令示例:hermes api serve --host 0.0.0.0 --port 8000 --enable-plugins。启动后,服务将自动加载所有已放置的工具插件。

4. 在客户端代码中,使用 requests 库或其他 HTTP 客户端,向服务的 /v1/chat/completions 端点发送 POST 请求。请求体中的 messages 字段应包含触发工具调用的自然语言指令。

5. 检查 API 返回的 JSON 响应。若一切顺利,响应中将包含 "tool_calls" 字段,表明 Agent 已识别指令并成功调度相应本地工具执行。

通过 Unix Domain Socket 使用 ACP 协议调用已注册的本地工具

对于追求极致性能、需零网络延迟的本地集成场景(如嵌入 CI/CD 流水线或高频定时任务),通过 Unix Domain Socket 使用 ACP (Agent Communication Protocol) 协议是理想选择。此方式要求 Hermes Agent 进程已启动并加载了所需工具模块。

操作流程如下:

1. 确保 Hermes Agent 正以 ACP 模式运行。启动命令通常包含 --mode acp 参数。

2. 查看 Agent 启动时的日志输出,找到其创建的 socket 文件路径。此路径通常固定,例如 /tmp/hermes-acp.sock

3. 在 Python 脚本中,使用标准 socket 模块连接至此 socket 文件路径。连接建立后,即可通过发送二进制协议帧与 Agent 通信。

4. 构造 ACP 协议帧时,需正确设置消息头。将 type 设置为 "tool_invoke",并在 payload 中完整提供工具名(tool_name)、调用参数(arguments)及会话ID(session_id)等信息。

5. 发送请求后,等待并接收 Agent 返回的响应帧。解析响应帧中的 status 字段,它将明确指示调用结果为 "success""error"。若成功,可从 result 字段提取工具执行的具体内容。

利用 Hermes Agent CLI 子进程调用并解析标准输出

最后一种方式最为轻量,几乎无任何依赖。它不要求安装 SDK,也无需预先启动服务,非常适合执行一次性、低耦合的自动化任务。但其缺点是无法实时获取工具执行的中间状态,只能等待最终结果。

实施思路如下:

1. 准备一个临时的 YAML 配置文件片段。在文件中指定模型相关配置,例如将 model.provider 设为 ollama,model.name 指向本地已部署的模型(如 qwen2.5:7b)。

2. 将此配置文件保存为 temp_config.yaml,并通过环境变量 HERMES_CONFIG_PATH 让 Hermes Agent 在运行时加载它。

3. 构造一条完整的命令行指令。示例:hermes chat --session-id auto --message "执行命令:df -h"。此指令将触发一次完整的聊天会话并执行指定操作。

4. 在 Python 脚本中,使用 subprocess.run 执行此命令行。关键参数设置为:capture_output=Truetext=True,以捕获命令执行后打印到标准输出(stdout)的所有文本。

5. 对捕获的输出文本进行正则表达式匹配,寻找以特定标记(例如 TOOL_RESULT:)开头的行。此行之后的内容即为本地工具执行后返回的最终结果,可提取用于后续处理。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。