这就是 Tool Calling 与 MCP
写在前面
学完鱼皮的 LangChain4j 教程的 Tool Calling 与 MCP 啦,我结合我在 b 站上看到的不少相关科普视频与自己的理解,系统梳理了这篇学习笔记,希望能对初学这两个概念的同学有所帮助~
Tool Calling
面向的问题
尽管目前的 LLM 具备较强的自然语言理解与推理能力,但它本身无法直接与外部世界进行交互,例如无法执行数据库查询、接口调用等操作。
假如你问 AI:“贵阳市花溪区今天的天气如何?”,作为人类,我们的第一反应通常是打开天气类应用查询最新的天气信息。
从逻辑上看,AI 在回答这类问题时也应该先获取最新的天气数据,但实际上,AI 本身并不能主动完成这样的操作。
能不能让 AI 在需要的时候,借助外部工具获取所需信息?
这便是 Tool Calling 这个技术要解决的核心问题。
核心思想与基本流程
Tool Calling 是一种允许 AI 在推理过程中借助外部工具来完成任务的机制。
其核心思想是:当 AI 在生成回答的过程中发现自己无法获取所需信息或完成某个操作时,它会请求可用的外部工具,并基于返回结果继续推理和回答。
在这个过程中,AI 负责判断和决策,例如是否需要借助外部工具以及如何利用返回结果继续推理;具体的执行操作,如信息查询和接口调用,则由外部系统完成。
Tool Calling 将“思考”和“执行”清晰地分离开来:AI 负责理解问题和做出决策,外部工具负责完成真实的操作;AI 基于这些操作结果生成回答。
使用了 Tool Calling 技术的 AI 应用通常会按照如下流程运行:
首先,应用需要提前为 AI 准备好可用的工具,并明确每个工具的用途以及期望的参数形式。
这些信息会作为上下文的一部分提供给 AI,使其了解当前可以使用哪些外部能力。
当用户提出问题后,系统会将用户问题与工具信息一并发送给 AI。
AI 在理解问题的过程中,会判断是否需要借助某个工具来获取信息或完成操作。
如果 AI 判断需要使用工具,它会向系统返回一个“工具调用请求”,其中包含所选择的工具以及对应的参数。
随后,系统根据该请求实际执行相应的工具,并将工具的执行结果再次发送给 AI。
AI 则基于这些结果继续进行推理,并生成最终的回答。
MCP
面向的问题
随着 Tool Calling 的引入,工具逐渐成为 AI 应用中不可或缺的一部分。
一些工具具有较强的通用性,例如网页检索、文件操作、图像识别等,往往需要在多个 AI 应用中重复使用。
如果将这些工具直接写在各个 AI 应用内部,很容易造成重复实现,也增加了工具维护和演进的成本。
从更长远的角度看,随着 AI 应用数量的增加,工具本身也逐渐演变为一种独立的能力,而不再只是某个应用内部的附属代码。
那么,能不能将这些通用工具从具体的 AI 应用中抽离出来,作为独立的服务统一提供,而 AI 应用只需要通过一种标准方式与这些工具进行交互?
这正是 MCP 这个技术要解决的核心问题。
核心思想与基本流程
MCP(Model Context Protocol,模型上下文协议)是一种用于规范 AI 应用与外部工具服务之间交互方式的协议。
其核心思想是:当工具以独立服务的形式存在时,需要一种统一的方式,使 AI 应用能够发现、理解并使用这些工具。
在 MCP 的完整架构中,涉及三个核心角色:MCP Host、MCP Client 与 MCP Server。
其中,MCP Host 是 AI 应用本体,负责整体流程的协调与决策,例如管理多个 MCP Client、组织上下文,并将结果交由模型进行推理或生成回答。
MCP Client 是 MCP Host 内部用于与工具服务交互的组件,负责维护与 MCP Server 的连接,并从 MCP Server 获取工具描述和执行结果,供 MCP Host 使用。
MCP Server 则是工具能力的提供方,负责对外暴露可用工具的描述信息,并在收到工具调用请求时实际执行相应的工具操作。
在实际使用中,MCP Host、MCP Client 与 MCP Server 之间的协作流程通常如下:
首先,MCP Host 会配置并管理一个或多个 MCP Client,使其能够访问对应的 MCP Server,从而获取当前可用的工具信息。
当 MCP Host 判断需要使用某个工具时,会通过相应的 MCP Client 向对应的 MCP Server 发起工具调用请求。
随后,MCP Server 执行相应的工具操作,并将结果返回给 MCP Client。
MCP Client 接收结果后,将其传递给 MCP Host,由 MCP Host 将其纳入上下文并交由 AI 进行进一步推理或生成回答。
通过这种方式,MCP 将决策、连接与执行清晰地分离开来:MCP Host 负责整体流程的调度与协调,组织上下文并驱动模型进行推理;MCP Client 负责与工具服务交互,而 MCP Server 专注于提供和执行具体的工具能力。
相关资源
MCP Servers 这个网站收录了很多实用的 MCP Server,你可以根据需求选择合适的 MCP Server,并结合对应文档将其集成到自己的 AI 应用中,以扩展工具能力。
