本人在之前开发的项目中大量使用Funtion Call, MCP获得关注后,开始并没有完全理解两者的区别和MCP的实际意义。仔细思考了MCP和Function Call的本质区别,有了一些心得,总结归纳如下。
在大语言模型(如大语言模型LLM)中,Function Call(函数调用) 是一种让模型能够与外部工具、API或系统交互的机制,使其不仅能生成文本,还能执行特定任务(如查询数据库、调用计算接口等)。以下是其核心工作流程:
官方给出的MCP架构是这样的:
这个架构定义比较抽象, 这里把上面的Function Call结合一下,个人感觉比较容易理解
从此图可以看出,最大的改动在于Tool的定义移到Application外面了。 具体来说, 现在由原来提供API的服务提供商来定义Tools, 并封装成一个MCP Server. 例如,高德地图把他们的地理编码/逆地理编码/路径规划等API封装成Tools并提供一个API。详细参考https://lbs.amap.com/api/mcp-server/summary
如此一来应用开发者只要在原来的Application中实现MCP Client,根据LLM的指示调用对应的MCP Server就行了。原来的Application现在也叫MCP Host了。
假设应用要调用100个api, Function Call方案要实现100个Tool, 现在不用了,因为Tool是服务提供商实现了。应用侧只需要实现一个mcp client就行。
如果企业有多个团队,Function Call每个团队都要实现自己的Tool, 实现方式五花八门.现在这样的问题不存在了。
由服务商实现Tool, 并提供全世界开发者使用,比每个Tool由全世界不同的开发者分别实现,复用性大大增加。
如果应用逻辑并不复杂, 无需开发自己的MCP Host和MCP Client。 借助已有的工具例如Cursor, CLine, 直接调用MCP Server完成工作。 对于没有编程经验的人来说,可用性大大增强。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |