Sampling – Model Context Protocol Specification

news2025/3/28 12:20:28

网页链接

  • 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)
  • 客户端应实现用户审批控制。
  • 双方应验证消息内容。
  • 客户端应尊重模型偏好提示。
  • 客户端应实现速率限制。
  • 双方必须妥善处理敏感数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2318981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 填充 PDF 模版

制作 PDF 模版 安装 OnlyOffice 从 OnlyOffice 官网下载 OnlyOffice Desktop,安装过程很简单,一路下一步即可。用 OnlyOffice 制作 PDF 模版(表单) 使用 OnlyOffice 表单设计器,制作表单,如下图 注意命名…

Vulnhub-dedecms织梦通关攻略

姿势一、通过文件管理器上传WebShell 第一步:进入后台,找到文件管理器上传木马文件 第二步:使用蚁剑进行连接 #文件地址 http://localhost/dedecms/shell.php 姿势二、修改模板⽂件拿WebShell 第一步:修改模板文件,删除…

数据集获取

sklearn数据集 sklearn有四部分数据。其中sklearn的数据集有两部分真实的数据,一部分嵌入到了sklearn库中,即安装好sklearn后就自带了一部分数据,这些数据的规模比较小称为small toy datasets ,还有一部分数据是需要在网上下载的,sklearn提供了下载的api接口,这些数据规…

实验12深度学习

实验12深度学习 一、实验目的 (1)理解并熟悉深度神经网络的工作原理; (2)熟悉常用的深度神经网络模型及其应用环境; (3)掌握Anaconda的安装和设置方法,进一步熟悉Jupyte…

2024年消费者权益数据分析

📅 2024年315消费者权益数据分析 数据见:https://mp.weixin.qq.com/s/eV5GoionxhGpw7PunhOVnQ 一、引言 在数字化时代,消费者维权数据对于市场监管、商家诚信和行业发展具有重要价值。本文基于 2024年315平台线上投诉数据,采用数…

零知识证明:区块链隐私保护的变革力量

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

【CSS文字渐变动画】

CSS文字渐变动画 HTML代码CSS代码效果图 HTML代码 <div class"title"><h1>今天是春分</h1><p>正是春天到来的日子&#xff0c;花都开了&#xff0c;小鸟也飞回来了&#xff0c;大山也绿了起来&#xff0c;空气也有点嫩嫩的气息了</p>…

Qt 控件概述 QLabel

目录 QLabel显示类控件 label如何做到与窗口同步变化 边框 Frame QLabel显示类控件 ​​ ​​ textFormat &#xff1a;设置文件格式 ​ Pixmap &#xff1a;标签图片 label如何做到与窗口同步变化 Qt中对应用户的操作 &#xff1a; 事件和信号 拖拽窗口大小就会触发…

Vue 渲染 LaTeX 公式 Markdown 库

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

网络原理之网络层、数据链路层

1. 网络层 1.1 IP协议 1.1.1 基本概念 主机: 配有IP地址,但是不进⾏路由控制的设备路由器: 即配有IP地址,⼜能进⾏路由控制节点: 主机和路由器的统称 1.1.2 协议头格式 说明&#xff1a; 4位版本号(version): 指定IP协议的版本,对于IPv4来说,就是4,对于IPv6来说,就是6 4位头…

版本控制器Git ,Gitee如何连接Linux Gitee和Github区别

&#x1f4d6; 示例场景 假设你和朋友在开发一个「在线笔记网站」&#xff0c;代码需要频繁修改和协作&#xff1a; 只用本地文件管理 每次修改后手动复制文件&#xff0c;命名为 v1.html、v2.html 问题&#xff1a;无法追踪具体改动内容&#xff1b;多人修改易冲突&#xff1…

【动态规划篇】91. 解码方法

91. 解码方法 题目链接&#xff1a; 91. 解码方法 题目叙述&#xff1a; 一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; “1” -> ‘A’ “2” -> ‘B’ … “25” -> ‘Y’ “26” -> ‘Z’ 然而&#xff0c;在解码已编码的消息时&#xff0c;你…

Python高级——类的知识

一、知识梳理&#xff1a; 二、货币场景搭建&#xff1a; 1&#xff09;代码展示&#xff1a; class RMB:count 0def __init__(self,yuan0,jiao0,fen0):self.__yuan yuanself.__jiao jiaoself.__fen fenRMB.count 1def __add__(self, other):temp RMB()temp.__yuan se…

resnet与densenet的比较

一、 ResNet&#xff08;残差网络&#xff09;和 DenseNet&#xff08;密集连接网络&#xff09; ResNet&#xff08;残差网络&#xff09;和 DenseNet&#xff08;密集连接网络&#xff09;都是深度学习中非常经典的卷积神经网络架构&#xff0c;它们在图像分类、目标检测等诸…

【算法day16】电话号码的字母组合

电话号码的字母组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 https://leetcode.cn/problems/letter-combinations…

软件工程之软件验证计划Software Verification Plan

个人主页&#xff1a;云纳星辰怀自在 座右铭&#xff1a;“所谓坚持&#xff0c;就是觉得还有希望&#xff01;” 本文为基于ISO26262软件验证计划模板&#xff0c;仅供参考。 软件验证计划&#xff0c;包括&#xff1a; 1. 软件需求验证计划 2. 软件架构设计验证计划 3. 软件单…

Spring Cloud之负载均衡之LoadBalance

目录 负载均衡 问题 步骤 现象 什么是负载均衡&#xff1f; 负载均衡的一些实现 服务端负载均衡 客户端负载均衡 使用Spring Cloud LoadBalance实现负载均衡 负载均衡策略 ​编辑 ​编辑LoadBalancer原理 服务部署 准备环境和数据 服务构建打包 启动服务 上传J…

分布式任务调度

今天我们讲讲分布式定时任务调度—ElasticJob。 一、概述 1、什么是分布式任务调度 我们可以思考⼀下下⾯业务场景的解决⽅案: 某电商平台需要每天上午10点&#xff0c;下午3点&#xff0c;晚上8点发放⼀批优惠券 某银⾏系统需要在信⽤卡到期还款⽇的前三天进⾏短信提醒 某…

架构设计的灵魂交响曲:系统设计各维度的深度解析与实战指南

引言: 系统设计的背景与重要性 在快速变化的技术环境中&#xff0c;数字化转型成为企业生存与发展的核心驱动力。系统设计能力不仅是技术团队的核心竞争力&#xff0c;也是推动业务创新和提升整体效率的关键因素。根据Gartner的研究&#xff0c;超过70%的数字化转型项目未能实…

[贪心算法]买卖股票的最佳时机 买卖股票的最佳时机Ⅱ K次取反后最大化的数组和 按身高排序 优势洗牌(田忌赛马)

1.买卖股票的最佳时机 暴力解法就是两层循环&#xff0c;找出两个差值最大的即可。 优化&#xff1a;在找最小的时候不用每次都循环一遍&#xff0c;只要在i向后走的时候&#xff0c;每次记录一下最小的值即可 class Solution { public:int maxProfit(vector<int>& p…