本文综合整理自 Prompt Engineering Guide、Model Context Protocol 官方文档、Agent Skills 规范、Google ADK 文档及 IBM 技术文章,旨在帮助读者快速理解 AI Agent 领域的核心概念。
什么是 AI Agent
AI Agent(人工智能代理)是一种能够 自主执行任务 的系统或程序。与传统 LLM 的被动文本生成不同,AI Agent 具备以下核心能力:
规划能力 :能够将复杂任务分解为多个步骤
工具调用 :可以调用外部 API、数据库、搜索引擎等
自适应学习 :能够根据新信息更新自身记忆和行为
自主决策 :能够判断何时需要调用工具、何时直接回答
"Function calling transforms LLMs from passive text generators into active agents capable of real-world interactions." — Fireworks AI
Function Calling(函数调用)
定义
Function Calling 是让 LLM 能够与外部工具、API 和知识库交互的核心能力。当 LLM 收到需要超出其训练数据范围的信息或操作请求时,它可以决定调用外部函数来获取信息或执行操作。
工作流程
用户请求 → 上下文组装 → LLM 决策 → 工具执行 → 观察结果 → 生成响应
详细步骤:
用户查询 :用户发送请求(如"巴黎的天气如何?")
上下文组装 :系统消息、工具定义和用户消息组合成完整上下文
工具决策 :LLM 分析上下文,决定是否需要调用工具
工具执行 :开发者代码接收工具调用请求并执行实际函数
观察 :工具返回结果,成为 Agent 的"观察"
响应生成 :观察结果传回模型,生成最终响应
工具定义示例
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "获取指定位置的当前天气。当用户询问特定城市或地区的天气状况时使用。",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市和州,例如:San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "温度单位"
}
},
"required": ["location"]
}
}
}
最佳实践
清晰的描述 :工具描述应明确说明功能和使用场景
精简工具数量 :建议不超过 20 个工具以保证准确性
参数验证 :明确必需参数和可选参数
Token 优化 :工具定义会消耗 Token,需简洁但完整
MCP(Model Context Protocol)
定义
MCP(Model Context Protocol)是一个 开源标准协议 ,用于连接 AI 应用与外部系统。它为 AI 应用提供了一种标准化的方式来访问数据源、工具和工作流。
"Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect electronic devices, MCP provides a standardized way to connect AI applications to external systems." — MCP 官方文档
核心架构
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ MCP Host │────▶│ MCP Client │────▶│ MCP Server │
│ (AI 应用) │ │ (连接器) │ │ (服务提供) │
└─────────────┘ └─────────────┘ └─────────────┘
三大角色:
角色 | 说明 |
|---|---|
| Host | AI 应用程序(如 Claude、ChatGPT) |
| Client | 连接器,负责与 Server 通信 |
| Server | 提供工具、资源和提示模板的服务端 |
MCP Server 核心功能
Tools(工具) :可执行的函数,如搜索、计算、API 调用
Resources(资源) :静态数据源,如文件、数据库内容
Prompts(提示) :预定义的提示模板
MCP 的价值
受益方 | 价值 |
|---|---|
| 开发者 | 减少构建和集成 AI 应用的开发时间和复杂度 |
| AI 应用 | 获得丰富的数据源、工具和应用生态系统 |
| 终端用户 | 获得更强大的 AI 应用,能够访问数据并代为执行操作 |
生态系统支持
MCP 已被广泛支持:
AI 助手 :Claude、ChatGPT
开发工具 :VS Code、Cursor、Windsurf
其他 :MCPJam 等众多客户端
Skills(技能)
定义
Agent Skills 是一种 轻量级、开放格式 ,用于扩展 AI Agent 的能力,为其提供专业知识和工作流程。Skills 本质上是包含指令、脚本和资源的文件夹。
目录结构
my-skill/
├── SKILL.md # 必需:指令 + 元数据
├── scripts/ # 可选:可执行代码
├── references/ # 可选:参考文档
└── assets/ # 可选:模板、资源
工作机制
发现 → 激活 → 执行
发现(Discovery) :启动时,Agent 仅加载每个可用 Skill 的名称和描述
激活(Activation) :当任务匹配 Skill 描述时,Agent 读取完整的 SKILL.md 指令
执行(Execution) :Agent 按照指令执行,按需加载引用文件或执行捆绑代码
SKILL.md 示例
---
name:pdf-processing
description:ExtractPDFtext,fillforms,mergefiles.UsewhenhandlingPDFs.
---
# PDF Processing
## When to use this skill
UsethisskillwhentheuserneedstoworkwithPDFfiles...
## How to extract text
1 .Usepdfplumberfortextextraction...
## How to fill forms
...
Skills 的特点
特点 | 说明 |
|---|---|
| 自文档化 | 任何人都可以阅读 SKILL.md 理解其功能 |
| 可扩展 | 从纯文本指令到可执行代码,复杂度可变 |
| 可移植 | 只是文件,易于编辑、版本控制和共享 |
支持平台
GitHub Copilot(VS Code、CLI、Coding Agent)
其他兼容 Agent Skills 标准的 AI 工具
Sub Agent(子代理)与多代理系统
定义
多代理系统(Multi-Agent System, MAS) 由多个 AI Agent 协同工作,共同完成用户或其他系统的任务。每个 Agent 具有独立属性,但通过协作实现全局目标。
Sub Agent(子代理) 是多代理系统中的组成部分,在父代理的协调下执行特定任务。
单代理 vs 多代理系统
维度 | 单代理系统 | 多代理系统 |
|---|---|---|
| 结构 | 独立运行 | 多个 Agent 协作 |
| 通信 | 与环境交互 | Agent 间直接/间接通信 |
| 学习 | 独立学习 | 共享经验和策略 |
| 性能 | 受限于单一 Agent | 资源池更大,性能更优 |
多代理系统架构
1. 集中式网络(Centralized)
┌─────────────┐
│ 中央单元 │
└──────┬──────┘
┌──────────┼──────────┐
▼ ▼ ▼
┌───────┐ ┌───────┐ ┌───────┐
│Agent A│ │Agent B│ │Agent C│
└───────┘ └───────┘ └───────┘
优点 :通信便捷,知识统一
缺点 :中央单元故障导致系统崩溃
2. 去中心化网络(Decentralized)
┌───────┐ ┌───────┐
│Agent A│◄───►│Agent B│
└───┬───┘ └───┬───┘
│ │
▼ ▼
┌───────┐ ┌───────┐
│Agent C│◄───►│Agent D│
└───────┘ └───────┘
优点 :鲁棒性强,模块化
缺点 :协调复杂度高
多代理系统结构类型
结构 | 特点 |
|---|---|
| 层级结构 | 树状结构,Agent 具有不同自主级别 |
| Holonic 结构 | Agent 分组为 holarchy,子代理协作呈现为单一实体 |
| 联盟结构 | Agent 临时联合提升性能,目标达成后解散 |
| 团队结构 | Agent 紧密协作,相互依赖程度高 |
ADK 中的多代理实现
Google Agent Development Kit (ADK) 提供了构建多代理系统的原语:
Agent 层级
fromgoogle.adk.agentsimportLlmAgent, BaseAgent
# 定义子代理
greeter = LlmAgent(name="Greeter", model="gemini-2.0-flash")
task_doer = BaseAgent(name="TaskExecutor")
# 创建父代理并分配子代理
coordinator = LlmAgent(
name="Coordinator",
model="gemini-2.0-flash",
description="I coordinate greetings and tasks.",
sub_agents=[greeter, task_doer]
)
工作流代理类型
类型 | 说明 |
|---|---|
| SequentialAgent | 顺序执行子代理 |
| ParallelAgent | 并行执行子代理 |
| LoopAgent | 循环执行子代理直到满足条件 |
代理间交互模式
LLM Transfer :通过 LLM 决策将任务转移给子代理
Agent as Tool :将代理封装为工具供其他代理调用
State Sharing :通过共享状态传递信息
多代理系统优势
灵活性 :动态调整 Agent 组合

可扩展性 :轻松添加新 Agent
领域专业化 :每个 Agent 专注特定领域
更高性能 :并行处理,资源共享
概念对比与关系
┌─────────────────────────────────────────────────────────────┐
│ AI Agent │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 能力扩展层 │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Skills │ │ MCP │ │ Function │ │ │
│ │ │ (技能) │ │ (协议) │ │ Calling │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 协作层 │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │ Sub Agent / Multi-Agent │ │ │
│ │ │ (子代理/多代理系统) │ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
概念 | 层级 | 核心作用 | 标准化程度 |
|---|---|---|---|
| Function Calling | 基础能力 | 让 LLM 调用外部函数 | 各厂商有自己的实现 |
| MCP | 连接协议 | 标准化 AI 与外部系统的连接 | 开放标准 |
| Skills | 能力扩展 | 为 Agent 提供专业知识和工作流 | 开放格式 |
| Sub Agent | 系统架构 | 多个 Agent 协作完成复杂任务 | 框架相关 |
它们如何协同工作
Function Calling 是最底层的能力,让 Agent 能够调用工具
MCP 提供标准化的协议,让不同的工具和数据源能够统一接入
Skills 为 Agent 提供领域专业知识,指导其如何完成特定任务
Sub Agent 将多个专业 Agent 组合,协作完成复杂任务
总结
概念 | 一句话总结 |
|---|---|
| Function Calling | LLM 调用外部工具的能力,是 Agent 的"手" |
| MCP | AI 应用的"USB-C 接口",标准化连接外部系统 |
| Skills | Agent 的"专业技能包",提供领域知识和工作流 |
| Sub Agent | Agent 的"团队协作",多个专业 Agent 分工合作 |
这四个概念共同构成了现代 AI Agent 的核心架构:
Function Calling 提供基础的工具调用能力
MCP 解决了工具和数据源的标准化接入问题
Skills 解决了领域专业知识的封装和复用问题
Sub Agent 解决了复杂任务的分解和协作问题
理解这些概念及其关系,是构建强大 AI Agent 应用的基础。
参考资料
Function Calling in AI Agents - Prompt Engineering Guide: https://www.promptingguide.ai/agents/function-calling
Model Context Protocol Official Documentation: https://modelcontextprotocol.io/
Agent Skills Specification: https://agentskills.io/what-are-skills
Multi-Agent Systems in ADK - Google: https://google.github.io/adk-docs/agents/multi-agents/
What is a Multi-Agent System? - IBM: https://www.ibm.com/think/topics/multiagent-system
Function Calling - OpenAI API: https://platform.openai.com/docs/guides/function-calling
有任何问题欢迎在评论区留言,我会尽快回复~