Skip to content
目录

工具系统与 Agent 实现

Tool 把外部能力(API、DB、代码执行)以 schema + 函数 暴露给模型;Agent 在「模型 ↔ 工具」间循环,直至产生最终答案或达步数上限。


1. 工具设计

要素说明
name / description供模型选择
schemaZod / JSON Schema 定义参数
invoke实际执行,返回 string 或可序列化对象

StructuredTool 统一校验参数;错误应返回可读信息供模型自我修正。


2. Agent 形态演进

形态特点
经典 ReAct 链Prompt + Model + Tool 解析,链式
LangGraph Agent显式图:节点 agent / tools,边条件路由
预构建 createReactAgent封装常见图

新项目优先 LangGraph(见 07、langgraphjs)。


3. 执行流程(ReAct 语义)

mermaid
flowchart LR
  M[Model] -->|tool_calls?| T[Tools]
  T -->|ToolMessage| M
  M -->|最终文本| End[结束]
  • 模型决定是否调工具。
  • 工具结果作为 ToolMessage 塞回历史。
  • 限制 maxIterations 防死循环。

4. 条件路由

LangGraph 中 toolsCondition:有 tool_calls → tools 节点,否则 → END。


5. 中间件(Middleware)

在模型调用前后注入:改 prompt、审计、限流、注入 RAG 上下文。
LangChain v1 Agent API 以 middleware 链扩展行为(具体 API 以当前版本文档为准)。


6. 状态管理

Agent 状态常含 messages: BaseMessage[];更新用 append reducer(LangGraph Annotation)。
Zustand 无关,是图内 channel 状态。


7. 结构化输出 Agent

终态要求 JSON 时:responseFormat + 解析节点,或专用 tool「提交答案」。


8. 流式

stream 可逐 token + 工具开始/结束事件;UI 分别展示思考与工具日志。


9. 实践

  • Tool description 写清何时用、何时不用。
  • 危险操作加人工确认(LangGraph interrupt)。
  • 工具超时与 AbortSignal 绑定。

10. 总结

Tool = 模型可调用的函数;Agent = 带循环的 Runnable/图;复杂控制流用 LangGraph,勿手写无限 while。

MIT License.