我觉得这道题问的其实不是怎么搭一个花哨的[[Agent]],而是你怎么保证它在生产环境里稳定可用。说白了,大模型智能体系统,核心不是让模型更聪明,而是让整个系统更可靠。
我的设计思路是三层分离:感知层、认知层、执行层。先说感知层,它负责把[[多模态]]输入,文本、图像、语音,统一编码成模型能理解的表示,同时做意图识别和上下文管理。这里有个边界划分:如果输入全是结构化查询,比如订单号检索,那感知层可以很轻,甚至直接用规则路由;但如果是开放域对话,就得靠模型做语义理解,上下文窗口管理就特别重要,得动态压缩历史,不然窗口一满就丢信息。实际落地往往是两者结合,规则兜底,模型处理模糊情况。
认知层是核心,负责推理和规划。我支持多种推理范式,比如简单任务单步响应,复杂任务走 [[ReAct]] 或 [[Chain-of-Thought]] 多步推理。这里有个坑:规划深度不是越深越好。比如客服退款场景,用户说“我要退款”,如果直接调用退款工具,可能忽略订单状态、库存信息,导致执行失败。所以我加了反思机制:执行后自我评估,失败就重规划,并设置最大迭代阈值防止死循环。
执行层是工具调用的沙箱。我会用标准化的 [[Function Calling]] 接口,工具注册中心管理所有工具的 Schema。工具调用必须隔离执行,加超时控制和权限分级。比如企业 SOP 文档查询,只允许读操作,不允许改数据库。工具调用的权限白名单是安全底线,上线前必须审计。
记忆系统我分成短期和长期。短期用 [[Sliding Window]] 保存对话上下文;长期用[[向量库]]加结构化[[知识图谱]]双存储。向量库适合语义检索,知识图谱适合精确关系查询。比如用户问“上次那个退款订单怎么样了”,向量检索找到相关对话片段,知识图谱确认订单状态,两者互补。
安全和可控性方面,输出审核层用敏感词加意图分类过滤,工具调用权限白名单。扩展性靠插件化架构,新工具自动注册不用改核心代码。
这里有个延伸点:成本感知调度。我会根据任务复杂度动态选择模型,简单任务用小模型,复杂任务用大模型,甚至结合 [[MoE]] 路由。但前提是模型质量评估准确,否则小模型误判会降低用户体验。
[[多智能体]]协作方面,我倾向用主从架构:主 Agent 负责任务分发,子 Agent 并行执行,通过共享内存池通信。但协作成本不低,通信协议要轻量,避免序列化开销。
最后我的判断是:Agent 系统成败不在模型多强,而在边界划得多清楚、降级策略多优雅。所以我更倾向把精力花在监控、回滚、人工确认回路上,而不是一味堆功能。如果面试官有兴趣,我可以再讲讲成本感知调度的具体实现。