大模型应用与扩展-Function Calling与MCP
本文最后更新于 2025年6月17日 下午
大模型的交互过程

这是一个简单的提问-响应过程。为了解决模型的“幻觉问题”,可以通过多种方式向模型添加有用的信息来增加模型响应结果的可信度

1 . 多轮对话,通过多次提问过程,更加精确的描述用户的实际需求。如Agent
2 . 客户端代理对用户请求进行扩展,最终请求 携带 代理描述信息+原用户请求,向大模型发起请求。如RAG,MCP
3 . 模型端 功能扩展,模型端使用本地工具(一般是一些方法调用)来自行获取扩展信息,增强相应质量。如Function Calling
综上,在从流程上,大模型的扩展会有本地端的功能增强,服务端功能增强两种方式。从内容上,则分为 调用 / 内容 两种。
Function与MCP
我们知道 ,只有每一次请求的发起都会被正确转化为对特定功能的调用,这时AI 所能提供的服务才可以作为稳定系统的一部分。在这个角度,大模型能否根据用户请求,进行稳定的参数调用响应。成为大模型能否参与到业务流程中的重要要求。

Function Calling
Function Calling 是 openai提供的一种序列化请求/响应的方式。通过向大模型发起结构化的调用请求,模型会分析请求内容,并响应对应的函数以及参数调用。
MCP
MCP(Model Context Protocol) 模型上下文协议。它是一种与模型的通信方式。其定义了MCP Client 和MCP Sever 两种角色。也可以将MCP理解为一个位于本地的中间过程代理。通过接收用户向模型发起的请求,之后查询本地支持的API字段,组装后向大模型发起请求,大模型接收后分析用户请求以及其中定义的tools信息。响应一个方法调用请求(function call 在这个步骤被执行)给MCP server. MCP server 接收后。根据调用请求在本地执行对应的方法,获取返回信息,再传递给大模型处理。大模型处理后,整理结果向用户返回。

MCP 实现
客户端
MCP 架构 定义了 3个过程角色 :
- MCP HOST : 主要负责与用户进行交互。接收用户发出的消息请求
- MCP Client : 组织message,构造发送给模型的请求。一般将MCP HOST 包含在客户端内
- MCP Server : 维护本地的方法调用列表,处理接收到的模型功能调用,将处理后的消息和用户消息再一次发送给大模型
一个标准的大模型HTTP请求(基于qwen3)类似于:
1 | |
qwen3 支持的 role 角色定义 (经过测试目前 tool_call的Function Calling 机制仍未能正确识别)
| role 值 | 含义说明 | 示例场景 |
|---|---|---|
system |
设置系统行为和角色,引导模型回答风格或身份 | “你是一个有耐心的英语老师” |
user |
用户输入,用于发起请求或提问 | “请告诉我北京今天的天气” |
assistant |
模型生成的回答内容 | 自动由模型生成返回消息 |
tool_call |
(可选)表示模型请求调用某个工具(函数) | 用于 Function Calling 机制 |
tool_response |
(可选)表示工具调用的响应结果,传给模型继续生成 | 工具调用返回值的嵌入,例如天气数据 |
首先定义了一个MCPmessage的 结构,在后续的传递过程中通过创建MCPmessage对象来完成用户,响应消息的插入
1 | |
客户端实现
1 | |
MCP 服务器
MCP 服务器主要负责 本地的功能管理,以及中间过程方法调用的功能处理。
即当 用户发起的请求信息 得到模型响应了一个调用传递后,会根据传递的JSON请求,解析识别到对应的函数进行执行,并将结果与用户原请求一起返回给大模型由大模型继续处理。
从这里我们可以看出来,大模型本身并不保存会话记录。所谓的”会话“ 实际上是每一次请求都携带了之前请求的全部token内容,由大模型依据所有内容再进行生成。
1 | |
其他
定义方法的结构维护,便于查询方法和方法的参数信息。
1 | |
结果
通过打印接口信息可以看到对大模型发起了两次请求,并最终执行了功能,并返回成功的响应
1 | |
方法调用链

总结
基于以上尝试,我们可以看到MCP 进行了一个中间处理过程,通过LLM 来进行功能与数组的组织最终返回给用户自然语言的结果描述。而不必再关注具体的中间过程。
与 RAG 技术相比,MCP 提供了另一种大模型能力扩展路径。RAG(Retrieval-Augmented Generation)本质上是一种 静态的、基于预先构建的向量数据库进行信息增强的机制 ,它能提供相对 稳定且相关性明确的知识补充 ,适用于对资料完整性要求较高的场景。但其能力受限于数据库的更新频率和覆盖范围。
而 MCP 更侧重于 动态信息的实时获取与响应处理 ,通过将本地方法封装为函数工具,模型可以根据语义分析结果主动发起实时调用,从而打破传统问答的静态信息局限。这种机制将对话式交互转化为 任务式的数据动态组织流程 ,具备更强的灵活性和时效性,尤其适用于实时数据接口、系统调用和复杂业务流程的交互式处理场景。
因此,两者并非冲突关系,而是互为补充 —— RAG 提供 知识的可控性与一致性 ,MCP 提供 执行的实时性与系统集成能力 。在实际系统中可根据场景组合使用,构建更智能、更可靠的 AI 代理系统。