智能体架构与决策循环

Agent architecture and decision loops

智能体(Agent)与智能体系统(Agentic AI)能够利用大语言模型的推理能力,自主决定采取什么行动、调用哪些外部工具以及何时终止任务。相比固定流程的常规 LLM 应用,智能体具备更高的灵活性,但工程开发与可靠性保障的难度也明显更高。本课介绍智能体的核心架构、决策循环机制,以及如何借助 LangGraph 等编排框架构建更可靠的智能体系统。

什么是 AI 智能体?

简言之,AI 智能体是由 LLM 动态决定控制流(Control Flow)的应用系统。传统 LLM 应用通常遵循预先硬编码的固定步骤(例如前几个 Sprint 构建的基础 RAG 系统,每次请求都固定执行“先检索文档 → 再由 LLM 阅读并作答”);而智能体则可以根据用户输入与当前上下文,自主推理并选择下一步动作,按需调用外部工具或 API,在无需人类逐步干预的情况下围绕目标动态组织工作流。

智能体的两项核心特征是自主性与推理能力:它能够处理条件分支决策,按需调用外部函数,并持续迭代直至达成目标。

智能体决策循环(Think–Act–Observe)

驱动智能体自主完成多步任务的核心机制,是持续运转的 Think–Act–Observe(思考—行动—观察) 循环:

  1. 思考(Think):模型综合当前上下文窗口中的全部信息(包括用户原始请求、对话上下文、历史交互记忆以及前序步骤的执行结果),分析当前态势并判断下一步动作。在此阶段,模型会在内部推演可用的工具选项与解题路径。
  2. 行动(Act):模型根据思考结果做出选择——既可以发起外部工具调用(如调用搜索 API、计算器或数据库查询,并由 LLM 组装所需调用参数),也可以在判定现有信息已充足时直接生成最终回答并返回给用户。
  3. 观察(Observe):当执行了外部工具调用时,系统捕获工具返回的结果(如搜索摘要或计算输出),将其写入当前状态(State)或记忆中;模型随后检视新增信息,评估是否更接近目标或已足以作答。

观察所得的信息进入下一轮思考,循环继续。智能体持续执行思考 → 行动 → 观察,直到判定目标完成,或继续行动已无足够价值。

观察阶段获取的新信息会进入下一轮“思考”,推动循环继续运转,直至智能体判定目标已完成或继续执行已无必要。凭借这一循环机制,同一个智能体即可应对多样化的复杂意图(例如先决定查询数据库 → 调用搜索工具 → 观察返回数据 → 结合新上下文决定调用第二个工具 → 最终汇总作答)。

以下伪代码展示了基本的决策循环结构:

Python
state = {"messages": [{"role": "user", "content": user_question}]}
while True:
    # 1. 思考:LLM 决定下一步
    output = LLM(state)  # 将 state 中的对话与历史提供给 LLM
    if output.indicates_tool_use:
        tool_name, tool_input = parse_tool_call(output)
        # 2. 行动:执行选定工具
        tool_result = call_tool(tool_name, tool_input)
        # 3. 观察:将工具结果加入 state
        state["messages"].append({"role": "tool", "content": tool_result})
        # 带着 state 中的新信息继续循环
    else:
        # 输出为最终答案时结束
        answer = output.final_answer
        break

print("Agent's answer:", answer)

这种推理循环使智能体能够将单次 LLM 调用无法解决的复杂任务拆解为多个小步骤,按需补充外部信息,非常适合多跳问答、工具增强推理以及“后续动作取决于中间结果、无法预先写死执行路径”的场景。

重要提醒:随着智能体通用性与自由度的提高,复杂任务上的整体可靠性往往更难保障;当推理循环轮数拉长时,最终达成预期目标的准确率也可能随之下降,工程上需结合具体任务严格开展评估。

LLM 智能体的主要组成

上述智能体需要工具、记忆和 LLM 推理引擎共同工作。架构图中也经常出现规划组件;许多实现将模型逐步推理视为规划,并加入最大思考轮数等限制。

模型在每一轮循环中负责形势判断与动作决策,系统表现高度依赖模型自身的推理能力,以及提示词能否引导模型严格按预期格式输出指令(例如提示:“你是一个可以使用工具的 AI 智能体。需要时,请按 [TOOL_NAME]: [INPUT] 输出行动;否则直接回答问题”)。若自行实现工具调度,可通过 Pydantic 模型定义包含调用指令的结构化输出;目前大多数现代 LLM 也已原生支持 Tool Use(即上一 Sprint 介绍的 Function Calling),可直接返回结构化的工具调用请求。

工具是供智能体调用的外部函数或 API(如网页搜索、数据库查询、算术计算、代码执行器、天气接口或业务自定义 API),用于获取外部实时信息或执行纯文本生成无法完成的动作,扩展模型训练知识之外的能力边界并有助于减少事实幻觉。LLM 会根据用户需求与中间结果自主决定是否调用工具、何时调用以及传入什么参数(例如遇到算术题调用计算器、询问近期新闻调用搜索接口),工具的执行输出则作为下一轮的“观察”内容。

工具接口的定义质量直接影响调用成功率:必须清晰描述每个函数的用途、参数含义及预期返回格式。主流 LLM 编排框架均内置了工具注册、执行调度与结果回传机制,可大幅减少手写胶水代码的工作量。

智能体需要在单次任务的多轮循环之间、乃至跨会话之间保留上下文信息,主要分为两类:

  • 短期记忆(工作记忆):在单次任务或查询生命周期内维护的临时信息,例如上述伪代码中 state["messages"] 不断累积的对话历史与工具观察结果。每一轮循环都将前序步骤的尝试记录与返回结果带入提示词,避免模型重复执行相同动作;任务结束后即可重置。
  • 长期记忆:跨独立会话长期持久化保存的信息(如用户在历史对话中透露的偏好事实或上周发生的业务事件),通常借助向量数据库或专用记忆服务存储并按需检索。在需要与同一用户长期交互或多智能体反复协作的场景中,长期记忆尤为关键。
图 1 · Agent的核心、记忆、规划与工具
LLM与控制器形成Agent核心,并连接记忆、规划和工具。

记忆管理需要在保留关键历史信息与控制上下文窗口占用之间做好平衡(例如对久远事件做摘要压缩或按需检索,后续章节将专门展开)。

规划是指针对复杂目标制定多步执行方案的能力。许多智能体直接在每轮“思考”步骤中进行隐式规划;也有部分架构将规划独立为前置步骤(例如 Deep Research 类智能体先生成完整报告大纲与子任务列表,再交由子智能体分头检索研究)。无论采用隐式还是显式规划,系统都必须明确界定何时结束规划转入行动,以及何时终止整个循环。

当智能体判定信息充足或任务已完成时,通常会通过特定结束标记(如将 Pydantic 结构中的完成标志字段设为 True)输出最终答案并退出循环。在工程实现中,必须合理配置停止条件与最大循环轮数上限,防止智能体陷入死循环或过早退出。

LLM 智能体由能够推理与决策的模型、可选工具、保存历史的记忆或状态,以及连接这些组件的决策循环组成。本周将深入研究各个部分。

智能体架构与常见模式

智能体系统设计模式将在下一周进一步讨论。本节介绍主要面向单个智能体的高层架构。

交给 LLM 的控制范围可以不同。最简单的形式只做一次决策;更复杂的形式处理多个步骤与分支。常见模式包括:

控制范围最小的形式,每轮请求仅由 LLM 做一次分类或路由选择,随后立即结束决策。例如,LLM 分析用户提问后,决定是直接作答,还是将请求转发给专门的 RAG 子链路。由于仅在预定义的有限分支中二选一或多选一,输出结构高度确定,易于控制和解释。

ReAct 与工具智能体。更通用的架构支持多步骤决策和工具调用。ReAct(Reason + Act)让 LLM 结合推理与行动完成任务。例如,模型判断需要搜索 X 的相关信息,并产生搜索调用;系统执行后返回观察结果,模型继续循环。ReAct 使模型输出既包含推理内容,也能包含系统可执行的行动。现代智能体常在显式或内部实现中采用这种方式。

这与前面的决策循环基本一致:LLM 获得连续决策能力,按需要使用多个工具,并利用记忆追踪已完成步骤和任务数据。它支持比单轮回答更灵活的动态问题求解。

图 2 · Agent规划与工具执行循环
模型形成计划,调用工具并接收输出,再决定下一步;图中给出最多k次的循环限制。

3. 自我反思与纠正(Reflection / Reflexion)

图 3 · 反思与回答改进循环
反思步骤
LLM 根据已有回答产生改进后的回答。
改进循环
改进后的回答可以再次进入反思步骤,最多循环 k 次。
初始回答进入反思步骤,改进后的回答可再次进入反思,达到终止条件后返回用户。

多智能体系统。高级场景中,多个智能体可以合作或分工,例如一个负责规划,另一个执行,或并行处理不同子任务。各智能体通常仍有自己的循环,通过共享记忆或协调器通信。它适合 Deep Research 等复杂工作流。本周不深入多智能体配置,但这是值得关注的发展方向。

在架构选型时,需在 LLM 自主灵活性与系统确定性约束之间权衡:单步路由与受限工具调用更可控、易调试,而高自由度的多步智能体虽能应对复杂开放任务,行为却更难预测。利用 LangGraph 等现代编排框架提供的状态图抽象,可以更规范地落地上述模式并实施边界控制。

只读知识助手的决策循环

在课程企业知识助手中,将决策循环明确限定为 search_knowledge、check_citations 与 answer 三类受控步骤,并配置硬性的最大调用轮数与总超时时间。模型发起工具调用请求后,后端执行层必须逐一校验工具名称、参数结构与当前用户身份;一旦遇到未知文档类型、用户权限已撤回或检索材料依据不足等情况,立即转入明确的终止分支返回说明,不再继续循环。

练习:记录本课所用配置、输入、预期结果与失败分支,并用脱敏数据复现。

搜索课程

正在加载课程目录…