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 协作对话体验。

相关推荐
kyriewen8 小时前
程序员连夜带团队跑路,省了23万:这AI太贵,真的用不起了
前端·javascript·openai
kyriewen9 小时前
你写的代码没有测试,就像出门不锁门——Jest + Testing Library 从入门到不慌
前端·单元测试·jest
辞旧 lekkk9 小时前
【Qt】信号和槽
linux·开发语言·数据库·qt·学习·mysql·萌新
yuzhiboyouye10 小时前
web前端英语面试
前端·面试·状态模式
canonical_entropy11 小时前
下一代低代码渲染框架 nop-chaos-flux 的设计原则
前端·低代码·前端框架
东方小月11 小时前
5分钟搞懂Harness Engineering(驾驭工程):从提示词到AI Agent的进化之路
前端·后端·架构
我叫黑大帅11 小时前
为什么需要 @types/react?解决“无法找到模块 react 的声明文件”报错
前端·javascript·面试
之歆11 小时前
DAY_21JavaScript 深度解析:数组(Array)与函数(Function)(一)
前端·javascript
XinZong12 小时前
【AI社交】基于OpenClaw自研轻量化AI社交平台实战
前端
Le_ee12 小时前
ctfweb:php/php短标签/.haccess+图片马/XXE
开发语言·前端·php