引言
2020 年 12 月,OpenAI 的副总裁 Dario Amodei 做了一个艰难的决定:带着 9 名核心成员离开这家全球最热门的 AI 公司。原因不是钱,不是权力,而是一个信念——AI 安全比 AI 能力更重要。他创立的公司 Anthropic,后来在 2024 年底发布了 MCP 协议,一个被称作「AI 工具的 USB 接口」的开放标准。这是 Dario 离开后交出的最重要答卷之一:不是让 AI 更强大,而是让 AI 更安全、更可控地连接世界。
Function Calling
核心概念
LLM 本身只能处理文本
Function Calling 让 LLM 能够「调用」外部函数
流程:
用户提问 → LLM 判断需要调用函数
→ 生成结构化的函数调用请求
→ 应用程序执行函数
→ 将结果返回给 LLM
→ LLM 基于结果回答用户工作流程
用户:"北京今天天气怎么样?"
步骤 1 - LLM 判断:
需要调用天气 API
函数名:get_weather
参数:{"city": "北京"}
步骤 2 - 应用程序执行:
调用天气 API,获取结果
{"temperature": 22, "condition": "晴"}
步骤 3 - LLM 回答:
"北京今天天气晴朗,气温 22 摄氏度。"Function Calling 的定义
json
{
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称"
}
},
"required": ["city"]
}
}工具的类型
| 类型 | 说明 | 示例 |
|---|---|---|
| 信息获取 | 查询外部数据 | 搜索、天气、股票 |
| 操作执行 | 执行动作 | 发邮件、建文件、调 API |
| 计算 | 精确计算 | 数学运算、代码执行 |
| 媒体处理 | 处理非文本内容 | 图像生成、语音合成 |
Anthropic 的故事:从分裂到 MCP
Dario Amodei 的抉择
DA1983-
Dario Amodei
Anthropic CEO,前 OpenAI 副总裁
"我们不仅需要让 AI 变得更强大,更需要确保 AI 是安全的、可控的。"
2020.12Dario Amodei 带 9 人离开 OpenAI,创立 Anthropic,专注于 AI 安全
2021Anthropic 提出「大计算团」(Big Blob of Compute)假说——理解大模型的内部运作
2023.3发布 Claude 模型,主打安全与可控
2024.3发布 Claude 3,多项基准测试超过 GPT-4
2024.11发布 MCP 协议——「AI 工具的 USB 标准接口」
Dario 离开 OpenAI 的根本原因,是他对 AI 安全的深度忧虑。在 OpenAI 内部,他和他的团队主张「在推进 AI 能力的同时,必须投入同等甚至更多资源来确保安全」。但 OpenAI 正在全力冲刺 GPT 的商业落地,安全研究被不断压缩。于是 Dario 带着 9 位志同道合者——包括他的妹妹 Daniela Amodei——创立了 Anthropic。他们的核心信念是:安全不是能力之后才考虑的问题,而是能力的基础。
MCP:模型上下文协议
「AI 工具的 USB 接口」
MCP(Model Context Protocol)是 Anthropic 在 2024 年底提出的开放协议,标准化了 AI 模型与外部工具和数据源的连接方式。
类比:
USB 是硬件设备的统一接口
MCP 是 AI 工具的统一接口
之前:
每个工具需要单独适配每个 AI 模型
N 个工具 × M 个模型 = N×M 个适配器
有了 MCP:
工具实现一次 MCP 接口 → 所有支持 MCP 的模型都能用
N 个工具 + M 个模型 = N+M 个适配器在 USB 出现之前,键盘用 PS/2 接口,打印机用并口,调制解调器用串口——每个设备都有自己的专用线缆。MCP 之前的世界也是如此:每个 AI 工具都需要为每个模型单独开发适配器。MCP 的出现就像 USB 一样,用一个统一标准终结了这种混乱。
MCP 的架构
┌──────────┐ ┌──────────┐ ┌──────────┐
│ AI 模型 │◄───►│ MCP 客户端 │◄───►│ MCP 服务器 │
│ (Host) │ │ (Client) │ │ (Server) │
└──────────┘ └──────────┘ └──────┬───┘
│
┌────┴────┐
│ 外部资源 │
│ 文件系统 │
│ 数据库 │
│ API │
└─────────┘MCP 提供的三种能力
| 能力 | 说明 | 示例 |
|---|---|---|
| Tools | 模型可以调用的函数 | 搜索文件、执行代码 |
| Resources | 模型可以读取的数据 | 文件内容、数据库记录 |
| Prompts | 预定义的提示模板 | 常用工作流模板 |
MCP 的优势
标准化:
所有工具遵循同一协议 → 开发者只需学一套
安全性:
客户端控制模型能访问哪些工具
工具执行需要用户确认
可组合:
多个 MCP 服务器可以同时连接
不同的工具可以灵活组合
生态系统:
开源社区贡献了大量 MCP 服务器
覆盖文件系统、数据库、Git、搜索等常见场景A2A:Agent 间通信协议
什么是 A2A?
A2A(Agent-to-Agent)协议解决的是不同 Agent 之间如何协作的问题。
单个 Agent 的局限:
一个 Agent 不可能擅长所有事情
A2A 的思路:
专业化的 Agent 互相协作
用户请求
│
▼
协调 Agent(理解意图、分配任务)
│
├──→ 编程 Agent(写代码)
├──→ 搜索 Agent(查找信息)
├──→ 分析 Agent(处理数据)
└──→ 报告 Agent(生成报告)
│
▼
协调 Agent 汇总结果 → 返回用户A2A 的核心概念
| 概念 | 说明 |
|---|---|
| Agent Card | 描述 Agent 的能力和接口 |
| Task | Agent 间传递的工作单元 |
| Message | Agent 间的通信消息 |
| Artifact | 任务产出的结果 |
实际应用
Claude Code + MCP 示例
Claude Code 是一个编程 Agent,通过 MCP 连接各种工具:
用户:"帮我检查这个项目的测试覆盖率"
Claude Code 的执行流程:
1. 通过文件系统 MCP 读取项目文件
2. 分析项目结构,找到测试文件
3. 调用终端执行测试命令
4. 解析测试结果
5. 生成覆盖率报告
6. 如果覆盖率低,提出改进建议工具生态
常见的 MCP 服务器:
├── 文件系统 — 读写文件
├── GitHub — 管理 PR、Issue
├── 数据库 — 查询 PostgreSQL、MySQL
├── 搜索 — Google、Brave Search
├── Slack — 发送和读取消息
├── Git — 版本控制操作
├── Puppeteer — 浏览器自动化
└── 自定义 — 企业内部 API本节小结
| 概念 | 要点 |
|---|---|
| Function Calling | LLM 生成结构化的函数调用请求 |
| MCP | 标准化 AI 与工具的连接协议(工具的 USB) |
| MCP 三种能力 | Tools(函数)、Resources(数据)、Prompts(模板) |
| A2A | Agent 间通信协议,实现多 Agent 协作 |
| 意义 | AI 从「只会说话」到「能做事」的关键基础设施 |
思考题
- MCP 类比于 USB 标准。历史上标准化协议(如 USB、HTTP)对行业的影响是什么?MCP 能否复制这种成功?
- Function Calling 让 AI 可以执行操作,这带来了哪些安全风险?如何防护?
- Dario Amodei 选择安全而非速度来创建 Anthropic。在 AI 发展中,安全和能力之间应该如何平衡?