别再只会聊天了!带你搞懂 AI Agent + Function Calling 全流程

162 阅读4分钟

在 AI 领域日新月异的今天,相信你已经见过不少新术语:

  • Agent
  • Function Calling
  • MCP 协议

这些词汇看上去像是科幻电影里的名词,其实它们正是现代 AI 应用从“只能聊天”到“能自动干活”的关键。

今天我们就来系统梳理一下:从一个普通的用户对话框,AI 是如何一步步进化成具备“自主执行能力”的 Agent 系统。


🗨 一切从 User Prompt 开始

还记得你第一次用 ChatGPT 的场景吗?

很可能是打开页面,输入一段请求,例如:

请帮我总结一下这篇文章的核心观点。

这就是所谓的 User Prompt(用户提示)。模型会基于这段文字生成响应。

这种交互模式已经非常成熟。但它也存在明显的限制:

模型不会具备“上下文中的角色意识”,更无法主动作出决策或调用工具。


🧠 给 AI 设定角色:System Prompt 登场

让我们思考一个问题:如果同一句话,不同人来回答,结果会一样吗?

比如你对不同人说:

“我现在非常累。”

可能得到的回答是:

  • 教练说:“那就休息一下,明天继续训练。”
  • 朋友说:“要不要一起出去散个步?”
  • 医生说:“描述一下你感觉累的具体症状。”

这就是角色背景对回答的影响。

AI 没有“角色意识”?没关系,我们可以人工设定。

System Prompt 就是为模型设定“身份”的机制。通过它,你可以告诉模型:

  • 你是谁(如医生、律师、编程专家)
  • 该用什么语气(严谨、幽默、简洁)
  • 有哪些规则(不能编造、不透露敏感信息)

🧩 结构关系如下:

graph TB
UserPrompt["🧑 用户提示"] --> AI
SystemPrompt["📄 系统设定"] --> AI

System Prompt 是隐藏的,不在聊天框里显示,却会持续影响模型输出的风格和行为。


🔧 不只是说话:Function Calling 解锁执行能力

到了这一步,我们已经能通过 Prompt 让 AI 具备角色和语气了。

但 AI 仍然只能说,不能做

举个例子:

“请查一下 ~/Documents 文件夹下有哪些文件。”

ChatGPT 可能会说:“你可以在文件管理器中打开该目录进行查看。”

这还是在“指挥你”干活,AI 自己却什么也做不了。

于是,Function Calling 机制登场:它允许模型主动调用编程函数、访问系统资源、与外部服务交互

👇 工作流程如下:

这一步的关键是:模型不再只是文本生成器,而是任务协调器,能够调度函数、接入系统完成具体操作。


🧠 什么是 AI Agent?让任务自动跑起来

Function Calling 实现了“模型调用函数”,但它还是“半自动”的——你需要不断参与交互。

那么,有没有可能,从输入目标开始,AI 全自动完成整个任务链条

这就是 AI Agent(智能体)的意义。

它本质上是一个 集成了 AI 模型 + 工具调用能力 + 执行控制逻辑 的智能系统。

例如你输入:

请帮我分析这个 Excel 文件并生成一份可视化报告。

Agent 可以自己:

  1. 解析 Excel
  2. 调用分析工具
  3. 生成图表
  4. 整理报告返回你

整套流程几乎不需要你干预。


🔄 为什么 Function Calling 是关键?

你可能会想:“让模型输出 JSON 不就行了吗?还用专门搞个机制?”

但 AI 是“概率模型”,即使你说“必须返回 JSON”,它也可能输出:

好的,我来按照你的格式输出:
{ "result": "success" }

这个“好的,我来...” 就不是标准 JSON,程序一读就崩。

于是,Function Calling 用结构化描述来约束模型,明确规定:

  • 函数名
  • 参数格式
  • 参数类型
  • 返回数据结构

🧱** 示例格式如下:**

{
  "name": "search_files",
  "description": "搜索指定目录下的所有文件",
  "parameters": {
    "type": "object",
    "properties": {
      "path": {
        "type": "string",
        "description": "要搜索的目录路径"
      }
    },
    "required": ["path"]
  }
}

AI 无需猜测 prompt 语义,调用函数也更稳定、可控。


🌐 工具共享,统一协议:MCP 上线!

问题又来了:如果你有多个 Agent 都想用相同的工具函数,怎么共享?

最简单的办法就是统一这些工具的注册和调用接口。

这就是 MCP(Multi-Agent Communication Protocol) 要解决的问题。

它类似于 AI 世界的“USB 协议”——所有 Agent 都能通过统一协议访问一套标准工具服务

graph TD
AgentClient["🤖 Agent 客户端"] -->|调用| MCPServer["🔌 MCP 工具服务"]
MCPServer --> ToolA["🗃 文件管理工具"]
MCPServer --> ToolB["📊 数据分析工具"]
MCPServer --> PromptRepo["📄 Prompt 模板仓库"]

MCP 实现:

  • 工具函数标准化
  • 多 Agent 共享服务
  • 通讯协议统一(HTTP / stdio)

📌 全流程总结:AI 从“聊天”到“执行”的完整演进

sequenceDiagram
    participant 用户 as 用户
    participant Agent as 智能体
    participant MCP as MCP Server
    participant 模型 as AI 模型
    participant 工具 as 工具函数

    用户->>Agent: 提出需求
    Agent->>MCP: 获取工具描述
    MCP-->>Agent: 返回函数清单
    Agent->>模型: 构建 Prompt + 函数信息
    模型-->>Agent: 指定调用工具
    Agent->>MCP: 请求执行函数
    MCP->>工具: 运行任务
    工具-->>MCP: 返回结果
    MCP-->>Agent: 返回执行输出
    Agent->>模型: 更新上下文
    模型-->>Agent: 给出最终答案
    Agent->>用户: 返回结果

这就是从 Prompt 到 Agent 再到工具调度的完整“闭环”。


📎 最后的思考:为什么值得关注这些机制?

今天我们讲了:

  • Prompt 是 AI 输入的起点
  • System Prompt 决定 AI 的“人设”
  • Function Calling 让 AI 有能力“干活”
  • Agent 是可以持续完成任务的执行器
  • MCP 是未来 AI 工具生态的协议基石

这些看似技术细节,其实正在重塑我们与 AI 的交互方式。

未来,AI 不再是被动回答者,而是真正的数字助手