Skip to main content

工作流工具

工作流工具允许智能体在一次智能体运行期间调用已部署的工作流端点变体。

概述

当智能体需要把任务的一部分交给已有的工作流处理时,请添加工作流工具。Fetch Hive 会将工作流作为普通的工作流运行启动,因此它会拥有自己的请求 ID、工作流运行 ID、工作流日志和步骤追踪。父智能体也会将该调用记录为智能体工具 span,工作流追踪在智能体运行追踪中嵌套在该工具调用下。 工作流工具使用所选工作流端点变体的最新活动版本。工具输入模式由工作流的起始输入声明生成,因此模型可以传入与工作流通过 API 调用所期望的相同顶层输入。

如何添加工作流工具?

  1. 在智能体编辑器中打开父智能体。
  2. 点击编辑器顶部的添加工具按钮。
  3. Workflow Tools 中选择一个已部署的工作流端点和变体。
  4. 输入模型应当看到的工具名称和描述。
  5. 保存该工具。
工作流端点和变体必须与智能体属于同一工作区。工具名称在智能体的 MCP 工具、工作流工具和子智能体之间必须唯一。

智能体如何在不逐个绑定的情况下发现工作流?

在智能体设置中,工作流目录控制智能体是否可以自行列出并运行工作区工作流:
  • — 智能体只使用你单独绑定的工作流工具。
  • 显式 — 智能体只使用你已添加的具名工作流工具。它无法发现工作区中的其他工作流。
  • 全部已发布 — 智能体可以列出并运行工作区中每个处于活动状态的工作流部署,即使你没有把每一个都添加为工具。
选择 全部已发布 后,智能体可以调用 list_workflows 查看可用部署,然后调用 run_workflow 运行其中一个。已绑定的工作流工具仍然可以作为具名工具使用。 run_workflow 可以等待工作流完成(短时间运行使用 mode: syncauto),也可以在后台启动(mode: async)。需要人工暂停的工作流必须使用后台模式;当一次运行通常需要两分钟或更久时,也会自动使用后台模式。此时工具会返回 pending 状态,以便智能体回合可以结束。工作流完成后,智能体会在同一对话中跟进结果——你不必保持在线。

工作流在后台运行时,聊天里会显示什么?

在 Fetch Chat 和智能体编辑器的测试聊天中,后台工作流会显示为一张卡片,包含工作流名称、进行中指示,以及通常完成的时间。刷新页面后,卡片仍会保留在该对话中。工作流结束后,智能体会在同一对话中发送跟进消息。如果不再需要这次运行,请使用卡片上的 取消 如果你从自己的应用调用智能体且没有会话线程,后台工作流默认关闭,除非你主动开启:
  • 传入 thread_id,以便智能体在该对话中跟进,或
  • 传入 async.callback_url 以接收已签名的 agent.delegation.completed webhook,或
  • async.allow_background 设为 true,并轮询 GET /v1/agent/delegations/{id}
当一个回合启动了后台工作时,调用响应会包含 pending_delegations,其中有每个委派的 id、类型、目标和 expected_by。你可以用 POST /v1/agent/delegations/{id}/cancel 取消进行中的运行。用 GET /v1/agent/threads/{thread_id}/delegations 列出某次对话中未完成的后台工作。 回调请求使用与其他 Fetch Hive 回调相同的 HMAC 标头(X-Fetch-Hive-SignatureX-Fetch-Hive-TimestampX-Fetch-Hive-Webhook-Id)。请用该智能体的签名密钥进行验证。参见 回调投递与 Webhook 触发

会记录什么?

每次工作流工具调用都会创建两条相互关联的记录:
  • 一次普通的工作流运行,具有自己的请求 ID 和工作流运行 ID。
  • 一次父智能体工具调用,其元数据用于标识工作流工具和子工作流运行。
你可以像检查任何其他工作流调用一样,从工作流日志中检查子工作流。在智能体追踪中,父工具 span 名为 agent.tool.workflow,子工作流 span 附加在该 span 之下。

何时应使用工作流工具?

当被委派的工作已经建模为工作流时,使用工作流工具,尤其是当它包含多个确定性步骤、分支、集成或可重用的工作流专属日志时。当被委派的工作应由另一个拥有自己的指令和工具集的智能体处理时,使用子智能体。