pydantic-ai — 本课题摘录
读了哪几篇: 01-agent-graph(三节点状态图)、03-output-and-end-strategy(结构化输出与收尾策略)。
其余两篇(工具与工具集、中间件与模型抽象)本轮没读。
这一家在本课题里的位置:它把"裸 while 会越加越乱"这件事说得最直白,并给了一个不用上图引擎的替代解。
它对本课题回答了什么
决定四:为什么不用裸 while —— 把"下一步"变成返回值
它自己给的理由:循环本质就是个 while,但有 一堆中途出口——token 超了、要人审批、工具要延迟执行、流式要能中断恢复——写成裸 while 会越加越乱。
它的解法不是上一个图引擎那么重,而是:把循环拆成节点,每个节点跑完返回"下一个节点"或"结束"。 (依据:前沿库 · Pydantic AI · 三节点状态图 —— 把循环拆成节点,节点 run() 返回「下一个节点」或 End,于是「下一步是什么」是显式的返回值,可被外部一步步驱动)
连带好处:因为"下一步"是返回值,外部可以逐节点驱动、逐节点观察。 调试时能一步步看图怎么流转。
三个节点:
| 节点 | 干什么 |
|---|---|
| 拼输入 | 把"一句话 / 一段历史+新问题 / 带工具结果来续跑"统一成一条待发的请求 |
| 调模型 | 把历史 + 工具定义 + 输出格式打包发出去 |
| 处理工具调用 | 整张图的分岔点:结束,还是再问一轮 |
节点之间不传一大包参数,而是改同一份状态。 状态里装"这次运行会变的东西"(历史、用量、第几轮、重试已用),依赖里装"运行期固定的配置"(模型、工具管理器、输出格式、收尾策略)。 (依据:前沿库 · Pydantic AI · 三节点状态图 —— 所有节点共享一份 GraphAgentState(会变:历史/用量/run_step/重试计数)与一份 GraphAgentDeps(固定:模型/工具管理器/输出 schema/end_strategy))