AI 入门—— 一起来学Function Call、MCP、Agent

文章大纲

引言

在人工智能快速发展的当下Agent、MCP、Function Call这三个概念频繁出现在各种技术讨论中,但它们之间存在相似性,容易被混淆。

本文所有知识整理自网络和个人的一些浅薄的理解,仅供参考,因为有些理解我不知道是否是正确的

一、Function Call

Function Call函数调用是大模型调用外部函数或API以获取信息、执行计算或与系统交互的机制,Function Call绑定到大模型身上后使得大模型可以调用外部函数或API以增强大模型能力,是连接自然语言与程序化工具的桥梁。

1、核心价值

  • 突破模型闭域限制:通过调用外部工具(如数据库、API、专业软件)扩展LLM能力边界
  • 提升响应可靠性:将开放域问题转化为确定性函数执行(如数学计算转Wolfram Alpha调用)
  • 实现动作代理:从纯文本生成升级为可编程行为(如发送邮件、修改代码)
  • 通常与大模型绑定 ,作为模型的一部分,增强大模型能力的直接方式

2、Function Call 时序图

以下是ChatGPT 利用Function call解答“北京今日气温?”的时序图:

在这里插入图片描述

3、Function call如何嵌入到模型中?

Function Call 就是升级版的ChatGPT插件,就是把ChatGPT插件的过程API化,是深度绑定到模型中,模型运行时直接调用的,就像是模型内部的协议一样,通过结构化的描述文件来简化通信流程。

ChatGPT 插件的机制:你的服务端给它提供一个描述文件,就是告诉 ChatGPT 怎么调用你的接口,以及这些接口都能做什么。 那么当用户在使用 ChatGPT 的时候,如果 ChatGPT 认为用户提的某些问题,你的插件能够更好的解决,那么 ChatGPT 就会直接去调用你插件的接口。
https://www.swiftcafe.io/post/openai-api

二、什么是MCP?

MCP(Model Context Protocol) 是大语言模型(LLM)与外部数据源、工具及服务之间的交互的一种通用的开放通信协议。其核心目标是通过统一的接口框架,解决AI模型与真实环境连接不足的问题,使模型能够动态感知上下文并调用多样化工具,从而扩展其功能边界。

三、MCP Server

1、MCP 架构

在这里插入图片描述

MCP 协议基于C-S架构,核心组件包括:

  • MCP Hosts主机: 像 Claude Desktop、IDE 或 AI 工具这样的程序,它们希望通过 MCP 访问数据
  • MCP Clients客户端: 维护与服务器 1:1 连接的协议客户端
  • MCP Servers服务器: 每个暴露特定功能的轻量级程序通过标准化的模型上下文协议
  • Local Data Sources 本地数据源: 您计算机的文件、数据库和服务,MCP 服务器可以安全地访问
  • Remote Services 远程服务: 可以通过互联网(例如,通过 API)访问的外部系统,MCP 服务器可以连接到

MCP通过标准化接口和动态工具发现机制,正在重构AI与工具生态的协作范式。其本质是构建LLM与真实世界的通用适配层,既解决了模型与环境的割裂问题,又降低了开发者的集成成本

2、MCP的通信机制

  • 消息格式:基于JSON-RPC 2.0协议,支持请求(双向)、响应、通知(单向)三类消息类型。
  • 传输方式:
    • 本地通信:通过标准输入输出(stdio)传输,适用于IDE等本地工具集成。
    • 远程通信:使用SSE(Server-Sent Events)实现HTTP长连接,支持跨网络服务调用

3、MCP Server的核心功能

3.1、动态工具发现

MCP Server 允许 LLM 运行时动态获取已注册的工具列表(如数据库查询、文件操作等),无需硬编码集成,极大提升灵活性和扩展性。

3.2、权限控制与安全执行

支持细粒度权限管理(开发者/用户/模型层级),并通过沙箱技术(如 Docker、WASM)隔离工具执行环境,保障数据安全。

3.3、资源暴露与工具调用

可安全暴露本地文件、数据库记录或远程 API 服务,供 LLM 通过自然语言指令调用,例如查询 PostgreSQL 数据库或生成 3D 建模指令。

3.4、实时通信与上下文管理

支持双向通信(如 SSE 事件流),实时推送数据更新至 LLM,维持会话状态以优化多轮交互

4、MCP Server的应用

在这里插入图片描述

5、MCP 的开发(略)

四、什么是Agent?

Agent(智能体)指能够自主动态感知环境、规划任务并调用外部能力(外部服务、外部工具、数据库、MCP、Function Call等)以实现目标的实体,具备环境交互、决策与学习能力。与普通程序最大的不同,Agent具有环境感知的动态响应能力(如自动驾驶实时避障),而传统程序仅按预设流程执行。Agent可以:

  • 可以调用外部服务 (工具、数据库等)
  • 具备自主决策能力 ,完成复杂任务

可以调用MCP、Function Call等能力

在这里插入图片描述

1、Agent 的特征

其核心特征是“自主代理,动态规划”,代替用户或系统完成任务。

  • 自主决策:能够根据目标制定计划
  • 状态记忆:能够保持上下文连贯性
  • 迭代改进: 能够根据反馈动态调整策略
  • 情境感知:通过多模态传感器融合(如Tesla的8摄像头+雷达系统)
    一般的核心工作流模型为:环境输入 → 感知滤波 → 状态评估 → 策略生成 → 动作执行 → 效果反馈。

2、Agent的形态

根据形态可分为:

  • 软件Agent(如聊天机器人、推荐算法)
  • 物理Agent(如自动驾驶汽车、工业机器人)
  • 混合Agent(如无人机搭载视觉识别系统)

3、Agent的工作时序图

在这里插入图片描述

五、Function Call vs MCP vs Agent

Function Call是指大模型直接调用预定义函数的能力,允许模型生成请求参数并整合结果。例如模型可以通过Function Call查询天气或执行简单的数学计算。它的本质是“代码级工具”,通常与模型绑定部署。Agent是一种具备自主决策能力的AI实体,能够感知环境、规划任务并自主调用工具(包括MCP Server和Function Call)完成目标。例如,一个Agent可以接到“撰写AI趋势报告”的任务后,自动抓取数据、分析内容并生成报告。 MCP Server的功能相对单一,专注于提供数据和工具接口的工具箱。例如,它可以抓取网页、读取文件或调用API,但不具备推理能力。

1、复杂度与能力方面

在这里插入图片描述


在这里插入图片描述

2、 响应方式

在这里插入图片描述

3、三者协同

在这里插入图片描述


在这里插入图片描述

4、功能对比

在这里插入图片描述

5、总结

AI Agent 是一个智能系统,它可以自主运行以实现特定目标。传统的 AI 聊天仅提供建议或者需要手动执行任务,AI Agent 则可以分析具体情况,做出决策,并自行采取行动。而AI Agent 可以利用 MCP 提供的功能描述来理解更多的上下文,并在各种平台/服务自动执行任务。如果Agent想要更好地完成任务,一般需要接入足够多的外部工具,而外部工具的接入千差万别;Function Call是大模型本身的一种能力,可以调用外部函数或API以增强大模型能力,但它同样面临着不同开发者自由定义导致的不标准问题;MCP则是给AI应用提供了一套标准化协议,方便AI应用更好地访问外部工具,以提升大模型的响应能力。

参考文档:
https://zhuanlan.zhihu.com/p/28064225853
https://mmssai.com/archives/31934
https://www.woshipm.com/ai/6198952.html

Read more

Flutter 三方库 flutter_adaptive_scaffold 的鸿蒙化适配指南 - 掌握一套代码适配全场景终端的自适应架构技术、助力鸿蒙应用构建从手机到平板及折叠屏的极致无缝交互体系

Flutter 三方库 flutter_adaptive_scaffold 的鸿蒙化适配指南 - 掌握一套代码适配全场景终端的自适应架构技术、助力鸿蒙应用构建从手机到平板及折叠屏的极致无缝交互体系

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 flutter_adaptive_scaffold 的鸿蒙化适配指南 - 掌握一套代码适配全场景终端的自适应架构技术、助力鸿蒙应用构建从手机到平板及折叠屏的极致无缝交互体系 前言 在 OpenHarmony 鸿蒙应用追求“万物互联、全场景覆盖”的伟大进程中,屏幕尺寸的多样性(从 6 英寸手机到 12 英寸平板,再到 2D/3D 模式切换的折叠屏)是每一位 UI 开发者必须正面迎接的挑战。如何在不为每种设备重写 UI 的前提下,实现导航栏自动从“底部”平滑流转到“侧边”?如何在宽屏模式下自动开启“双栏(Master-Detail)”布局?flutter_adaptive_scaffold 作为一个由 Flutter

By Ne0inhk
Flutter 三方库 system_shortcuts 的鸿蒙化适配指南 - 实现快速触发系统级快捷功能、支持 WiFi 开关、亮度调节与系统设置一键直达

Flutter 三方库 system_shortcuts 的鸿蒙化适配指南 - 实现快速触发系统级快捷功能、支持 WiFi 开关、亮度调节与系统设置一键直达

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 system_shortcuts 的鸿蒙化适配指南 - 实现快速触发系统级快捷功能、支持 WiFi 开关、亮度调节与系统设置一键直达 前言 在进行 Flutter for OpenHarmony 的应用工具开发时,能够快速引导用户跳转到系统设置页面,或直接触发某些系统级快捷功能(如切换静音、调节亮度)是提升交互效率的关键。system_shortcuts 是一个封装了各平台快捷路径的库。本文将探讨如何在鸿蒙系统下利用该库构建极致便捷的系统级操作流。 一、原理解析 / 概念介绍 1.1 基础原理 system_shortcuts 核心是通过平台通道(MethodChannel)调用操作系统的 want(鸿蒙的启动意图)或特定的系统服务接口。它屏蔽了复杂的跳转 URI 拼接,提供了语义化的接口。 封装

By Ne0inhk
云开发 Copilot ——让开发变得更简单

云开发 Copilot ——让开发变得更简单

声明:本篇博客为云开发 Copilot体验文章,非广告 目录 前言: 游客体验 云开发 Copilot实战: 一、图片生成需求 二、云开发 Copilot实现需求 三、AI生成低代码页面 Copilot 的亮点功能 使用场景 云开发 Copilot开发的前景展望 前言: 在云开发AI+中,腾讯云提供一系列与 AI 相关的功能,如大模型接入、 Agent 等,帮助开发者为自己的小程序、web 或者应用快速接入 AI 能力,同时也提供了云开发 Copilot,来加速用户的开发,帮助用户更快构建自己的应用。下面博主将会为大家实战使用云开发 Copilot来助力开发。 云开发 Copilot是云开发推出的一款 AI 开发辅助工具,可以帮助用户快速生成多种类型的应用功能,包括低代码应用、页面、组件、数据模型、

By Ne0inhk
Flutter 三方库 appstream 的鸿蒙化适配指南 - 驾驭 Linux 生态元数据规范,打造高性能、标准化、国际化的 OpenHarmony 桌面应用商店分发基石

Flutter 三方库 appstream 的鸿蒙化适配指南 - 驾驭 Linux 生态元数据规范,打造高性能、标准化、国际化的 OpenHarmony 桌面应用商店分发基石

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 appstream 的鸿蒙化适配指南 - 驾驭 Linux 生态元数据规范,打造高性能、标准化、国际化的 OpenHarmony 桌面应用商店分发基石 前言 随着鸿蒙(OpenHarmony)生态向 PC 和平板端的高速扩张,如何为海量的三方软件建立一套标准化的“数字档案”,成了构建应用商店生态的核心痛点。过去,开发者提交应用信息时,往往采用碎片化的 JSON 或自定义文档。这会导致软件分发时详情页展示不一、多语言支持混乱,甚至连基本的截图和版本日志都难以对齐。 为了解决这个问题,我们需要引入一套具备全球化视野的元数据定义标准。appstream 作为 Linux 生态下最重要的应用信息描述规范,能够通过结构化的 XML 标签,精准定义软件的身世、功能和展示资产。适配到鸿蒙平台后,它不仅能让你的重型“鸿蒙私有应用商店”瞬间具备吞金般的解析能力,

By Ne0inhk