返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

模型上下文提供者(MCP)如何赋能AI智能体

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 20:50 |阅读模式 打印 上一主题 下一主题

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);">摘要

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">在AI助手使用工具的过程中,如何让模型只关注当前任务相关的工具,而不被众多不相关工具干扰?本文深入探讨了"模型上下文提供者"(Model Context Provider,MCP)的工作原理,它作为AI与工具之间的智能调度层,能够根据用户需求动态选择相关工具,大幅提升AI助手的效率和准确性。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);">引言

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">想象一下,如果你问AI助手"巴黎今天的天气怎么样?",而系统却给它提供了几十种工具的描述,包括搜索餐厅、预订航班、查看股票等等。这不仅会浪费计算资源,还可能导致AI做出错误的工具选择。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">这就是为什么我们需要一个智能的"模型上下文提供者"(MCP)。它就像AI的私人助理,在用户提出请求后,先分析需求,只挑选出可能用到的工具,然后再把这些精选工具和用户请求一起发送给大语言模型(LLM)。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);">MCP的工作流程

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">MCP的核心工作流程可以分为以下几个步骤:

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;color: rgb(63, 63, 63);" class="list-paddingleft-1">
  1. ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);">
    1.ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);">接收用户请求:用户提出问题,如"巴黎的天气怎么样?"
  2. 2.分析用户意图:MCP分析请求内容,理解用户想要了解什么
  3. 3.选择相关工具:基于分析结果,从所有可用工具中选出相关的子集(如天气查询工具)
  4. 4.构建动态提示词:将系统指令、工具使用说明、仅选定的工具描述和用户请求组合成提示词
  5. 5.发送给LLM:将构建好的提示词发送给大语言模型
  6. 6.处理LLM输出
  • • 如果LLM决定使用工具,MCP执行该工具并获取结果
  • • 如果不需要工具,LLM直接生成自然语言回复
  • 7.返回最终结果:将工具执行结果或直接回复返回给用户
  • 动态提示词的构建

    MCP构建的动态提示词通常包含以下几个部分:

    1. 1.系统指令:定义LLM的角色和总体目标
      你是一个有帮助的助手。请使用可用工具回答用户的问题。始终优先提供准确信息。
    2. 2.工具使用说明:指定LLM调用工具时必须使用的格式
      当调用工具时,你必须使用以下JSON格式:{"tool_name": "工具名称", "parameters": {"参数1": "值1", "参数2": "值2", ...}}
      不要在JSON前后添加任何其他文本。如果不需要使用工具,请直接用自然语言回复。
    3. 3.动态选择的工具定义:这是MCP的核心部分,只包含与当前请求相关的工具
      可用工具:
      {
      "name": "get_weather",
      "description": "获取特定位置的当前天气。",
      "parameters": {
      "type": "object",
      "properties": {
      "location": {
      "type": "string",
      "description": "城市和州/国家,例如:北京,中国"
      },
      "unit": {
      "type": "string",
      "enum": ["celsius", "fahrenheit"],
      "description": "温度单位。默认为摄氏度。"
      }
      },
      "required": ["location"]
      }
      }
    4. 4.对话历史(如适用):之前的对话内容
    5. 5.用户当前请求
      用户:巴黎的天气怎么样?

    一个完整的示例

    用户请求

    巴黎的天气怎么样?

    MCP构建的提示词

    系统:你是一个有帮助的助手。请使用可用工具回答用户的问题。始终优先提供准确信息。当调用工具时,你必须使用以下JSON格式:{"tool_name": "工具名称", "parameters": {"参数1": "值1", "参数2": "值2", ...}}。不要在JSON前后添加任何其他文本。如果不需要使用工具,请直接用自然语言回复。

    可用工具:
    {
    "name": "get_weather",
    "description": "获取特定位置的当前天气。",
    "parameters": {
    "type": "object",
    "properties": {
    "location": {
    "type": "string",
    "description": "城市和州/国家,例如:北京,中国"
    },
    "unit": {
    "type": "string",
    "enum": ["celsius", "fahrenheit"],
    "description": "温度单位。默认为摄氏度。"
    }
    },
    "required": ["location"]
    }
    }

    用户:巴黎的天气怎么样?

    LLM的可能输出

    {
    "tool_name":"get_weather",
    "parameters":{
    "location":"巴黎,法国",
    "unit":"celsius"
    }
    }

    MCP执行工具后的处理

    MCP接收到这个工具调用请求后,会执行get_weather工具获取巴黎的天气信息,然后将结果再次发送给LLM,让它生成最终的自然语言回复。




    E2E Workflow 图示




    MCP如何选择相关工具

    MCP可以通过多种方法来确定哪些工具与用户请求相关:

    1. 1.关键词匹配:简单的正则表达式或字符串匹配,检查用户请求中是否包含工具名称或描述中的关键词
    2. 2.语义搜索/嵌入:将用户请求和所有可用工具的描述转换为向量,找出与请求语义相似度最高的工具
    3. 3.规则系统:定义明确的规则(例如,"如果查询包含'天气'和城市名,则包含'天气查询工具'")
    4. 4.分类模型:使用专门的模型或小型LLM来分类用户意图并映射到相关工具




    MCP的优势

    1. 1.减少提示词大小:只包含相关工具可以节省token数量,降低延迟和成本
    2. 2.提高可靠性:LLM不太可能被大量不相关的工具混淆,或尝试使用不适合当前请求的工具
    3. 3.加快决策速度:选项更少,LLM可能更快做出工具调用决策
    4. 4.增强控制:MCP可以精细控制对任何给定请求或用户状态向LLM公开哪些功能

    实际应用场景

    MCP在多种场景下都能发挥重要作用:

    1. 1.多功能AI助手:拥有数十种甚至上百种工具的AI助手可以通过MCP智能选择工具,避免混淆
    2. 2.个性化服务:根据用户偏好或权限动态调整可用工具
    3. 3.资源受限环境:在计算资源有限的情况下,减少不必要的工具描述可以显著提高效率
    4. 4.专业领域应用:在医疗、法律等专业领域,可以根据具体问题类型选择专业工具

    实现MCP的技术考虑

    实现一个高效的MCP系统需要考虑以下几个方面:

    1. 1.工具分类系统:建立一个良好的工具分类体系,便于快速筛选
    2. 2.嵌入向量数据库:为工具描述创建嵌入向量并存储,以支持语义搜索
    3. 3.缓存机制:缓存常见请求类型的工具选择结果,减少重复分析
    4. 4.监控和反馈:跟踪工具选择的准确性,并根据实际使用情况不断优化算法

    个人见解

    MCP代表了AI系统设计中的一个重要趋势:不是简单地增加模型规模或添加更多工具,而是优化模型与工具之间的交互方式。这种"少即是多"的理念在提高AI系统效率方面非常关键。

    随着AI助手能力的不断扩展,工具数量可能会呈指数级增长,这使得MCP这样的智能调度层变得越来越重要。未来,我们可能会看到更加复杂的MCP系统,它们不仅能根据用户请求选择工具,还能预测用户可能的后续需求,提前准备相关工具。

    此外,MCP的思想不仅适用于工具选择,还可以扩展到其他方面,如动态调整系统指令、选择合适的模型等。这代表了AI系统架构的一个重要发展方向。

    总结

    模型上下文提供者(MCP)作为AI系统中的智能调度层,通过动态选择与用户请求相关的工具,显著提高了AI助手的效率和准确性。它不仅减少了提示词大小,还提高了模型响应速度和决策质量。随着AI工具生态系统的不断扩大,MCP的重要性将越来越突出,成为构建高效AI系统的关键组件。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ