当前位置: 首页 > news >正文

Sampling – Model Context Protocol Specification

网页链接

  • https://spec.modelcontextprotocol.io/specification/draft/client/sampling/

主要内容概述

该网页详细介绍了Model Context Protocol (MCP) 中的“Sampling”功能。Sampling允许服务器通过客户端请求语言模型(LLM)生成文本、音频或图像内容,而无需服务器直接使用API密钥访问模型。客户端在模型访问、选择和权限方面保持控制权,同时为服务器提供AI能力。

核心内容笔记

1. 用户交互模型 (User Interaction Model)
  • Sampling允许服务器实现代理行为,通过在其他MCP服务器功能中嵌套LLM调用。
  • 协议本身不强制规定具体的用户交互模式,但建议:
    • 提供易于使用的界面,方便用户审查Sampling请求。
    • 允许用户在发送前查看和编辑提示。
    • 在交付前让用户审查生成的响应。
2. 功能声明 (Capabilities)
  • 支持Sampling的客户端必须在初始化时声明sampling能力:
    {
      "capabilities": {
        "sampling": {}
      }
    }
    
3. 协议消息 (Protocol Messages)
  • 创建消息 (Creating Messages)
    • 服务器通过发送sampling/createMessage请求来请求语言模型生成内容。
    • 请求示例:
      {
        "jsonrpc": "2.0",
        "id": 1,
        "method": "sampling/createMessage",
        "params": {
          "messages": [
            {
              "role": "user",
              "content": {
                "type": "text",
                "text": "What is the capital of France?"
              }
            }
          ],
          "modelPreferences": {
            "hints": [
              {
                "name": "claude-3-sonnet"
              }
            ],
            "intelligencePriority": 0.8,
            "speedPriority": 0.5
          },
          "systemPrompt": "You are a helpful assistant.",
          "maxTokens": 100
        }
      }
      
    • 响应示例:
      {
        "jsonrpc": "2.0",
        "id": 1,
        "result": {
          "role": "assistant",
          "content": {
            "type": "text",
            "text": "The capital of France is Paris."
          },
          "model": "claude-3-sonnet-20240307",
          "stopReason": "endTurn"
        }
      }
      
4. 消息流 (Message Flow)
  • 服务器发起Sampling请求,用户在客户端审查并批准请求,客户端与模型交互并返回生成结果。
  • 流程图:
    LLMUserClientServerLLMUserClientServer
    Server initiates sampling
    Human-in-the-loop review
    Model interaction
    Response review
    Complete request
    sampling/createMessage
    Present request for approval
    Review and approve/modify
    Forward approved request
    Return generation
    Present response for approval
    Review and approve/modify
    Return approved response
    
5. 数据类型 (Data Types)
  • 消息 (Messages)
    • Sampling消息可以包含以下内容类型:
      • 文本内容 (Text Content)
        {
          "type": "text",
          "text": "The message content"
        }
        
      • 图像内容 (Image Content)
        {
          "type": "image",
          "data": "base64-encoded-image-data",
          "mimeType": "image/jpeg"
        }
        
      • 音频内容 (Audio Content)
        {
          "type": "audio",
          "data": "base64-encoded-audio-data",
          "mimeType": "audio/wav"
        }
        
6. 模型偏好 (Model Preferences)
  • 由于服务器和客户端可能使用不同的AI提供商,MCP通过偏好系统抽象化模型选择。
    • 能力优先级 (Capability Priorities)
      • 服务器通过以下三个归一化优先级值(0-1)表达需求:
        • costPriority:成本优先级,值越高表示越偏好低成本模型。
        • speedPriority:速度优先级,值越高表示越偏好低延迟模型。
        • intelligencePriority:智能优先级,值越高表示越偏好高级功能模型。
    • 模型提示 (Model Hints)
      • 提示允许服务器建议特定模型或模型家族:
        • 提示被视为模型名称的子字符串,可以灵活匹配。
        • 客户端可以根据提示将请求映射到其他提供商的等效模型。
        • 示例:
          {
            "hints": [
              {
                "name": "claude-3-sonnet"
              },
              {
                "name": "claude"
              }
            ],
            "costPriority": 0.3,
            "speedPriority": 0.8,
            "intelligencePriority": 0.5
          }
          
7. 错误处理 (Error Handling)
  • 客户端应为常见失败情况返回错误。
  • 示例错误:
    {
      "jsonrpc": "2.0",
      "id": 1,
      "error": {
        "code": -1,
        "message": "User rejected sampling request"
      }
    }
    
8. 安全考虑 (Security Considerations)
  • 客户端应实现用户审批控制。
  • 双方应验证消息内容。
  • 客户端应尊重模型偏好提示。
  • 客户端应实现速率限制。
  • 双方必须妥善处理敏感数据。

相关文章:

  • 缓存监控治理在游戏业务的实践和探索
  • Cursor设置中文教程----两种方法【简单】
  • 统计领域英语专业词汇补充
  • 如何用AI轻松实现PPT自动生成,让工作更高效
  • Qt 控件概述 QLabel
  • Unity-VR中使用手柄点击UI
  • c语言 逆序存放并输出的题【基础】
  • hackmyvm-connection
  • 32、如何解决vector中删除元素导致的迭代器失效问题?
  • 【编译原理】一二章
  • 手机换IP有什么用?最新换IP方法
  • 【秣厉科技】LabVIEW工具包——OpenCV 教程(11):人脸检测与识别
  • Android第五次面试总结(网络补充)
  • Thinkphp指纹识别
  • Kubernets命名空间
  • QT6通过DeepSeek API上传附件实现
  • 【文件操作】IO流
  • MPLS基础---通俗易懂
  • 通过启用Ranger插件的Hive审计日志同步到Doris做分析
  • Android studio无法查看源码
  • 墨西哥海军帆船纽约撞桥事故已致2人死亡19人受伤
  • 全国多家健身房女性月卡延长,补足因月经期耽误的健身时间
  • 上百家单位展示AI+教育的实践与成果,上海教育博览会开幕
  • 贵州省委军民融合发展委员会办公室副主任李刚接受审查调查
  • 美联储主席:供应冲击或更频繁,将重新评估货币政策方法中的通胀和就业因素
  • 商务部就开展加强战略矿产出口全链条管控工作应询答记者问