Agent 面试题合集:规划、记忆、工具调用

关键词:AI Agent、LangGraph、MCP、Multi-Agent、Function Calling


Q1:什么是 AI Agent?和普通 LLM 调用有什么区别?

答:

普通 LLM 是"单轮问答机器":你给一个 Prompt,它返回一个回答,就结束了。

AI Agent 是"自主执行任务的系统",具备四个核心能力:

  1. 规划(Planning):将复杂目标分解为可执行步骤

  2. 工具调用(Tool Use):调用外部 API、代码执行、数据库查询

  3. 记忆(Memory):短期记住对话历史,长期存储重要信息

  4. 反馈循环:根据工具返回结果动态调整下一步行动

    普通LLM:用户输入 → LLM → 输出(结束)

    Agent:
    用户目标
    → LLM 规划第一步
    → 执行工具
    → 观察结果
    → LLM 规划下一步
    → 执行工具
    → ... (直到目标达成)


Q2:ReAct 框架是什么?和 CoT 的区别?

答:

CoT(Chain-of-Thought):只有推理,没有行动。模型在上下文窗口内推理,但无法获取外部信息。

ReAct = Reasoning(推理)+ Acting(行动),交替进行思考和工具调用:

复制代码
Thought: 需要知道今天的美元汇率
Action: search("美元兑人民币汇率 今日")
Observation: 1 USD = 7.24 CNY(2024-01-15)

Thought: 现在可以计算了,100美元 = 724元
Final Answer: 100美元约等于724元人民币

关键区别

  • CoT 在"脑子里"推理,无法接触实时/私有信息
  • ReAct 可以调用工具获取真实世界数据,能力边界大幅扩展

Q3:Agent 的记忆系统如何设计?

答:

Agent 记忆系统分四层:

① 工作记忆(Working Memory):当前对话上下文(在 LLM 的 context window 内)

② 情节记忆(Episodic Memory):历史对话摘要,压缩后存于向量数据库,按需检索

③ 语义记忆(Semantic Memory):用户画像、偏好、重要事实(结构化存储,如 JSON/数据库)

④ 程序记忆(Procedural Memory):完成特定任务的 SOP(通过 Few-shot 或 System Prompt 实现)

python 复制代码
class AgentMemorySystem:
    def __init__(self):
        self.working_memory = []         # 当前对话消息列表
        self.episodic_memory = VectorDB  # 历史对话,向量检索
        self.semantic_memory = {}        # 用户信息字典
    
    def before_response(self, user_message):
        # 1. 检索相关历史记忆
        relevant_history = self.episodic_memory.search(user_message, k=3)
        # 2. 加载用户偏好
        user_prefs = self.semantic_memory.get("preferences", {})
        # 3. 构建增强 Prompt
        context = f"用户偏好:{user_prefs}\n历史相关:{relevant_history}"
        return context
    
    def after_response(self, conversation):
        # 4. 压缩并存储本次对话
        summary = llm.summarize(conversation)
        self.episodic_memory.add(summary)
        # 5. 提取并更新用户信息
        extracted = llm.extract_user_info(conversation)
        self.semantic_memory.update(extracted)

Q4:Multi-Agent 有哪些常见架构模式?

答:

① 监督者模式(Supervisor-Worker)

一个 Supervisor Agent 负责任务分配和结果汇总,多个 Worker Agent 专注执行:

复制代码
用户:写一份 AI 市场报告

Supervisor:
  → 研究员Agent(收集数据)
  → 分析师Agent(SWOT分析)  
  → 写作Agent(撰写报告)
  → 收集所有结果,整合输出

② 流水线模式(Pipeline)

Agent 序列处理,前一个的输出是后一个的输入:

复制代码
爬虫Agent → 清洗Agent → 分析Agent → 报告Agent

③ 辩论模式(Debate)

多个 Agent 持不同观点辩论,最终达成共识(提高推理可靠性):

复制代码
Agent A(支持论)→ Agent B(反驳)→ Agent C(仲裁)→ 最终结论

④ 并行执行(Parallel)

多个 Agent 同时处理不同子任务,最后合并:

复制代码
用户:分析苹果公司
├── Agent1:财务分析(并行)
├── Agent2:竞争对手分析(并行)
└── Agent3:技术趋势分析(并行)
        ↓
    结果汇总Agent

Q5:什么是 MCP 协议?为什么重要?

答:

MCP(Model Context Protocol) 是 Anthropic 在 2024 年提出的开放标准,定义了 AI 模型与外部工具/数据源之间通信的规范。

为什么需要 MCP?

在 MCP 之前,每个 AI 平台都有自己的工具调用格式:

  • OpenAI 有 Function Calling(一种格式)
  • LangChain 有 Tool(另一种格式)
  • 开发者为每个平台都要重新开发工具

MCP 解决了什么

复制代码
没有 MCP(工具碎片化):
工具开发者:为 Claude 写一套 → 为 GPT 写一套 → 为 Gemini 写一套

有 MCP(统一标准):
工具开发者:写一次 MCP Server → 所有支持 MCP 的 AI 都能用

MCP 的三类能力

  1. Resources:让模型读取文件、数据库等
  2. Tools:让模型调用函数、API
  3. Prompts:提供可复用的提示模板

目前 OpenAI、Google、Microsoft 等主流厂商已宣布支持 MCP,正成为 Agent 生态的事实标准。


Q6:Agent 如何处理工具调用失败?

答:

工具调用失败是生产 Agent 必须处理的问题,策略分三层:

第一层:工具级重试

python 复制代码
import tenacity

@tenacity.retry(
    stop=tenacity.stop_after_attempt(3),
    wait=tenacity.wait_exponential(multiplier=1, min=1, max=10),
    retry=tenacity.retry_if_exception_type(Exception)
)
def call_tool_with_retry(tool_name: str, args: dict):
    return tools[tool_name](**args)

第二层:Agent 自适应(让 LLM 决策)

python 复制代码
# 在工具返回错误时,将错误信息告诉 LLM
observation = f"工具调用失败:{error_message}。请尝试其他方法或告知用户无法完成。"
messages.append({"role": "user", "content": observation})
# 让 LLM 决定:换个工具/换个参数/告知用户/优雅放弃

第三层:降级策略

python 复制代码
def search_with_fallback(query: str) -> str:
    try:
        return tavily_search(query)       # 首选:Tavily
    except Exception:
        try:
            return serpapi_search(query)   # 备选:SerpAPI
        except Exception:
            return f"搜索服务暂时不可用,以下是基于模型知识的回答..."  # 降级

Q7:如何评估 Agent 的质量?

答:

Agent 评估比单模型评估复杂,因为有中间步骤:

指标体系

指标 计算方式 意义
任务成功率 成功完成任务数 / 总任务数 最核心指标
步骤效率 最优步骤数 / 实际步骤数 是否"走弯路"
工具精准率 正确工具调用数 / 总工具调用数 工具选择准确性
Token 消耗 每个任务平均 Token 数 成本效率
错误恢复率 遇错后成功恢复数 / 遇错总数 鲁棒性

测试基准集

  • 为每个核心场景准备 20-50 个测试用例
  • 包含正常路径、边界情况、工具失败情况
  • 人工验证最终结果(LLM 作为评判者也可辅助)