真实面经题目 · 原创解析
ReAct 的思考-行动-观察循环如何驱动 Agent 工具调用,和普通 CoT 有什么区别?
这题考的是候选人是否理解 ReAct 把模型推理和外部行动交织起来:模型不是一次性输出答案,而是在思考、选择工具、观察结果、继续推理的闭环中逐步完成任务;它和普通 CoT 的关键区别是能通过工具调用改变外部状态并用真实观察修正推理。
真实面经题目 · 原创解析
这题考的是候选人是否理解 ReAct 把模型推理和外部行动交织起来:模型不是一次性输出答案,而是在思考、选择工具、观察结果、继续推理的闭环中逐步完成任务;它和普通 CoT 的关键区别是能通过工具调用改变外部状态并用真实观察修正推理。
ReAct 可以理解为 Reasoning and Acting 的 Agent 控制范式。普通 CoT 更像让模型在内部写出一段推理过程,然后直接给答案;ReAct 则把任务拆成多轮“思考、行动、观察”的循环:模型先根据用户目标和当前上下文判断下一步要做什么,输出一个工具调用或动作;运行时执行这个工具,比如搜索、查数据库、调用业务 API、读文件或提交表单;工具返回观察结果后,模型再基于真实结果继续推理,决定下一步调用哪个工具,直到满足停止条件并生成最终答案。工程上 ReAct 的价值是让 Agent 能处理需要外部信息、状态变化和多步决策的任务,而不只靠模型记忆。和普通 CoT 相比,它更强调可执行动作、工具 schema、观察反馈、错误恢复和循环控制。落地时要设计工具白名单、参数校验、权限边界、最大步数、超时、幂等、审计日志和人工确认,防止模型陷入循环、误用工具或执行危险操作。
ReAct 的核心不是让模型多想几句,而是让推理结果可以转化为外部动作。模型根据当前任务形成下一步计划,选择一个工具并给出参数,系统执行后把观察结果放回上下文,模型再继续决策。这使 Agent 能利用实时数据和业务系统。
思考阶段判断目标、缺口和下一步;行动阶段调用工具或执行命令;观察阶段接收工具结果、错误、空结果或权限反馈。下一轮不是从原问题重新开始,而是把观察作为新证据,修正之前的假设和计划。
工程系统不会让模型随便输出自然语言动作,而是提供函数名、参数 schema、描述、权限和返回格式。模型选择工具时必须生成可校验的结构化参数,运行时负责验证、执行、捕获异常并把结果摘要回传给模型。
普通 CoT 主要是内部推理增强,无法主动获得新事实,也不能改变外部系统状态。ReAct 则允许模型边推理边查证、边执行边修正,所以适合信息不完整、需要查库、调用服务、操作系统或多步工作流的问题。
工具返回的数据可能证明上一轮假设错误,也可能暴露参数不完整、资源不存在、权限不足或外部服务失败。好的 ReAct Agent 会根据观察结果选择重试、换工具、缩小查询、请求确认或停止,而不是机械继续调用同一个工具。
ReAct 循环如果没有边界,容易陷入反复搜索、反复调用或无意义修正。系统应设置最大步数、最大工具调用次数、总超时、成本预算、完成判定和失败出口。当已经有足够证据回答时,要停止工具调用并输出最终结果。
真实业务 Agent 需要工具权限控制、参数校验、幂等键、危险操作二次确认、敏感数据脱敏、审计日志和沙箱隔离。模型负责决策,但运行时负责执行边界,不能把安全性完全交给提示词。
评估 ReAct 不能只看最终答案,还要看是否选对工具、参数是否正确、调用次数是否合理、是否能从错误中恢复、是否遵守权限和是否按时停止。过程日志是调试和改进 Agent 的核心资产。
Function calling 是模型输出结构化工具调用的一种接口能力,ReAct 是更高层的控制模式。ReAct 可以用 function calling 来实现行动阶段,但还需要观察回传、循环控制、停止条件和错误恢复。
一般不需要暴露完整内部推理。产品上可以展示简洁的进度、调用了什么工具、查到了什么结果和最终依据,但不应把冗长的内部思考直接作为用户内容。
先区分参数错误、空结果、权限不足、超时和服务异常。参数错误可以修正后重试,空结果可以换查询方式,权限不足应停止或请求授权,服务异常要有限次退避重试,超过预算后给出明确失败原因。
工具要分权限等级,危险操作默认需要用户确认或审批;参数要做白名单和业务校验;执行要有幂等和回滚设计;审计日志要记录谁发起、模型选择了什么、参数是什么、结果是什么。
适合需要多步查证和操作的场景,比如运维诊断、客服工单处理、数据查询、代码库分析、知识库问答和内部流程自动化。不适合简单固定规则接口,因为那类问题用普通服务编排更稳定、更便宜。