关键词:AI Agent、LangGraph、MCP、Multi-Agent、Function Calling
Q1:什么是 AI Agent?和普通 LLM 调用有什么区别?
答:
普通 LLM 是"单轮问答机器":你给一个 Prompt,它返回一个回答,就结束了。
AI Agent 是"自主执行任务的系统",具备四个核心能力:
-
规划(Planning):将复杂目标分解为可执行步骤
-
工具调用(Tool Use):调用外部 API、代码执行、数据库查询
-
记忆(Memory):短期记住对话历史,长期存储重要信息
-
反馈循环:根据工具返回结果动态调整下一步行动
普通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 的三类能力:
- Resources:让模型读取文件、数据库等
- Tools:让模型调用函数、API
- 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 作为评判者也可辅助)