Agent 工作流模式

Agent 工程的重点是控制任务如何推进。不要把所有事情交给一个无限循环的 Agent。更可靠的做法是把任务拆成明确的状态、工具、检查点和退出条件。

从 Chatbot 到 Workflow

Chatbot:

user -> model -> answer

带工具的 Agent:

user -> model -> tool -> observation -> model -> answer

可生产化 workflow:

user
  -> route
  -> retrieve / plan / act
  -> validate
  -> human approval if needed
  -> final answer
  -> trace and eval

常见模式

1. Router

先判断任务类型,再走不同链路。

question
  -> classify intent
  -> FAQ answer / RAG / tool call / human handoff

适合:

关键点:

2. ReAct

模型交替进行思考、行动和观察。

Thought -> Action -> Observation -> Thought -> Final

适合:

风险:

工程约束:

3. Plan and Execute

先生成计划,再逐步执行。

goal -> plan -> execute step 1 -> execute step 2 -> validate -> final

适合:

关键点:

4. Evaluator-Optimizer

一个模型生成结果,另一个模型或规则评估并要求修改。

draft -> evaluate -> revise -> evaluate -> final

适合:

注意:

5. Human-in-the-loop

高风险动作进入人工确认。

agent proposes action -> human approves/rejects -> tool executes

适合:

6. Multi-agent

多个专门角色协作。

适合:

不适合:

状态设计

Agent workflow 要显式保存状态:

{
  "task_id": "task-001",
  "user_goal": "整理本周会议纪要",
  "current_step": "retrieve_minutes",
  "messages": [],
  "tool_results": [],
  "approved_actions": [],
  "errors": [],
  "final_status": "running"
}

状态的作用:

退出条件

每个 workflow 都要定义停止条件:

没有退出条件的 Agent 很容易浪费成本或产生危险动作。

Mermaid 示例

flowchart TD
    A[User request] --> B[Classify task]
    B -->|Knowledge question| C[RAG retrieve]
    B -->|External action| D[Prepare tool call]
    B -->|Unclear| E[Ask clarification]
    C --> F[Draft answer]
    D --> G{Risky action?}
    G -->|Yes| H[Human approval]
    G -->|No| I[Execute tool]
    H --> I
    I --> F
    F --> J[Validate]
    J -->|Pass| K[Final answer]
    J -->|Fail| C

框架选择

需求 选择
学习工具调用 直接用模型 SDK
简单 Agent demo smolagents、LangChain Agent
复杂状态和人工介入 LangGraph、LlamaIndex Workflows
企业观测和评估 LangSmith、Langfuse、Arize Phoenix 等

框架不是前置条件。先把状态、工具和评估想清楚,再选框架。

常见错误

让 Agent 自由规划所有步骤

修复:把高层流程写成状态机,模型只在局部节点做判断。

没有记录中间状态

修复:保存每次模型输入输出、工具参数、工具结果、错误和成本。

Multi-agent 过早

修复:先用单 workflow 跑通,再拆分角色。

没有评估每个节点

修复:分别评估路由、检索、工具参数、最终答案。

下一步

参考资料