AI Agent 是什么?
Q: 什么是 AI Agent?它和普通大模型聊天有什么区别?
A: 普通 LLM 更像一个被动的文本生成器,输入 prompt 后返回答案。AI Agent 会在 LLM 外面加一层任务执行框架:它能理解目标、拆解步骤、维护状态、调用工具、观察工具结果,再决定下一步做什么。
面试里可以这样说:
LLM 是 Agent 的推理核心,但 Agent 不等于 LLM。Agent 更强调 goal-driven execution:围绕一个目标循环执行
plan -> act -> observe -> reflect,直到任务完成或触发终止条件。
常见组成:
- LLM:理解、推理、生成。
- Prompt / System instruction:定义角色、约束和输出格式。
- Tools:搜索、数据库、代码执行、浏览器、业务 API。
- Memory / State:保存当前任务状态、历史信息和用户偏好。
- Planner / Executor:拆任务、选工具、执行步骤。
- Evaluator / Guardrail:检查结果是否满足目标。
Agent 怎么和大模型衔接?
Q: Agent 和语言模型的衔接方式是什么?
A: Agent 通常把当前任务、历史状态、可用工具描述、工具调用结果一起组织成模型输入,让模型决定下一步动作。模型输出可以是自然语言,也可以是结构化 tool call。
典型流程:
- 用户输入目标。
- Agent 构造 prompt,包括任务、上下文、工具列表和约束。
- LLM 判断是否需要调用工具。
- Agent 执行工具调用。
- Agent 把工具结果写回上下文。
- LLM 生成下一步动作或最终答案。
追问: 为什么不能直接让 LLM 自己调用接口?
A: 因为 LLM 本身不真正拥有外部系统权限。工具执行、权限校验、参数检查、重试、日志、超时控制都应该由 Agent 框架或后端服务完成,不能交给模型自由发挥。
Agent 什么时候会失效?
Q: Agent 在什么情况下会失效?
A: 常见失效原因有 6 类:
- 目标不清:用户任务太模糊,Agent 不知道成功标准。
- 上下文超限:长对话或长文档导致关键信息被截断。
- 工具失败:接口超时、权限不足、返回格式异常。
- 幻觉决策:模型误判工具能力,调用了不存在或不适合的工具。
- 长链路漂移:多步任务中间状态积累错误。
- 成本失控:频繁调用大模型或工具,响应慢且费用高。
面试回答要补一句:
Agent 的难点不是 demo 能跑,而是失败路径能不能被识别、恢复和观测。
上下文超限怎么办?
Q: 多轮 Agent 对话里,上下文超过限制怎么处理?
A: 可以分层处理:
- 短期窗口:保留最近几轮对话。
- 历史摘要:把旧对话压缩成任务状态。
- RAG 召回:把长期知识放到向量库或数据库,按需检索。
- 结构化状态:把关键变量保存成 JSON,例如目标、已完成步骤、未解决问题。
- 重要性过滤:只保留和当前任务相关的信息。
更好的回答:
我不会简单把历史全塞进 prompt,而是把上下文拆成 conversation history、task state、retrieved knowledge 和 tool observations。不同信息走不同存储和召回策略。
异常处理机制
Q: Agent 工具调用失败时怎么处理?
A: 要先区分错误类型:
- 参数错误:重新生成参数或让用户补充信息。
- 网络/超时:重试、退避、切换备用服务。
- 权限错误:停止调用并提示授权问题。
- 结果为空:改写查询、扩大检索范围或追问。
- 模型输出格式错误:用 schema 校验并要求模型修复。
项目表达:
我会给每次 tool call 记录 request、response、latency、error type 和 retry count,方便排查 Agent 卡在哪一步。
成本和效果怎么平衡?
Q: Agent 系统里怎么平衡成本和效果?
A: 常见策略:
- 简单任务用小模型,复杂推理才用强模型。
- 对相同 query、相同检索结果做缓存。
- 先检索再生成,减少无效上下文。
- 对工具结果做压缩,只把关键信息给 LLM。
- 限制最大调用轮数,避免 Agent 无限循环。
- 异步处理长任务,前台只返回任务状态。
一句话总结:
成本优化不是只换便宜模型,而是减少不必要的 token、调用次数和失败重试。
架构顶得住吗?
Q: 如果 Agent 并发上来,架构怎么设计?
A: 我会把 Agent 运行拆成可观测的任务流:
- API 层接收用户请求。
- 任务队列承接长任务和高峰流量。
- Agent Worker 执行规划、检索和工具调用。
- 状态存储保存 session、step、tool result。
- 工具服务独立限流和权限控制。
- 日志/trace 系统记录完整调用链。
高频追问:
- 怎么避免 Agent 死循环?设置最大步数、超时、重复动作检测。
- 怎么保证工具安全?工具白名单、参数校验、权限控制。
- 怎么 debug?保留每一步模型输入、输出、工具调用和最终答案。