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.