Function Calling 和 mcp
场景推荐构建多工具协同的系统✅ 使用 MCP(基于 Function Calling)构建对话式 API 接入✅ 结合 Function Calling + MCP使用 OpenAI/Claude/RAG/插件/LLM 多模型接入系统✅ MCP 提供统一入口只做语言生成,无插件需求Function Calling 非必需,MCP 不需要。
·
Function Calling 是一种机制,MCP 是基于 Function Calling 构建的中控系统。Function Calling 和 MCP(Model Control Proxy) 是两个密切相关但层级不同的概念。它们经常被结合使用,但本质上功能定位不同。
项目 | Function Calling | MCP(Model Control Proxy) |
---|---|---|
本质 | 一种调用结构化函数的协议机制 | 一个中控代理系统,统一管理模型调用和插件调度 |
作用 | 把用户意图转为结构化函数调用(含参数) | 接收模型生成的 Function Call,转发并管理实际调用过程 |
谁提出的? | OpenAI、Claude等大模型厂商 | 各类平台实现(如 LangChain、Mindie、InternStudio 等) |
属于哪一层? | 通信协议层(模型输出) | 调度执行层(中控系统) |
1、MCP = 基于 Function Calling 的执行平台
MCP 的核心工作流程:
- 用户提问 → 模型推理输出 Function Call:
{
"name": "search_docs",
"arguments": {
"query": "什么是量子纠缠"
}
}
- MCP 识别这是一个结构化调用请求。
- MCP 查找注册的函数 search_docs,调用对应插件/API/本地函数。
- MCP 获取结果后返回给模型继续对话,或直接展示给用户。
➡️ 没有 MCP,仅有 Function Calling,模型没法实际执行任务。
能力 | Function Calling | MCP |
---|---|---|
结构化意图表达 | ✅ 强 | ⚠️ 不处理生成,仅执行 |
函数/插件注册 | ❌ 无 | ✅ 支持注册、权限控制、版本控制等 |
工具执行引擎 | ❌ 无 | ✅ 调度实际代码/API 执行 |
多轮调用上下文保持 | ❌ 模型控制 | ✅ 可封装 session 记忆 |
Fallback、容错、缓存 | ❌ 无 | ✅ 可实现 |
多模型协同 | ❌ 限制多 | ✅ 支持 GPT + Whisper + SD 联动等 |
2、典型交互流程图
用户输入
↓
模型输出 Function Call(如 search(query="量子纠缠"))
↓
[MCP识别] → 匹配注册的函数 → 执行真实 API 调用
↓
拿到结果后回传给模型继续推理或直接返回
实际示例:调用天气查询函数
Function Calling:
{
"name": "get_weather",
"arguments": {
"city": "Beijing"
}
}
3、MCP 处理逻辑:
# MCP 注册的函数
def get_weather(city):
return call_openweathermap_api(city)
# MCP 调用逻辑
result = get_weather("Beijing")
最终结果由 MCP 返回模型或用户。
4、使用建议
场景 | 推荐 |
---|---|
构建多工具协同的系统 | ✅ 使用 MCP(基于 Function Calling) |
构建对话式 API 接入 | ✅ 结合 Function Calling + MCP |
使用 OpenAI/Claude/RAG/插件/LLM 多模型接入系统 | ✅ MCP 提供统一入口 |
只做语言生成,无插件需求 | Function Calling 非必需,MCP 不需要 |
更多推荐
所有评论(0)