Skip to content

引言

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 的能力和接口
TaskAgent 间传递的工作单元
MessageAgent 间的通信消息
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 CallingLLM 生成结构化的函数调用请求
MCP标准化 AI 与工具的连接协议(工具的 USB)
MCP 三种能力Tools(函数)、Resources(数据)、Prompts(模板)
A2AAgent 间通信协议,实现多 Agent 协作
意义AI 从「只会说话」到「能做事」的关键基础设施

思考题

  1. MCP 类比于 USB 标准。历史上标准化协议(如 USB、HTTP)对行业的影响是什么?MCP 能否复制这种成功?
  2. Function Calling 让 AI 可以执行操作,这带来了哪些安全风险?如何防护?
  3. Dario Amodei 选择安全而非速度来创建 Anthropic。在 AI 发展中,安全和能力之间应该如何平衡?