5.2 工具执行流水线

本节介绍工具从被调用到返回结果的完整执行过程,包括6个关键阶段、流水线的实现细节、进度报告机制和并发执行策略,并通过实例代码展示如何构建一个可靠的工具执行系统。

5.2.1 执行流水线的完整过程

工具从被调用到返回结果的完整流程可以分为以下6个阶段:

图 5-2:工具执行流水线的6个阶段

5.2.2 完整的执行流水线实现

工具执行流水线的实现可以分为四个主要部分:初始化和主流程、验证阶段、执行和结果处理、以及缓存管理。

第一部分:流水线初始化与主流程

首先定义执行流水线的主体和6个阶段的总体流程:

设计说明:主流程采用“早期返回”(Early Return)模式。任何阶段失败都立即返回错误,避免继续执行。这提高了效率并简化了错误处理。

第二部分:验证阶段(工具发现、权限检查、输入验证)

这部分处理执行前的三个验证阶段:

设计说明:验证阶段按顺序执行,逐步变严格。工具发现最快,然后是权限检查,最后是复杂的输入验证。这样可以快速拒绝无效请求。

第三部分:执行和结果处理(工具执行、结果处理、持久化)

这部分处理核心的执行逻辑和结果的后处理:

设计说明_execute_tool 使用 asyncio.wait_for 实现超时控制,防止卡顿。_process_result 对大结果进行截断,确保不超过最大大小限制。这两个措施都是保护系统稳定性的关键。

第四部分:执行历史和缓存管理

最后是查询执行历史和清理缓存的工具方法:

5.2.3 进度事件流

支持长时间运行的工具的进度报告:

5.2.4 并发工具执行

具体实现如下:

5.2.5 本节小结

工具执行流水线的设计决定了系统的可靠性和性能:

  1. 6 个执行阶段 清晰分离,每个阶段有明确的职责和错误处理

  2. 权限检查 在执行前进行,防止未授权的操作

  3. 输入验证 基于 JSON Schema,确保工具收到有效参数

  4. 超时控制 防止工具阻塞整个系统

  5. 结果处理 包括序列化、截断、缓存,处理大结果的问题

  6. 执行历史记录 支持审计和调试

  7. 并发执行进度报告 支持长时间运行的工具

最后更新于