工具使用是大模型/智能体的基础,没有工具的大模型/智能体就相当于只有大脑,没有手脚,由于大模型无法直接操作外部世界。而提到工具使用,Function Calling 和 MCP 是避不开的两个技术。在 AI 应用中,Function Calling 可以用于让大模型调用外部工具或 API 来获取实时数据或执行特定任务(例如查询天气、发送邮件等)。而MCP(Model Context Protocol)是一种用于管理和传递模型上下文信息的协议,确保不同组件之间能够正确地共享和同步模型的状态。用个通俗易懂的例子讲就是Function Calling 就像你让助理帮你“打电话订外卖”,它负责执行具体动作,而 MCP 可以记住你点了什么外卖、备注是什么。
Function Calling
Function Calling(函数调用)是一种允许语言模型调用外部工具或函数的技术,用于扩展模型的能力。核心是让大语言模型(LLM)理解用户意图,并判断是否需要调用外部工具(如API、数据库、硬件设备)来完成任务,获取实时数据或执行复杂操作。
Function Calling就像是给AI配备了一个遥控器,让它能够按下特定按钮来完成特定任务,而不需要自己动手做所有事情。想象你在使用电视遥控器:当你想调大音量,你就按”音量+”按钮;想换频道,就按频道按钮。AI的Function Calling也是如此,当AI理解到用户需要查天气、计算数学题或预订餐厅时,它不会自己编造答案,而是按下正确的”按钮”(调用对应的函数),将任务交给专门的工具来完成,然后将结果呈现给用户。这样AI就能做到”既懂得你要什么,又知道如何正确地让外部工具帮你完成它”。

工作流程:• 函数定义(开发者提供)• 定义可调用的函数(如get_current_weather),包含函数名称、说明、参数类型和约束• 用户输入解析(大模型分析)• 模型接收用户的自然语言指令(例如:“今天上海的温度是多少?”)。• 模型判断是否需要调用外部工具(如需要实时天气数据)。• 函数选择与参数生成• 模型根据预定义的函数列表(如 get_weather(location: str)),选择匹配的函数。• 模型提取参数(如 location=”上海”),并生成结构化请求(JSON格式)。• 平台调用外部工具• 平台(如OpenAI的API、HuggingFace的推理服务)接收结构化请求,调用对应的外部工具(如天气API)。• 工具执行后返回结果(如 {“temperature”: 28℃})。• 结果整合与回复生成• 模型接收工具返回的数据,结合上下文生成最终的自然语言回复(如“上海今天气温28℃”)。

目前 Function Calling存在的问题:每个AI提供商有自己的实现方式,缺乏通用标准,并且有的模型是不支持Function Calling的(例如早期deepseek r1,最新版已经支持了)。
MCP
Model Context Protocol (模型上下文协议),是由Anthropic(Claude的开发公司)于2024年11月底推出的开放标准协议,目的是统一大型语言模型(LLM)与外部数据源和工具之间的通信方式,在保持对话上下文的同时扩展模型能力。

MCP(模型上下文协议)就像是AI的”万能转接器”,让AI可以直接连接和使用各种外部工具和数据源,而不必事先把所有知识都塞进AI的脑子里。就像现代手机的USB-C接口一样,无论你想要充电、传输数据、连接显示器还是接耳机,都可以通过这一个标准接口完成。在有USB-C之前,每种功能可能需要不同的接口(充电口、耳机孔、HDMI接口等);同样,MCP让AI无需针对每种工具开发专门的连接方式,只需一个标准协议就能连接各种各样的外部资源和工具,大大扩展了AI的能力范围。
什么是模型上下文?想象你和一个朋友聊天。如果朋友突然问你:“昨天那件事你怎么看?”——你必须知道“昨天那件事”是什么,才能正确回答。这里的“昨天那件事”就是上下文,它协助你理解当前问题的背景。在AI模型中,上下文就是模型在处理问题时,能“记住”或“理解”的背景信息。包括用户之前的问题或对话历史、任务相关的额外信息、模型本身的知识库等。
工作原理:MCP采用客户端-服务器架构,主要由以下三个关键组件构成:1. Host(主机): LLM应用程序,如Claude Desktop或集成了AI功能的IDE(如Cursor),负责管理一个或多个MCP客户端。2. Client(客户端): 嵌入在主机应用中,负责与服务器通信,将请求转发给服务器并处理返回的结果。3. Server(服务器): 提供三种核心功能:• Resources(资源): 为模型提供数据源(如文件、数据库)• Tools(工具): 模型可调用的函数或API• Prompts(提示词): 预定义的模板以指导模型行为

通信流程:1. 初始化阶段:• 客户端发送initialize请求,指定协议版本和能力• 服务器响应其支持的版本和能力• 客户端发送initialized通知作为确认2. 消息交换阶段:• 请求-响应模式:客户端或服务器发送请求,对方回应• 通知模式:单向消息,不需要响应3. 终止阶段:• 通过close方法进行清理关闭• 或通过断开传输连接终止
主要解决的痛点就是Function Calling存在的问题:每个AI提供商有自己的实现方式,缺乏通用标准,开发起来比较费力,并且有的模型是不支持Function Calling的(例如早期的deepseek r1)。

工具/插件管理
如上个章节所述,外部工具调用能去丰富智能体(大模型)的能力,因此,统一的工具(插件)管理也就十分必要。工具(插件)简单来说就是封装好的API,目前市面上主流的智能体平台的插件/工具开发规范都是符合openapi协议(构建好工具服务后,通过OpenAPI Schema代码接入到平台),或者通过MCP 协议格式接入工具,接入到智能体平台中供后续智能体调用,可以适配不同的模型函数调用的结构。
以上就是关于工具使用的全部内容,那么你对于Function Calling与MCP是如何理解的呢?欢迎评论区留言。
本文由人人都是产品经理作者【大波子】,微信公众号:【波仔的杂货铺】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。
题图来自Unsplash,基于 CC0 协议。
受益匪浅👏