这是一个非常核心的架构问题。答案并不是非黑即白的,而是取决于智能体的具体设计模式

简单来说:

  1. 在“标准思维链”中:步骤分解完全由大模型(LLM)动态生成。引擎只负责传递提示词。
  2. “结构化智能体(如 ReAct/Planner)”中步骤的框架和流程控制智能体引擎硬编码定义,但每一步的具体内容和逻辑判断大模型填充。

为了让你彻底理解,我们将通过两个具体的场景示例来对比这两种模式。


模式一:标准思维链 (Standard CoT)

—— 步骤由大模型自主“想”出来

在这种模式下,智能体引擎非常“懒”,它只负责在 Prompt 里加一句“请一步步思考”,然后剩下的全交给大模型。引擎不知道中间有几步,也不知道每一步是什么,它只等待最终结果。

  • 步骤来源100% 大模型
  • 引擎角色传声筒(只负责发送问题和接收答案)。
🟢 示例:解决数学应用题

用户提问“罗杰有 5 个网球,买了 2 筒(每筒 3 个),送了朋友 4 个,剩几个?”

1. 智能体引擎的操作
引擎只是简单地把问题和一个“魔法咒语”拼在一起,发送给大模型。

python

# 引擎代码逻辑
prompt = user_question + "\n让我们一步一步思考。"
response = llm.generate(prompt)
print(response)

2. 大模型的内部处理(步骤分解发生在这里)
大模型接收到指令后,利用其训练数据中的逻辑能力,自主决定如何拆解问题。它可能决定分 3 步,也可能分 5 步。

  • 模型自言自语(生成步骤)
    • “第一步,我要先算买了多少个:2 乘以 3 等于 6。”(模型自己决定的步骤 1)
    • “第二步,我要算总数:5 加 6 等于 11。”(模型自己决定的步骤 2)
    • “第三步,我要减去送人的:11 减 4 等于 7。”(模型自己决定的步骤 3)
    • “答案是 7。”

3. 结果
引擎直接拿到了一整段文本。引擎无法干预中间的步骤,如果模型第一步算错了,引擎也不知道,只能跟着错。

比喻:就像你问一个学生:“这道题怎么做?”学生自己在草稿纸上画图、列式子(步骤由学生自主决定),最后告诉你答案。老师(引擎)只看结果,不看过程。


模式二:结构化智能体 (Structured Agent / ReAct / Planner)

—— 框架由引擎定,内容由模型填

在复杂的智能体系统中(例如需要调用搜索、代码解释器、数据库时),不能让模型自由发挥,否则它会胡乱调用工具。这时,智能体引擎强行规定步骤的类型循环逻辑

  • 步骤来源混合模式
    • 步骤的“骨架”先思考、再行动、再观察):由智能体引擎代码硬编码定义
    • 步骤的“血肉”(具体思考什么、调用哪个工具):由大模型生成。
  • 引擎角色指挥官 + 监工(控制流程跳转,强制执行工具)。
🔵 示例:查询天气并计算温差

用户提问:“查一下北京和上海今天的最高温,算算温差是多少?”

1. 智能体引擎的操作(定义流程骨架)
引擎启动一个 While 循环,强制规定必须遵循 Thought -> Action -> Observation 的流程。

python

# 引擎代码逻辑 (伪代码)
while not finished:
    # 1. 让模型思考下一步做什么
    thought = llm.generate(context + "请思考下一步该做什么?")
    
    # 2. 引擎解析模型的输出,提取动作
    action = parse_action(thought) 
    
    # 3. 【关键点】引擎强制执行动作,模型不能自己瞎编结果
    if action == "search_weather":
        observation = weather_api.get(city) # 引擎调用真实 API
    elif action == "calculate":
        observation = python_interpreter.run(code) # 引擎调用计算器
    
    # 4. 把结果喂回给模型,进入下一轮
    context.append(observation)

2. 交互过程(步骤分解是协作完成的)

  • 第 1 轮

    • 引擎:要求模型输出 Thought 和 Action
    • 大模型(填充内容):Thought: “我需要先知道北京的气温。” -> Actionsearch_weather(Beijing)
    • 引擎(接管控制):看到模型想查天气,立刻拦截,调用真实的天气 API,得到“北京 25℃”。引擎把这个结果作为 Observation 存入上下文。
    • (注意:这里“查天气”这个步骤的执行权在引擎,模型不能直接编造气温)
  • 第 2 轮

    • 引擎:再次要求模型输出。
    • 大模型(填充内容):Thought: “知道了北京是 25℃,现在我需要查上海的。” -> Actionsearch_weather(Shanghai)
    • 引擎(接管控制):调用 API,得到“上海 30℃”。
  • 第 3 轮

    • 引擎:再次要求模型输出。
    • 大模型(填充内容):Thought: “现在我有两个数据了,需要计算温差。” -> Actioncalculate(30-25)
    • 引擎(接管控制):调用计算器,得到“5”。
  • 第 4 轮

    • 大模型Thought: “计算完成。” -> Final Answer: “温差是 5℃。”
    • 引擎:检测到结束标记,停止循环。

3. 结果
步骤的流转顺序(查北京->查上海->计算->回答)是由模型的决策触发的,但步骤的执行边界和工具调用是由引擎严格锁定的。如果模型试图跳过查询直接编造气温,引擎会因为没有 API 返回值而报错,或者通过 Prompt 约束禁止模型编造。

比喻:就像工厂流水线。

  • 工程师(引擎)规定了流程:必须先切割,再焊接,再质检(这是引擎定的骨架)。
  • 工人(大模型)决定:这块钢板切多长、焊缝怎么焊(这是模型填的内容)。
  • 如果工人想跳过焊接直接质检,工程师(引擎)会立刻拦住他,因为流水线程序不允许跳过这一步。

三、深度对比总结表

表格

维度标准思维链 (Standard CoT)结构化智能体 (ReAct / Planner)
步骤分解者大模型 (完全自主,想分几步分几步)混合 (引擎定框架/类型,模型定具体内容)
可控性 (模型可能跑题、死循环、幻觉) (引擎可强制中断、重试、限制工具)
外部交互 (模型只能靠内部知识瞎编或模拟) (引擎负责真实调用 API/数据库)
适用场景数学题、逻辑推理、写作、常识问答自动化任务、搜索增强、复杂工作流、代码执行
错误处理难处理 (一旦中间步错了,后面全错)易处理 (引擎可捕获异常,让模型“反思”并重试)
代码复杂度极低 (一行 Prompt)高 (需要状态机、解析器、循环控制)

四、结论

  • 如果你只是在聊天窗口里问大模型一道数学题,看到的“第一步、第二步...”完全是大模型自己生成的
  • 如果你在使用一个能帮你订票、查数据、写代码的AI 智能体(Agent),那么它的步骤分解是“大模型的大脑” + “智能体引擎的骨架”共同作用的结果:
    • 大模型负责“决策”(下一步该干嘛?)。
    • 智能体引擎负责“控场”(确保它按规矩干,并帮它真正把手伸出去干活)。

未来的趋势是两者结合:用大模型的灵活性来生成动态的计划(Planner),用智能体引擎的严谨性来验证和执行这些计划(Executor),从而实现既聪明又可靠的智能系统。

更多推荐