ai对话平台中的functioncalling+mcp

项目中mcp和functioncalling到底做了什么?

mcp是模型上下文协议,是ai与外部工具tool、数据源交互的通用标准化协议,ai界的usb-c万能接口,解决的是工具接入标准化的问题;functioncalling 是agent与大模型之间工具调用约定的对话格式,大模型输出结构化json指令,主动调用外部api、函数、工具执行的实际操作。

项目中我把工具能力层标准化成了独立的mcpserver,然后主聊天服务通过mcpclient去连接和调用这些工具,模型测通过functioncalling is来做工具的选择,这样就形成了,模型决策、服务端编排、mcp工具执行、结果回填、前端可视化的完整闭环,相比于把工具直接写死在业务代码中,这种方式更标准、更容易扩展,也更适合后续接入更多工具来严谨成完整的agent平台。

为什么是functioncalling+mcp的组合

纯functioncalling的能力边界:在ai对话项目中,function calling能够解决让模型知道什么时候调用工具的问题,但是function calling本身并不负责工具标准化管理,跨服务工具的复用,工具协议统一,工具注册、校验、元信息暴露,以及更通用的工具生态接入

**为什么要引入mcp:**当工具数量开始增长,或者是要把工具能力从业务聊天中拆出来,单纯把工具都写在主服务中的话就会遇到问题,比如:聊天编排和工具执行耦合严重,工具元信息不够标准化,后续接入更多工具的话维护成本很高,很难对外说自己是具备标准化agent工具层能力

**引入mcp的核心目标:**做工具层标准化,把工具能力抽离成标准的mcpserver,而不是散落在业务服务中的私有函数;降低业务编排层和工具执行层耦合,主服务负责对话编排,模型交互,状态回传,mcpserver负责工具暴露,参数校验,工具执行,工具结果返回;为后续平台演进预留空间,比如说之后需要更多的业务工具,多个mcpserver,更标准的agent架构

mcp及functioncalling的作用分别是什么

functioncalling:模型通过function calling自主决定调用哪个工具,负责决策。也就是模型理解哪些工具可用,根据用户的问题决定要不要调用工具,模型生成需要调用的工具名和调用参数

mcp:负责用标准的协议暴露工具,提供工具的描述,schema,调用入口,让宿主系统通过标准客户端调用这些工具,也就是负责执行工具逻辑

模型通过function calling产出工具调用意图,后端把这种意图映射到mcpclient上执行.

前端负责交互和展示,Express 负责编排和转发,MCP 负责工具的定义和执行,Qwen 模型负责意图理解和决策。Function Calling 让模型能够自主决定何时调用工具、调用哪个工具,MCP 提供了标准化的工具接口,SSE 实现了实时的流式输出,三者配合实现了智能化的多 Agent 协作对话体验。

相关推荐
派小心.5 小时前
React StrictMode埋点双执行的验收方法
前端·前端框架
IT_陈寒6 小时前
Python的GIL锁让我把多线程代码全重写了!
前端·人工智能·后端
艾莉丝努力练剑6 小时前
【AI大模型接入SDK】ChatSDK 集成测试概述
jvm·c++·人工智能·学习·面试·集成测试·sdk
艾莉丝努力练剑6 小时前
【AI大模型接入SDK】ChatSDK:CMake构建静态库完整实现
java·开发语言·网络·c++·人工智能·学习·sdk
百度一下吧6 小时前
umi后台管理项目实战:从工程搭建到生产构建
java·前端·javascript
Joe_Wang56 小时前
【从0到1学习JVM · 14】堆内存各区域分工与Xms和Xmx设为一样的真相
java·jvm·学习·垃圾回收
派小心.6 小时前
App埋点排查:iOS冷启动事件漏报先看初始化还是上报
前端·数据分析
東隅已逝,桑榆非晚6 小时前
stack和queue(类函数学习和模拟实现)
c++·笔记·学习
事圆则缓6 小时前
Flutter 状态管理框架对比(六):同一个购物车,四种方案怎么落地?
前端·javascript·flutter
Vcaker6 小时前
Linux学习37-rook-ceph部署
linux·运维·学习