Sampling – Model Context Protocol Specification

网页链接

主要内容概述

该网页详细介绍了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)
  • 客户端应实现用户审批控制。
  • 双方应验证消息内容。
  • 客户端应尊重模型偏好提示。
  • 客户端应实现速率限制。
  • 双方必须妥善处理敏感数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值