当前位置: 首页 > ops >正文

Function calling和mcp区别

Function callingMCP(Model Context Protocol,模型上下文协议) 都是让大语言模型(LLM)与外部世界交互的方案,但在设计目标、覆盖范围和实现方式上有明显差异。


一、什么是 Function calling

  • 定义
    Function calling 是 OpenAI 在 GPT 系列(如 gpt-4-0613、gpt-3.5-turbo-0613 等)中推出的一项 API 功能。开发者在请求里向模型提供一组“函数定义”(包括函数名、参数 JSON Schema、描述等),模型会根据对话内容自动判断是否需要调用其中某个函数,并输出一个符合 Schema 的 JSON 调用指令。

  • 典型流程

    1. 客户端调用 Chat Completions API,并在 functions 参数里传入若干函数定义。

    2. 模型在生成回复时,如果判断需要外部操作,就输出:

      {"name": "get_current_weather","arguments": { "location": "Boston", "unit": "celsius" }
      }
      
    3. 客户端接收上述函数调用指令,执行本地或远程函数,获得返回值后,再把结果传给模型,模型据此生成最终回复。

  • 适用场景

    • 简化“自然语言 → API 调用” 的桥梁(比如天气查询、发邮件、数据库查询等)。
    • 插件式扩展:只需定义少量函数,就能让模型具备新能力。 (OpenAI)

二、什么是 MCP

在这里插入图片描述

  • 定义
    MCP(Model Context Protocol)是由 Anthropic 推动的开放标准协议,旨在为任意 LLM 应用提供一个统一的上下文交互层。它不只是“函数调用”,而是涵盖了对各种资源、工具、提示词、采样策略和传输方式的标准化规范。

  • 核心模块

    1. Resources(资源):数据库、文件系统、API 等外部数据源
    2. Prompts(提示词):如何动态拼装上下文给模型
    3. Tools(工具):可执行操作的函数、脚本或微服务
    4. Transports(传输层):支持 stdio、SSE 等协议,保证模型与 MCP 服务器之间通信可靠
  • 生态与发展

    • 2024 年 11 月开源,Anthropic 示例中用 Claude 客户端一分钟内接入 GitHub 并发起 PR (The Verge)
    • 2025 年 4 月获得行业认可,Axios 报道称它正成为 LLM 与日常应用、企业系统互联的“USB-C”标准 (Axios)
  • 适用场景

    • 构建多步骤、跨工具的智能 Agent(如业务流程自动化)
    • 需要对上下文做精细化管理:不仅是调用一次函数,而是持续维护资源、提示和状态

在这里插入图片描述
在这里插入图片描述

三、主要区别对比

Function callingMCP(Model Context Protocol)
范畴OpenAI API 的内建能力跨模型、跨平台的开放协议
覆盖范围仅「函数调用」:自然语言→API/函数包含「资源接入」+「提示管理」+「工具暴露」+「传输层」等
接口规范JSON Schema 定义函数签名与参数统一的 MCP 规范文档,定义 Resources/Tools/Prompts 等
运作模式模型判断并发起单次或并行函数调用应用方搭建 MCP Server,模型与之持续交互
典型应用天气查询、发邮件、简单数据库查询企业级数据报表、跨系统自动化工作流、复杂 Agent

四、小结

  • 如果仅需让 GPT 在对话中智能地调用几个接口,Function calling 无疑是开箱即用的最佳选择。
  • 若要构建一个可组合、可扩展的 AI 应用生态,让模型能随时访问各种数据源、执行多步任务,并在不同工具间保持上下文连贯,则更适合采用MCP这样完整的协议层
http://www.xdnf.cn/news/9418.html

相关文章:

  • HTML5基础
  • 人工智能100问☞第35问:什么是Transformer模型?
  • 数据库-算法学习C++(入门)
  • Android-kotlin协程学习总结
  • 如何通过创新科技手段打造美术馆展厅互动体验,提升观众沉浸感?
  • 《P5507 机关》
  • java操作服务器文件(把解析过的文件迁移到历史文件夹地下)
  • VM改MAC电脑密码(截图)
  • 佰力博科技与您探讨DEAI介电阻抗分析仪的特点
  • day023-网络基础与OSI七层模型
  • 变色龙Ultra编译指南:从零开始
  • Python爬虫实战:抓取百度15天天气预报数据
  • Dropout 在大语言模型中的应用:以 GPT 和 BERT 为例
  • Oracle RMAN 备份脚本
  • 【GraphQL】深入解析 Apollo Client:从架构到实践的一站式 GraphQL 解决方案
  • [java八股文][JavaSpring面试篇]Mybatis
  • 英语写作中“表达、表述”expression statement 的用法
  • 题海拾贝:P1208 [USACO1.3] 混合牛奶 Mixing Milk
  • 构建安全高效的邮件网关ngx_mail_ssl_module
  • 4.8.1 利用Spark SQL实现词频统计
  • 2025人脸识别备案新规:企业个人权益保障
  • 青少年编程与数学 02-020 C#程序设计基础 08课题、字符和字符串
  • HTTP代理的实际用处有哪些?HTTP代理强在哪里?
  • 解决“无法打开或关闭Windows功能”问题
  • 如何区分防爆手机与普通手机?
  • XGBoost与SHAP深度解析:从算法原理到实战价值
  • 打卡第31天:模块和库的导入
  • DrissionPage:重新定义Python网页自动化,让爬虫与浏览器控制合二为一
  • LVS-DR群集
  • Linux之守护进程