Function Calling、MCP 与 A2A 的区别与使用方式

引言

本文主要讲一下AI 的三种关键技术以及三者之间的区别:Function Calling、模型上下文协议 (MCP) 和Agent To Agent(A2A) 通信。

想象一下,你有一个非常聪明的 AI 助手(比如一个大语言模型),但它本身只能聊天和生成文字,没法直接帮你查天气、订机票或者控制智能家居。为了让它更强大、能做更多事,就有了下面这些技术:

Function Calling (函数调用)

做什么的 (What):

让 AI 能够“请求”你(或者你的程序)去运行一些它自己本身干不了的外部功能。就像 AI 说:“我需要查一下明天北京的天气,你能帮我查一下吗?”

怎么做 (How):

Function Calling

你先定义好工具: 你先准备好一些具体的“功能”(比如一个 查询天气(城市) 的函数)。
告诉 AI 有哪些工具: 你在和 AI 沟通时,明确告诉它:“我有这几个工具(函数)你可以用,它们分别是干什么用的,需要什么信息(参数)。”
AI 决定用哪个: 当你给 AI 下指令时(比如“帮我查查明天北京天气怎么样?”),AI 会分析你的话,觉得需要用到 查询天气 这个功能,并且知道城市参数是“北京”。
AI 发出请求: AI 不会自己执行,而是会生成一个结构化的“请求”,告诉你:“请调用 查询天气 函数,参数是 城市=‘北京’”。
你执行并返回结果: 你的程序收到这个请求,真的去调用那个 查询天气 的代码,得到结果(比如“明天北京晴,15-25度”)。
把结果告诉 AI: 你再把这个天气结果告诉 AI。
AI 整合回答: AI 拿到结果后,就能用更自然的语言回复你了:“北京明天天气不错,是晴天,温度在15到25度之间。”

为什么这样做 (Why):

扩展能力: 让 AI 能连接现实世界,获取最新信息(天气、股价)、操作外部系统(订票、发邮件)、执行复杂计算等。
可靠可控: AI 只负责“决定”调用哪个函数和需要什么参数,实际的执行由你的代码完成,这样更安全、结果更准确。AI 不会胡乱执行代码(减少模型幻觉)。

MCP (Model-Controlled Planning)

做什么的 (What):

和 Function Calling 类似, 尽管 Function Calling 功能强大,但它在不同平台之间可能存在供应商特定的差异,并且可能缺乏一种标准化的方式供 AI 模型跨平台一致地访问外部上下文和工具 。为了解决这个问题,模型上下文协议 (MCP) 应运而生。MCP 是一种开放协议,旨在标准化应用程序向 LLM 提供上下文的方式, 可以理解为 Function Calling 升级版

怎么做 (How):

MCP 采用客户端-服务器架构 ,其核心组件包括:

  • MCP 主机 (Hosts):
    这是指需要访问外部数据和工具的 AI 应用程序,例如 Claude Desktop、集成开发环境(IDEs)或自定义 AI 代理 。主机负责协调整个系统,并管理与 LLM 的交互。
  • MCP 客户端 (Clients):
    客户端嵌入在主机应用程序内部,负责维护与 MCP 服务器的一对一连接,并处理底层的通信协议 。它们的主要职责包括路由消息、发现服务器提供的功能以及管理连接的生命周期 。
  • MCP 服务器 (Servers):
    这些是轻量级的程序,通过标准化的 MCP 协议暴露特定的能力,例如工具、资源和提示 。服务器充当 AI 应用程序与外部系统、数据源和 API 之间的中介。
为什么这样做 (Why):

MCP 的出现和发展是出于多方面的考虑,其核心目标在于解决当前 AI 应用发展中的一些关键痛点:

  • 增强互操作性:
    MCP 提供了一种标准化的方式来连接 AI 模型与工具和数据,从而显著降低了将不同的 LLMs 与各种外部系统集成的复杂性。
  • 简化集成过程:
    开发者可以基于一个标准的协议进行构建,而无需为每个数据源维护单独的连接器,从而节省了大量的时间和精力。
  • 提高灵活性:
    MCP 使得在不同的 AI 模型和供应商之间进行切换变得更加容易,从而避免了对特定供应商的锁定。
  • 提升安全性和控制:
    在与 AI 交互时,MCP 将数据保留在用户的基础设施内部,从而提供了对敏感信息更好的控制。用户同意和控制是 MCP 的关键原则。
  • 增强可扩展性和模块化:
    客户端-服务器架构促进了模块化设计,允许在不修改核心 AI 应用程序的情况下添加新的工具和数据源。

A2A (Agent-to-Agent Communication - 智能体间通信)

做什么的 (What):

让多个独立的 AI 智能体(Agent)能够互相沟通、协作,共同完成一个更大的目标。就像一个团队里,不同的人(AI)负责不同部分,需要互相交流信息和协调工作, 可以理解为作为MCP的一个补充。

A2A

怎么做 (How):

设定角色和目标: 你可能设计多个 AI 智能体,每个有不同的专长或任务。比如一个“研究员 AI”负责搜集信息,一个“作家 AI”负责整理成报告。
建立沟通机制: 定义好这些 AI 之间如何“说话”(消息格式、通信协议)。
信息传递与协作: 当需要协作时,一个 AI(比如“项目经理 AI”)会给另一个 AI(比如“研究员 AI”)发送指令或请求信息:“请帮我查一下关于‘人工智能最新进展’的资料。”
响应与反馈: “研究员 AI”收到请求后,可能会使用 Function Calling 去搜索,然后把找到的资料发回给“项目经理 AI”或者直接发给“作家 AI”。
共同完成任务: 通过这种相互沟通和信息传递,整个 AI 团队最终完成报告的撰写。

为什么这样做 (Why):

使不同的 AI 代理能够相互交流、协作,不同代理之间无需共享内存、资源和工具即可进行动态、多模式通信,从而共同完成复杂的任务

一张图总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值