面试官你好,这道题问的是大模型[[智能体]]的工作原理,我觉得本质上它是在问:怎么让大模型从一个只会回答问题的聊天机器,变成一个能自主执行任务的智能体。这不是简单的套壳,而是一整套架构设计。
我理解Agent的核心就是感知-思考-行动的循环。模型拿到环境输入后,先思考,再决定行动,然后观察反馈,再思考下一步。这个循环里最关键的范式是 [[ReAct]],它把推理和行动交织在一起。传统[[CoT]]模型只推理不行动,信息是封闭的;ReAct每一步都输出思考,然后决定是调用工具还是直接给出答案。你可以想象成,模型不再是闷头想,而是不断问自己“我现在需要查什么”,查完再想下一步。
具体到实现,核心机制是 [[Function Calling]]。模型输出一个结构化的调用指令,比如{"name": "search", "arguments": {"query": "..."}},系统执行这个函数,把结果回填给模型,模型再继续推理。这个流程看似简单,但落地时有个坑:模型可能[[幻觉]]出不存在函数,或者参数格式错。所以上线前我会特别关注两件事,一是函数定义要写得极其清晰,description要写透,二是做一轮严格的格式校验,格式不对直接重试,避免把乱数据喂给下游。
再说记忆和规划。短期记忆就是上下文窗口,但长期记忆得靠 [[Vector Database]] 存历史信息或知识。规划这块,单Agent做任务分解,比如把“写一份市场分析报告”拆成“搜索数据、分析趋势、生成报告”几步。多Agent的话,可以角色分工,一个规划者拆任务,一个执行者干活,一个验证者检查,有点像一个小团队。
举个例子,客服退款场景。用户说“我上个月买的衣服没收到,要退款”。如果是[[RAG]],它就搜一下退货政策,然后回复。但Agent会这样跑:先调订单查询工具,发现确实没收到,再调物流工具看状态,如果物流显示已签收,它可能再调客服备注工具查有没有异常,最后综合判断是补发还是退款。每一步都调用不同工具,观察结果再决策。
所以Agent和 RAG 的边界很清楚。RAG适合单次检索加生成的知识问答,比如问“退货政策是什么”,它没有决策能力,只是被动响应。Agent适合复杂任务执行,比如刚才那个退款案例,需要多轮工具调用和主动规划。但真正落地时,我常常两者一起上,比如先用RAG获取知识,再用Agent做决策执行。
最后我说一下我的取舍。我更倾向把Agent看作一个编排层,而不是一个模型能力问题。模型本身是底座,关键是控制循环、工具定义、记忆管理这些工程设计做得好不好。如果这些做不好,模型再强也容易跑偏。所以我会把Agent看成是系统工程,核心是让模型在可控范围内自主行动。
另外,现在有个趋势是把Agent和RAG融合成 [[Agentic RAG]],让Agent动态决定什么时候检索、检索什么,而不是固定走检索再生成。这块我觉得会是下一阶段的重点,但实现起来对模型的推理能力和工具调用的稳定性要求更高。