数据截至 (上游 commit 460c729002dc)
第 5 章 · 工具、记忆、工作流与对外托管
本章讲什么: 前四章讲的是 agent 怎么想。这一章讲它周围的四类基础设施:工具怎么定义和执行、记忆有哪几种策略、多步/多 agent 怎么编排、跑好的 agent 怎么对外提供服务。当作模块速查读。
5.1 工具:一条固定的执行流水线
定义一个工具需要三样东西
# python/beeai_framework/tools/tool.py:62-75 抽象成员
name: str # 工具名
description: str # 给模型看的说明
input_schema: type[BaseModel] # pydantic 入参模型
加上一个 _run(input, options, context) 就完事了。
每次调用固定走这条流水线
Tool.run(tools/tool.py:117-190)不可改写,顺序是:
入参(dict 或模型)
▼
① pydantic 校验 ── 失败 → ToolInputValidationError
▼
② 进 Retryable 包装
▼
③ 发 start 事件 ←── 中间件可在这里短路(第 4 章)
▼
④ 查缓存(命中直接返回)
▼
⑤ 真正执行 _run
▼
⑥ 写缓存 → 发 success → finally 发 finish
错误路径也定义得很细:on_error 先发 error 事件,若是致命错误就立刻上抛不再重试(tool.py:142-150);on_retry 发 retry 事件。缓存键由入参 + 选项算出,并刻意剔除 signal 和 retry_options(tool.py:102-106)——这两个不影响结果,不该参与键计算。