LLM :Function Call、MCP协议与A2A协议

LLM 的函数调用、模型上下文协议 (MCP) 和 Agent to Agent (A2A) 协议:概念、区别与实例对比

引言:LLM 不断演进的格局

大型语言模型 (LLM) 的日益精进,使其能力已超越简单的文本生成,迈向与现实世界进行复杂交互的新阶段。为了真正发挥其潜力,LLM 需要能够访问外部信息并执行操作的机制,这催生了函数调用等技术的发展。此外,人工智能代理的兴起需要标准化的通信和协作方式,从而出现了 MCP 和 A2A 等协议。本文旨在解读这三个关键概念:LLM 的函数调用、模型上下文协议 (MCP) 和 Agent to Agent (A2A) 协议,通过清晰的定义、实例以及对比分析,帮助读者全面理解这些技术及其各自的角色。

LLM 的函数调用:扩展语言模型的能力边界

定义与机制

LLM 的函数调用是指 LLM 从用户提示中识别出需要执行的正确函数(从预定义的一组函数中选择),以及调用该函数所需的正确参数的能力 1。与仅仅生成文本不同,LLM 会输出结构化的数据,通常是 JSON 格式,其中指定了要调用的函数及其参数 2。LLM 本身并不直接执行该函数,它只是以结构化的格式生成调用请求 4。然后,这个请求会被传递给一个独立的程序或系统来执行 4。LLM 的提示中包含了可用函数的详细信息,包括其用途和何时应该使用 4。这项能力弥合了自然语言理解和实际任务执行之间的鸿沟 2。

这种演进体现了 LLM 从被动的信息提供者向能够与世界交互的主动问题解决者的转变。如果没有函数调用,LLM 的能力将仅限于其训练数据。函数调用提供了一种突破这些限制的机制,使其能够利用外部资源来回答问题并执行原本不可能完成的任务。此外,对结构化 JSON 输出的依赖使得函数调用的实现需要仔细设计函数模式和 API 集成。LLM 需要清晰且定义完善的函数模式才能生成有效的 JSON 输出。类似地,外部系统需要能够解析这个 JSON 并执行相应的函数。这凸显了在使用函数调用时,强大的 API 设计和集成的重要性。

简单示例:获取天气数据

假设用户询问:"北京的天气怎么样?"配备了函数调用能力的 LLM 分析了这个请求,并判断需要调用一个获取天气信息的函数。它会生成一个 JSON 输出,例如:{"function": "get_current_weather", "arguments": {"location": "Beijing"}} 7。一个外部系统接收到这个 JSON,使用地点"Beijing"调用了一个天气 API,并检索到天气数据。然后,这个天气数据可以被反馈给 LLM,以生成自然语言的回复,例如:"北京当前天气晴朗,温度为 25 摄氏度。" 2。

这个例子清晰地展示了函数调用在信息检索方面的实际应用。LLM 能够理解用户的意图,并将其转化为对外部系统的具体指令。外部系统执行指令后,LLM 能够将返回的数据整合到自然流畅的回复中,为用户提供有用的信息。

益处与用例

函数调用提供了诸多益处,并广泛应用于各种场景:

  • 访问实时数据: 函数调用允许 LLM 从 API 和数据库等外部来源检索最新的信息 2。

  • 执行操作: LLM 可以触发外部系统中的操作,例如发送电子邮件、安排会议或进行支付 2。

  • 与工具交互: 函数调用使 LLM 能够使用外部工具来完成计算、数据分析或代码执行等任务 4。

  • 构建对话代理: 通过允许聊天机器人超越简单的文本回复并根据用户意图执行任务,从而增强其功能 7。

  • 提高准确性: 通过将回复建立在真实世界的数据基础上,函数调用有助于缓解 LLM 产生幻觉的问题 13。

函数调用在各种 LLM 平台上的日益普及表明,它作为增强 LLM 实用性的基本能力正变得越来越重要。研究资料提到,OpenAI、Google、Anthropic、Mistral 等公司的模型都支持函数调用 8。这种广泛的应用表明,函数调用正成为提高 LLM 能力的标准功能。

洞察

函数调用将 LLM 从被动的信息提供者转变为能够与世界交互的主动问题解决者。它使得 LLM 能够突破其训练数据的限制,利用外部资源来回答问题并执行原本不可能完成的任务。

模型上下文协议 (MCP):标准化 LLM 的上下文

定义与目的

模型上下文协议 (MCP) 是一种开放标准,旨在为应用程序向 LLM 提供上下文信息的方式进行标准化 15。它就像 AI 应用程序的"通用连接器"或"USB-C 端口",简化了 LLM 与外部数据源和工具之间的集成 16。MCP 旨在通过为多个 AI 模型连接到众多工具和数据源提供单一协议,从而解决"M×N 集成问题",消除了对自定义集成的需求 19。它使 LLM 能够安全地访问和交互外部数据源和工具,而无需进行大量的自定义编码 20。

MCP 的出现代表了构建更具互操作性和模块化 AI 生态系统的重要一步。通过标准化 LLM 访问外部资源的方式,MCP 减少了供应商锁定,并鼓励开发可重用的集成。这为 AI 开发创造了一个更加开放和协作的环境。

架构:主机、客户端与服务器

MCP 遵循客户端-服务器架构 18。

  • 主机 (Hosts): 这些是 LLM 应用程序或接口(例如,Claude Desktop,IDE),它们发起信息和任务执行的请求 18。

  • 客户端 (Clients): 这些是主机应用程序中的连接器,与服务器保持一对一的连接,转发请求和响应 18。

  • 服务器 (Servers): 这些是轻量级程序,通过标准化的 MCP 提供对外部工具和数据源(例如,文件系统、数据库、API)的访问 18。

客户端和服务器之间的通信使用 JSON-RPC 2.0 消息,通过各种传输方式进行,例如 stdio、HTTP 服务器发送事件 (SSE) 和 WebSockets 18。

MCP 对用户同意和本地优先安全性的关注,解决了 AI 应用程序中关于数据隐私和控制的关键问题。随着 LLM 越来越有能力与个人数据和外部系统交互,安全性变得至关重要。MCP 的设计强调对操作和资源访问的明确用户批准,反映了对这些安全需求的日益重视。

简单示例:读取文件

用户要求 Claude Desktop 读取其计算机上特定文件的内容。Claude Desktop(主机)使用其 MCP 客户端连接到文件系统 MCP 服务器(一个预构建的服务器 22)。Claude 中的 LLM(可能由提示或内部逻辑触发)确定需要使用文件系统服务器来访问该文件。MCP 客户端向文件系统服务器发送一个 resources/read 请求,指定文件的 URI 18。文件系统服务器在获得用户许可后(这是 MCP 的一个关键安全方面 23),读取文件内容。服务器将文件内容发送回 MCP 客户端。然后,Claude 将文件内容呈现给用户。

这个例子展示了 MCP 如何促进 LLM 应用程序与本地资源的交互。通过标准化的协议,LLM 能够安全地访问用户的文件系统,执行读取操作,并将结果返回给用户。

优势与应用

MCP 具有以下优势并广泛应用于各种场景:

  • 标准化集成: 为连接 LLM 和各种数据源及工具提供通用方法,减少开发时间和复杂性 19。

  • 灵活性和可扩展性: 允许开发人员轻松切换不同的 LLM 模型和提供商,而无需重写集成代码 18。

  • 增强的 LLM 功能: 使 LLM 能够访问实时数据并执行操作,从而提供更准确和上下文丰富的响应 19。

  • 改进的安全性和访问控制: 默认优先考虑隐私,要求用户明确批准每个工具或资源访问 23。

  • 不断增长的生态系统: 预构建服务器和客户端的快速增长的生态系统使得将 LLM 与各种服务集成变得更加容易 18。

将 MCP 比作语言服务器协议 (LSP) 表明,它有着类似的目标,即标准化 AI 开发领域内的交互,就像 LSP 标准化了 IDE 中的语言支持一样 19。LSP 通过为 IDE 和语言服务器之间的通信提供通用协议,彻底改变了语言工具的开发。这个类比表明,MCP 旨在为 LLM 集成实现类似级别的标准化和互操作性。

洞察

MCP 代表了创建更具互操作性和模块化 AI 生态系统的重要一步。它专注于用户同意和本地优先安全性,解决了 AI 应用程序中关于数据隐私和控制的关键问题。MCP 与语言服务器协议 (LSP) 的相似之处表明,它旨在标准化 AI 开发领域内的交互。

Agent2Agent (A2A) 协议:赋能 AI 代理之间的协作

定义与目标

Agent2Agent (A2A) 协议是由 Google 发起的一项开放标准,旨在实现不同 AI 代理系统之间的通信和互操作性 25。它旨在为基于不同框架或由不同供应商构建的 AI 代理提供一种通用语言,使其能够发现彼此的功能、协商交互模式并协作完成任务 25。A2A 试图解决孤立的 AI 系统无法有效通信或共享信息的问题 25。该协议补充了 MCP 等其他方法,后者侧重于为单个代理提供工具和上下文 25。

A2A 的发展表明,人们越来越认识到,即使是具有先进能力的单个 AI 代理也可能不足以应对高度复杂的现实世界问题。转向多代理系统和像 A2A 这样的协议表明,智能实体之间的协作可以释放 AI 中新的问题解决能力。

关键原则与组件

A2A 基于五个关键原则构建:支持自然的代理能力、使用现有标准(HTTP、SSE、JSON-RPC)、默认包含安全性、处理长时间运行的任务以及支持多种媒体类型 25。

  • 代理卡片 (Agent Cards): 代理发布元数据文件(JSON 格式的代理卡片),描述其功能、身份验证要求和支持的交互格式 25。

  • 任务 (Tasks): A2A 中的基本工作单元。客户端代理创建一个任务供远程代理执行。任务有多种状态(已提交、工作中、需要输入、已完成、失败、已取消)25。

  • 工件 (Artifacts): 远程代理执行任务的输出称为工件 26。

  • 该协议支持长时间运行任务的流式更新和断开连接任务的推送通知 25。

A2A 的成功取决于广泛的采用以及不同供应商接受代理通信开放标准的意愿。为了使 A2A 产生重大影响,需要有足够多的 AI 代理开发人员和平台提供商实施该协议。这需要转向开放标准,并放弃专有的通信方法。

简单示例:招聘场景

招聘经理使用一个由 AI 驱动的招聘平台,该平台有一个代理负责管理招聘流程。这个代理(客户端代理)需要寻找合适的软件工程师候选人。它使用 A2A 来发现其他专门的代理,例如一个可以搜索招聘网站的代理和一个可以筛选简历的代理。客户端代理创建一个"寻找候选人"的任务,并将其发送给招聘网站搜索代理,其中包括职位描述和所需技能。招聘网站代理处理该任务并返回一个潜在候选人列表作为工件。然后,客户端代理创建一个"筛选简历"的任务,并将其发送给简历筛选代理,提供已识别候选人的简历。简历筛选代理分析简历并返回一个合格候选人列表作为工件。然后,客户端代理可以继续安排面试,可能使用另一个专门的代理来完成该任务 28。

这个例子生动地展示了 A2A 如何促进不同专业代理之间的协作,以完成像招聘这样复杂的任务。招聘经理的代理发起流程,然后与负责候选人搜寻和背景调查的其他专业代理进行通信。这种协作简化了整个流程,使其更加高效。

潜在影响与用例

A2A 具有巨大的潜力,并适用于各种用例:

  • 打破数据孤岛: 使代理能够访问和共享不同系统和平台上的信息 25。

  • 自动化复杂工作流程: 促进创建多代理系统,其中专门的代理可以协作完成复杂的任务 25。

  • 提高效率和生产力: 通过允许 AI 代理处理原本需要人工干预或大量自定义集成才能完成的任务,从而简化流程 27。

  • 创建专业代理: 鼓励开发在特定领域具有深厚专业知识的代理,然后这些代理可以协作处理更复杂的工作流程 25。

  • 增强企业 AI 协作: 允许组织内不同的 AI 代理动态地交换见解并协调行动 27。

A2A 旨在将团队合作和协作的概念引入 AI 代理领域。正如人类通过协作解决复杂问题一样,A2A 为具有不同专业知识的 AI 代理协同工作提供了一个框架,从而可能产生更强大和更有能力的 AI 系统。

洞察

A2A 旨在将团队合作和协作的概念引入 AI 代理领域。它的成功取决于广泛的采用以及不同供应商接受代理通信开放标准的意愿。A2A 的发展表明,人们越来越认识到,即使是具有先进能力的单个 AI 代理也可能不足以应对高度复杂的现实世界问题。

主要区别与对比示例

直接对比

  • LLM 函数调用: 侧重于使单个 LLM 能够与其自身交互流程中的外部工具和数据源进行交互,以增强其自身的能力。主要目的是扩展 LLM 在文本生成之外的能力。

  • 模型上下文协议 (MCP): 为 LLM 应用程序(主机)安全地连接和交互各种外部服务(服务器)以提供上下文和启用操作提供了一个标准化的框架。其目标是实现不同 LLM 模型和各种工具之间的互操作性。

  • Agent2Agent (A2A) 协议: 侧重于实现多个独立 AI 代理之间的通信和协作,这些代理可能基于不同的框架或由不同的供应商构建。主要目标是促进需要多个智能实体协调的复杂工作流程。

关键区别总结表

|-----------|-------------------------------|---------------------------|---------------------------|
| 特性 | LLM 函数调用 | 模型上下文协议 (MCP) | Agent2Agent (A2A) 协议 |
| 主要关注点 | 扩展单个 LLM 的能力 | 标准化 LLM 应用程序的上下文和工具访问 | 实现 AI 代理之间的通信和协作 |
| 范围 | 单个 LLM 交互 | LLM 应用程序与外部服务之间的交互 | 多个 AI 代理之间的交互 |
| 交互级别 | LLM 在其处理流程中调用函数 | LLM 应用程序使用协议与服务器交互 | 代理使用协议进行通信和协调任务 |
| 标准化 | 主要在特定的 LLM 平台内(例如,OpenAI) | 面向 LLM 上下文和工具集成的开放标准 | 面向代理通信和互操作性的开放标准 |
| 关键实体 | LLM、函数、外部系统 | 主机(LLM 应用程序)、客户端、服务器 | 客户端代理、远程代理、代理卡片、任务、工件 |
| 主要目标 | 访问实时数据、执行操作、使用工具 | 简化集成、增强 LLM 功能、确保安全性 | 打破孤岛、自动化复杂工作流程、促进协作 |

多步骤示例:集成 AI 系统

用户要求一个智能家居助手(由 LLM 提供支持)预订航班并将其添加到日历中。

  • LLM 函数调用: 助手的核心 LLM 使用函数调用来访问航班预订 API,提供从用户查询中提取的旅行偏好。API 返回航班选项。

  • 模型上下文协议 (MCP): 智能家居助手应用程序(主机)使用 MCP 连接到日历服务(MCP 服务器)。LLM 在与用户确认航班后,指示 MCP 客户端使用日历服务的"添加事件"工具,提供航班详细信息。

  • Agent2Agent (A2A): 智能家居助手还有一个"旅行计划代理"。该代理使用 A2A 与"天气预报代理"通信,以获取旅行日期前后目的地城市的天气预报,然后告知用户。

这个多步骤的示例展示了函数调用、MCP 和 A2A 如何协同工作,以创建一个更全面和用户友好的体验。函数调用用于执行特定操作(预订航班),MCP 用于标准化 LLM 应用程序与外部服务(日历)的交互,而 A2A 用于实现不同智能代理(旅行计划和天气预报)之间的通信和信息共享。

洞察

函数调用、MCP 和 A2A 代表了 LLM 和 AI 代理生态系统中不同层次的抽象和交互。它们可以结合使用,创建不仅智能而且互联且能够无缝协作的 AI 系统。

结论:LLM 交互与代理协作的未来

LLM 的函数调用、MCP 和 A2A 是推动 LLM 和 AI 代理发展的关键技术。函数调用使单个 LLM 能够与现实世界交互,极大地扩展了其效用。MCP 为上下文和工具访问提供了一个重要的标准化层,促进了互操作性并简化了开发。A2A 为能够通过协作处理复杂任务的复杂多代理系统铺平了道路。理解这些技术对于开发人员和任何对 AI 未来感兴趣的人来说至关重要,因为它们是创建更智能、更自主和更互联的 AI 系统的关键构建模块。这些协议的持续发展和采用可能会带来更具创新性的应用程序,并使 AI 更无缝地集成到我们生活和工作的各个方面。这些技术的持续发展和日益普及标志着一个更加成熟的 AI 格局,专注于实际应用和互操作性。它们的融合有可能释放以前难以实现的全新 AI 应用程序和服务类别。

Works cited
  1. www.hopsworks.ai, accessed on May 7, 2025, What is Function Calling with LLMs? - Hopsworks

  2. What is Function Calling with LLMs? - Hopsworks, accessed on May 7, 2025, What is Function Calling with LLMs? - Hopsworks

  3. LLM Agent vs Function Calling: Key Differences & Use Cases - PromptLayer, accessed on May 7, 2025, LLM Agent vs Function Calling: Key Differences & Use Cases

  4. Function calling using LLMs - Martin Fowler, accessed on May 7, 2025, Function calling using LLMs

  5. What is LLM Function Calling and How Does it Work? | Quiq Blog, accessed on May 7, 2025, https://quiq.com/blog/llm-function-calling/

  6. Understanding RAG vs Function Calling for LLMs - GetStream.io, accessed on May 7, 2025, RAG vs Function Calling for LLMs

  7. Function Calling with LLMs | Prompt Engineering Guide, accessed on May 7, 2025, Function Calling with LLMs | Prompt Engineering Guide

  8. LLM Function Calling Goes Way Beyond Text Generation - K2view, accessed on May 7, 2025, LLM Function Calling Goes Way Beyond Text Generation

  9. Top 6 LLMs that Support Function Calling for AI Agents - Analytics Vidhya, accessed on May 7, 2025, Top 6 LLMs that Support Function Calling for AI Agents

  10. Function Calling with Open-Source LLMs - BentoML, accessed on May 7, 2025, Function Calling with Open-Source LLMs

  11. Function Calling - Hugging Face, accessed on May 7, 2025, https://huggingface.co/docs/hugs/guides/function-calling

  12. Function Calling in LLMs -- Real Use Cases and Value? : r/AI_Agents - Reddit, accessed on May 7, 2025, https://www.reddit.com/r/AI_Agents/comments/1iio39z/function_calling_in_llms_real_use_cases_and_value/

  13. Leveraging LLM function calling to harness real-time knowledge - Fabrity, accessed on May 7, 2025, Leveraging LLM function calling to harness real-time knowledge - Fabrity

  14. Function calling | Mistral AI Large Language Models, accessed on May 7, 2025, Function calling | Mistral AI Large Language Models

  15. Model context protocol (MCP) - OpenAI Agents SDK, accessed on May 7, 2025, Model context protocol (MCP) - OpenAI Agents SDK

  16. Model Context Protocol (MCP) - Anthropic API, accessed on May 7, 2025, Model Context Protocol (MCP) - Anthropic

  17. docs.anthropic.com, accessed on May 7, 2025, Model Context Protocol (MCP) - Anthropic

  18. Model Context Protocol: Introduction, accessed on May 7, 2025, Introduction - Model Context Protocol

  19. What Is the Model Context Protocol (MCP) and How It Works - Descope, accessed on May 7, 2025, What Is the Model Context Protocol (MCP) and How It Works

  20. Model Context Protocol (MCP): A comprehensive introduction for developers - Stytch, accessed on May 7, 2025, Model Context Protocol (MCP): A comprehensive introduction for developers

  21. Model Context Protocol (MCP): Why it matters! | AWS re:Post, accessed on May 7, 2025, https://repost.aws/articles/ARK3Jah0ZyS8GkPTsOJSnZkA/model-context-protocol-mcp-why-it-matters

  22. An Introduction to Model Context Protocol - MCP 101 - DigitalOcean, accessed on May 7, 2025, MCP 101: An Introduction to Model Context Protocol | DigitalOcean

  23. Model Context Protocol (MCP) Explained - Humanloop, accessed on May 7, 2025, Model Context Protocol (MCP) Explained

  24. Specification - Model Context Protocol, accessed on May 7, 2025, Specification - Model Context Protocol

  25. Understanding Agent2Agent (A2A): A Protocol for LLM ..., accessed on May 7, 2025, https://www.trevorlasn.com/blog/agent-2-agent-protocol-a2a

  26. A2A/llms.txt at main · google/A2A - GitHub, accessed on May 7, 2025, https://github.com/google/A2A/blob/main/llms.txt

  27. A2A Protocol & LLM Integration: A Complete Guide - BytePlus, accessed on May 7, 2025, A2A Protocol & LLM Integration: A Complete Guide

  28. Announcing the Agent2Agent Protocol (A2A) - Google Developers ..., accessed on May 7, 2025, https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/

  29. Agent to Agent Protocol: Helping AI Agents Work Together - Analytics Vidhya, accessed on May 7, 2025, Agent to Agent Protocol: Helping AI Agents Work Together

  30. Community - Agent2Agent Protocol (A2A) - Google, accessed on May 7, 2025, Community - Agent2Agent Protocol (A2A)

  31. MCP and A2A Protocols Explained The Future of Agentic AI is Here - Teneo.Ai, accessed on May 7, 2025, MCP and A2A Protocols Explained The Future of Agentic AI ...

相关推荐
Echo``4 分钟前
2:点云处理—3D相机开发
人工智能·笔记·数码相机·算法·计算机视觉·3d·视觉检测
create1721 分钟前
使用 AI 如何高效解析视频内容?生成思维导图或分时段概括总结
人工智能·aigc·语音识别·ai写作
Alfred king22 分钟前
华为昇腾910B通过vllm部署InternVL3-8B教程
llm·nlp·vllm部署
TIANE-Kimmy31 分钟前
FID和IS的区别
人工智能·深度学习·计算机视觉
Mr-Apple35 分钟前
Decode rpc invocation failed: null -> DecodeableRpcInvocation
网络·网络协议·rpc
知舟不叙1 小时前
使用OpenCV 和 Dlib 实现人脸融合技术
人工智能·opencv·计算机视觉·人脸融合
碣石潇湘无限路1 小时前
【AI】基于生活案例的LLM强化学习(入门帖)
人工智能·经验分享·笔记·生活·openai·强化学习
IpdataCloud1 小时前
IP 风险画像如何实现对恶意 IP 的有效拦截?
网络·网络协议·tcp/ip
HumbleSwage2 小时前
深度学习中常用的符号表达式
人工智能·深度学习
运维有小邓@2 小时前
比较入站和出站防火墙规则
服务器·网络·php