在这里插入图片描述

你是不是也好奇过:我在网页上问AI一个问题,它到底是怎么回答的?为什么它能上网查资料、能帮我订机票、能操作我的电脑文件?User Prompt、System Prompt、AI Agent、Function Calling、MCP这些词到底啥关系?

别急,今天我就用最通俗的大白话,把这些概念一次性讲清楚!


1. 先说说AI是怎么理解你的问题的

你有没有想过,当你对着对话框敲下一行字,AI是怎么知道该回答什么的?

其实,AI接收到的不是简单的一句话,而是一套"组合包"。就像你去餐厅吃饭,不光要点菜,还得知道这家餐厅是川菜馆还是粤菜馆、有什么规矩。

这套"组合包"里最核心的两个东西,就是User PromptSystem Prompt


2. User Prompt:你说了什么

User Prompt就是你直接发给AI的那句话——你在对话框里敲进去的内容。

比如:

  • “明天天气怎么样?”
  • “帮我写个Python脚本”
  • “肚子疼怎么办?”

这些都是User Prompt。
在这里插入图片描述

2.1 只有User Prompt够吗?

你试试看:如果AI只收到"明天天气怎么样?"这一句话,它会怎么回答?

它可能会说:“明天天气需要查询天气预报,我目前没有这个功能,建议你打开天气APP查看。”

为什么?因为它不知道:

  • 自己是"谁"(是客服还是助手?)
  • 有什么能力(能不能查天气?)
  • 该怎么说话(要正式还是幽默?)

只有一个User Prompt,就像一个人突然被拉住问问题,没有任何背景信息,只能用最通用的方式回答。


3. System Prompt:AI知道自己是谁

为了让AI有"人设",聪明的工程师们想出了一个办法:System Prompt

System Prompt就是告诉AI:你是谁、你有什么能力、你该怎么说话。这些信息不是用户说的,而是系统预设好的。

3.1 System Prompt长啥样?

{
  "system": "你是一个幽默风趣的AI助手,喜欢用比喻解释问题。你有查询天气、设置提醒、播放音乐等能力。",
  "user": "明天天气怎么样?"
}

每次你发消息时,系统会自动把System Prompt和你的User Prompt打包在一起发给AI。

3.2 System Prompt里都放什么?

内容 例子
角色设定 “你是一个专业的客服助手”
语气风格 “用简洁的语言回答”
能力说明 “你可以查询天气、设置提醒”
规则约束 “不要回答政治敏感问题”

3.3 你见过System Prompt吗?

在网页版ChatGPT里,你看不到System Prompt——那是系统预设好的。

但在ChatGPT的Customized GPT里,你可以自己设置偏好:“用简洁的语言回答”、“你是一个Python专家”——这些偏好会被自动整合进System Prompt。

System Prompt就像员工的入职手册,告诉AI该怎么做人做事。


4. User Prompt和System Prompt是怎么配合的?

这两者不是各说各话,而是组合在一起发挥作用:

角色 相当于 作用
System Prompt 员工入职手册 告诉AI:你是谁、你有什么能力、你该怎么说话
User Prompt 客户的需求 告诉AI:今天要干什么、要解决什么问题

AI看到的是

  1. 先读System Prompt:“哦,我是一个友好的AI助手,我有天气查询工具”
  2. 再看User Prompt:“用户让我查明天的天气”
  3. 结合两者:“用户需要天气,我有天气工具,我应该调用它”

打个比方

  • 新员工第一天上班,先看入职手册(System Prompt),知道公司有什么资源、该怎么说话
  • 然后接到客户电话(User Prompt):“帮我查一下明天的天气”
  • 员工知道该用哪个工具、怎么回答,因为手册里都写好了

5. 早期的问题:工具描述只能硬塞进System Prompt

在AI Agent这个概念火起来之前(2023年以前),如果想让大模型调用外部工具(比如查天气、设提醒),开发者只能把所有工具的描述用自然语言写在System Prompt里:

系统提示:你是一个AI助手。你可以使用以下工具:
- 天气查询工具:调用方式:传入城市名,返回天气信息
- 日历工具:调用方式:传入日期,返回日程安排
- 计算器工具:调用方式:传入表达式,返回计算结果

用户问题:帮我查一下明天的天气

5.1 这种做法有什么问题?

问题 后果
自然语言随意写 今天写成"传入城市名",明天写成"需要city参数",AI可能理解错
格式不统一 AI返回的调用格式五花八门,有时返回JSON,有时返回自然语言
出错了得自己处理 AI返回的格式不对,你得自己解析、自己重试
System Prompt越来越臃肿 人设信息+工具描述混在一起,又长又乱

就像把所有工具的使用说明书都塞进员工手册,员工翻半天才能找到想要的那一页。


6. AI Agent的出现:专门负责"跑腿"的角色

2023年,AutoGPT这类项目开始出现,人们把这种负责在模型、工具和用户之间传话的程序,叫做AI Agent

AI Agent = 一个会动脑 + 会动手的智能助理

6.1 AI Agent是干什么的?

它就像一个勤劳的秘书,在你和大模型、各种工具之间跑来跑去,协调一切:

你(User Prompt):“帮我查明天的天气”
    ↓
【AI Agent】← 中间多了个秘书
    ↓ (把工具信息整理好,塞进System Prompt)
【大模型】← 收到:System Prompt(人设+工具有哪些)+ User Prompt(用户需求)
    ↓ (思考后决定调用天气工具)
【AI Agent】← 收到调用指令,去执行工具
    ↓
【天气工具】← 实际查天气
    ↓
【AI Agent】← 收到结果,返回给大模型
    ↓
【大模型】← 根据结果生成回答
    ↓
【AI Agent】← 把最终答案展示给你
你看到:“明天晴天,20度”

6.2 有了AI Agent,你轻松了

你不用关心AI是怎么调用工具的,不用管中间出了什么错,Agent全帮你搞定。

AI Agent就像你的私人秘书,你只需要提需求,跑腿的事交给它。


7. Function Calling的革命:工具调用有了统一格式

2023年底,OpenAI推出了Function Calling功能,随后Google Gemini等也纷纷跟进。这个功能的核心思想就是把工具描述从System Prompt里剥离出来,用统一格式单独发送
在这里插入图片描述

7.1 以前vs现在

以前(工具塞在System Prompt里):

系统提示:你是一个AI助手。工具有:天气查询(传城市名)、日历查询(传日期)...

现在(Function Calling标准化):

{
  "name": "get_weather",
  "description": "查询天气",
  "parameters": {
    "type": "object",
    "properties": {
      "city": {"type": "string"}
    }
  }
}

所有工具都用统一的JSON格式定义,不再用自然语言随意写。

7.2 最关键的变化:工具定义有了专属字段

Function Calling把这些工具定义单独放在一个字段里,和System Prompt、User Prompt并列发送:

{
  "messages": [
    {"role": "system", "content": "你是一个友好的AI助手,喜欢用幽默的方式回答"},
    {"role": "user", "content": "帮我查明天的天气"}
  ],
  "functions": [  // ✅ 专门的字段!不再塞在System Prompt里
    {
      "name": "get_weather",
      "description": "查询天气",
      "parameters": {...}
    }
  ]
}

这就实现了三权分立

  • System Prompt:负责"我是谁"(人设、语气、性格)
  • User Prompt:负责"用户要什么"(当前需求)
  • functions字段:负责"我有什么工具"(标准定义)

7.3 更更更重要的是:返回格式也统一了

AI如果要调用工具,必须返回固定格式:

{
  "function_call": {
    "name": "get_weather",
    "arguments": "{\"city\": \"北京\"}"
  }
}

如果AI返回的格式不对(比如漏了括号、参数名写错),AI服务器端自己能检测到,并且自动重试!一次不行就第二次,用户根本感觉不到背后发生了重试。

Function Calling就像给AI配了个标准化的工具箱,每个工具都有统一的标签和说明书,AI一看就懂,不会拿错。


8. MCP的出现:让所有工具都能"即插即用"

8.1 新的问题出现了

Function Calling解决了Agent和大模型之间"怎么商量用工具"的问题,但Agent和实际工具之间怎么连接?

每个工具都有自己的API、自己的认证方式、自己的调用格式:

  • 天气工具:HTTP请求,返回JSON
  • 文件工具:本地文件系统操作
  • 数据库工具:SQL查询
  • 浏览器工具:需要启动浏览器实例

Agent要适配每一个,太累了!

就像你买了各种电器,但每个都要配不同的插座、不同的电压,太麻烦了。

8.2 MCP是什么?

2024年11月,Anthropic推出了MCP(Model Context Protocol),全称模型上下文协议

MCP = 一套统一的协议,让Agent能用标准方式调用任何工具

它就像工具的"USB-C接口"——不管工具本身多复杂,只要它实现了MCP协议,Agent就可以用统一的方式调用它。
在这里插入图片描述

8.3 MCP的核心组件

组件 作用 相当于
MCP Client AI Agent端,发起工具调用请求 插头
MCP Server 工具端,接收请求并执行具体操作 插座
MCP协议 定义通信格式和规则 USB-C标准

8.4 MCP协议长啥样?

就是一套标准的JSON对话格式:

1. Agent(MCP Client)问MCP Server:有什么工具?

{
  "jsonrpc": "2.0",
  "method": "tools/list",
  "id": 1
}

2. MCP Server返回工具列表

{
  "jsonrpc": "2.0",
  "result": {
    "tools": [
      {
        "name": "get_weather",
        "description": "获取天气",
        "inputSchema": {
          "type": "object",
          "properties": {
            "city": {"type": "string"}
          }
        }
      }
    ]
  },
  "id": 1
}

3. Agent调用工具

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": {"city": "北京"}
  },
  "id": 2
}

4. MCP Server返回结果

{
  "jsonrpc": "2.0",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "北京晴天20度"
      }
    ]
  },
  "id": 2
}

MCP Server就像一个装工具的柜子,配了一个会按统一格式接待人的管理员。你只要说标准话,管理员就帮你把工具拿出来用。

8.5 关键点:MCP本身和大模型无关

MCP是一个中立的协议层,它不关心对面是谁

  • 对面可以是AI Agent(用大模型的)
  • 对面也可以是普通程序(不用AI的)
  • 对面甚至可以是命令行脚本

它只负责一件事:用标准的方式,把工具调用请求发给实际干活的服务,再把结果用标准格式返回


9. Function Calling和MCP,到底啥区别?

这是最容易混淆的两个概念,我一句话说清楚:

概念 谁和谁通信 作用 出现时间
Function Calling Agent ↔ 大模型 让大模型知道有什么工具、怎么调用 2023年底
MCP Agent ↔ 工具 让Agent能统一调用各种工具 2024年底

简单记法

  • Function Calling = 向上对话(Agent和大模型商量用啥工具)
  • MCP = 向下连接(Agent指挥工具干活)

两者是不同层面的标准化,可以一起用

大模型
   ↑
【Function Calling】← 商量用啥工具
   ↓
AI Agent(MCP Client)
   ↓
【MCP协议】← 统一调用标准
   ↓
MCP Server(包装各种实际工具)
   ↓
实际工具(天气API、文件系统、数据库...)

10. 一张图看懂现在的完整流程

用"帮我查明天的天气"这个例子,看看现在有了AI Agent、Function Calling和MCP后,背后发生了什么:

发给大模型的三个部分

System Prompt
你是一个幽默的助手

User Prompt
帮我查明天的天气

functions字段
get_weather的标准定义


帮我查明天的天气

AI Agent
(MCP Client)

MCP协议
问:有什么工具?

MCP Server
(工具仓库)

MCP协议
返回:get_weather工具

大模型

Function Calling返回
调用get_weather(北京)

MCP协议
调用get_weather(北京)

MCP Server

天气API

北京晴天20度

MCP协议
返回结果

大模型

明天北京晴天20度,适合出门哦~

核心要点

  • System Prompt:负责"我是谁"
  • User Prompt:负责"用户要什么"
  • Function Calling:负责"Agent和大模型怎么商量"
  • MCP:负责"Agent和工具怎么连接"
  • 各司其职,完美配合!

11. 总结:一张表看懂所有概念

概念 作用 负责什么 出现时间
User Prompt 用户的具体需求 “用户要什么” 始终存在
System Prompt AI的角色定位和行为准则 “我是谁” 早期就有
AI Agent 协调模型、工具、用户的中间层 “我来跑腿” 2023年(AutoGPT引爆)
Function Calling Agent和大模型之间的标准化协议 “怎么商量用工具” 2023年底
MCP Agent和工具之间的统一连接协议 “怎么调用工具” 2024年底
MCP Server 包装实际工具,提供标准接口 “工具仓库+管理员” 2024年底后

写在最后

当你下次在网页上问AI一个问题时,记住背后有多层技术在配合:

  1. System Prompt 告诉AI"你是谁"
  2. User Prompt 告诉AI"用户要什么"
  3. Function Calling 让AI知道有什么工具、怎么调用,出错了还能自动重试
  4. MCP 让Agent能用统一的方式调用各种工具,不用管每个工具的具体细节

这一整套配合,让AI从"只会说话"进化到"会干活",而你只需要像平时一样打字就行!

技术的演变,就是为了让你用得更爽,感受不到背后的复杂!


希望这篇入门指南对你有帮助!如果还有不明白的,欢迎继续问~

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐