Model Context Protocol - Prompts

1. 概述

  • Model Context Protocol (MCP) 提供了一種標準化的方式,使服務器能夠向客戶端暴露提示模板(prompts)。
  • Prompts 是服務器提供的結構化消息和指令,用于與語言模型進行交互。客戶端可以發現可用的提示、獲取其內容,并提供參數以自定義它們。

2. 用戶交互模型

  • 用戶控制: Prompts 是用戶控制的,服務器將它們暴露給客戶端,目的是讓用戶能夠明確選擇使用它們。
  • 觸發方式: 通常通過用戶界面中的用戶發起的命令(如斜杠命令)觸發,但協議本身不限制具體的用戶交互模式。

3. 功能聲明

  • 支持 Prompts 的服務器必須在初始化時聲明 prompts 功能:
    {"capabilities": {"prompts": {"listChanged": true}}
    }
    
  • listChanged 表示服務器是否會發出通知,告知可用提示列表發生變化。

4. 協議消息

4.1 列出可用的 Prompts
  • 客戶端通過發送 prompts/list 請求來獲取可用的提示列表,支持分頁功能。
  • 請求示例:
    {"jsonrpc": "2.0","id": 1,"method": "prompts/list","params": {"cursor": "optional-cursor-value"}
    }
    
  • 響應示例:
    {"jsonrpc": "2.0","id": 1,"result": {"prompts": [{"name": "code_review","description": "Asks the LLM to analyze code quality and suggest improvements","arguments": [{"name": "code","description": "The code to review","required": true}]}],"nextCursor": "next-page-cursor"}
    }
    
4.2 獲取特定 Prompt
  • 客戶端可以通過發送 prompts/get 請求來獲取特定的提示內容,支持通過補全 API 自動補全參數。
  • 請求示例:
    {"jsonrpc": "2.0","id": 2,"method": "prompts/get","params": {"name": "code_review","arguments": {"code": "def hello():\n    print('world')"}}
    }
    
  • 響應示例:
    {"jsonrpc": "2.0","id": 2,"result": {"description": "Code review prompt","messages": [{"role": "user","content": {"type": "text","text": "Please review this Python code:\ndef hello():\n    print('world')"}}]}
    }
    
4.3 列表變更通知
  • 如果可用提示列表發生變化,服務器會發送 notifications/prompts/list_changed 通知:
    {"jsonrpc": "2.0","method": "notifications/prompts/list_changed"
    }
    

5. 消息流程

  • Discovery(發現): 客戶端通過 prompts/list 獲取可用提示列表。
  • Usage(使用): 客戶端通過 prompts/get 獲取特定提示的內容。
  • Changes(變更): 服務器通過 list_changed 通知客戶端提示列表的更新。

6. 數據類型

6.1 Prompt
  • 提示定義包括:
    • name:提示的唯一標識符。
    • description:可選的人類可讀描述。
    • arguments:可選的參數列表,用于自定義提示。
6.2 PromptMessage
  • 提示中的消息可以包含以下內容:
    • role:消息的發起者角色,可以是“user”或“assistant”。
    • content:消息的內容類型,包括以下幾種:
      • Text Content(文本內容):
        {"type": "text","text": "The text content of the message"
        }
        
      • Image Content(圖像內容):
        {"type": "image","data": "base64-encoded-image-data","mimeType": "image/png"
        }
        
        • 圖像數據必須是 base64 編碼,并包含有效的 MIME 類型。
      • Audio Content(音頻內容):
        {"type": "audio","data": "base64-encoded-audio-data","mimeType": "audio/wav"
        }
        
        • 音頻數據必須是 base64 編碼,并包含有效的 MIME 類型。
      • Embedded Resources(嵌入資源):
        {"type": "resource","resource": {"uri": "resource://example","mimeType": "text/plain","text": "Resource content"}
        }
        
        • 嵌入資源可以包含文本或二進制數據,必須包含有效的 URI 和 MIME 類型。

7. 錯誤處理

  • 服務器應返回標準的 JSON-RPC 錯誤代碼:
    • 無效的提示名稱:-32602(Invalid params)
    • 缺少必需的參數:-32602(Invalid params)
    • 內部錯誤:-32603(Internal error)

8. 實現注意事項

  1. 服務器應在處理前驗證提示參數。
  2. 客戶端應處理分頁以支持大型提示列表。
  3. 雙方應尊重功能協商。

9. 安全性

  • 實現必須仔細驗證所有提示的輸入和輸出,以防止注入攻擊或未經授權訪問資源。

10. 相關鏈接

  • GitHub: Model Context Protocol Specification
  • User Guide
  • Python SDK
  • TypeScript SDK

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72874.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72874.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72874.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

辦公自動化:使用 Python 生成 Word 文件:自動生成數據庫文檔 Word 文件

簡簡單單 Online zuozuo :本心、輸入輸出、結果 文章目錄 辦公自動化:使用 Python 生成 Word 文件:自動生成數據庫文檔 Word 文件前言一、環境準備二、編寫代碼三、編寫 Word 模版文件接收數據四、運行代碼,生成文件,大功告成五、說明辦公自動化:使用 Python 生成 Word 文…

嵌入式GPRS協議面試題及參考答案

目錄 GPRS 的全稱是什么?簡述其核心設計目標。 GPRS 中 DNS 服務器的核心作用是什么? BTS 在 EDGE 升級時需要哪些硬件調整? GPRS 的時隙分配策略如何影響多用戶并發? 解釋 PDCH(分組數據信道)的動態分配機制。 如何判斷天饋接反或鴛鴦線問題? GPRS 的 RLC/MAC 層…

Docker 內部通信(網絡)

1. 創建自定義橋接網絡 首先,創建一個自定義的Docker網絡。這可以通過docker network create命令完成。例如,我們可以創建一個名為my_custom_network的網絡: docker network create --driver bridge my_custom_network2. 啟動容器并連接到自…

單片機開發資源分析的實戰——以STM32F103C8T6為例子的單片機資源分析

目錄 第一點:為什么叫STM32F103C8T6 從資源手冊拿到我們的對STM32F103C8T6的資源描述 第二件事情,關心我們的GPIO引腳輸出 第三件事情:去找對應外設的說明部分 前言 本文章隸屬于項目: Charliechen114514/BetterATK: This is…

貪心算法(9)(java)最優除法

題目: 給定一正整數數組 nums,nums中的相鄰整數將進行浮點除法。例如,[2,3.4]->2/3/4. 例如,nums [2,3,4],我們將求表達式的值“2/3/4"。 但是,你可以在任意位置添加任意數目的括號,來改變算…

騰訊云MySQL數據庫架構分析與使用場景

TDSQL-C for MySQL TDSQL-C MySQL 版(TDSQL-C for MySQL)是騰訊云自研的新一代云原生關系型數據庫。融合了傳統數據庫、云計算與新硬件技術的優勢,為用戶提供具備高彈性、高性能、海量存儲、安全可靠的數據庫服務。TDSQL-C MySQL 版100%兼容…

榮耀手機卸載應用商店、快應用中心等系統自帶的

1.下載abd ADB Download - Get the latest version of ADB and fastboot 2.手機打開開發者選項 3.手機接電腦打開USB調試 4.下載MT管理器查看系統包名 D:\1.LFD\ADB\platform-tools-latest-windows\platform-tools>adb shell adb.exe: no devices/emulators found 這邊是…

星型拓撲網絡發生網絡風暴

在星型拓撲網絡中,所有的設備(如計算機、打印機等)通過一個中心設備(通常是交換機或集線器)連接在一起。 星型拓撲網絡中發生網絡風暴時的情況: 網絡風暴的表現 1.廣播風暴:在星型拓撲中&…

網絡流基本概念及實現算法

基本概念 流網絡 對于一個有向圖, 抽象成水管里的水的模型, 每根管子有容量限制, 計為 G ( V , E ) G (V, E) G(V,E), 首先不考慮反向邊 對于任意無向圖, 都可以將反向邊轉化為上述形式 如果一條邊不存在, 定義為容量為 0 0 0, 形式上來說就是 c ( u , v ) 0 c(u, v) 0 c(…

【css酷炫效果】純CSS實現球形陰影效果

【css酷炫效果】純CSS實現球形陰影效果 緣創作背景html結構css樣式完整代碼基礎版進階版(動態版) 效果圖 想直接拿走的老板,鏈接放在這里:上傳后更新 緣 創作隨緣,不定時更新。 創作背景 剛看到csdn出活動了,趕時間&#xff0…

Linux如何在設備樹中表示和引用設備信息

DTS基本知識 dts 硬件的相應信息都會寫在.dts為后綴的文件中,每一款硬件可以單獨寫一份xxxx.dts,一般在Linux源碼中存在大量的dts文件,對于arm架構可以在arch/arm/boot/dts找到相應的dts,一個dts文件對應一個ARM的machie。 dtsi 值…

【數學建模】模糊綜合評價模型詳解、模糊集合論簡介

模糊綜合評價模型詳解 文章目錄 模糊綜合評價模型詳解1. 模糊綜合評價模型概述2. 模糊綜合評價的基本原理2.1 基本概念2.2 評價步驟 3. 模糊綜合評價的數學模型3.1 數學表達3.2 模糊合成運算 4. 模糊綜合評價的應用領域5. 模糊綜合評價的優缺點5.1 優點5.2 缺點 6. 模糊綜合評價…

C++20 中的同步輸出流:`std::basic_osyncstream` 深入解析與應用實踐

文章目錄 一、std::basic_osyncstream 的背景與動機二、std::basic_osyncstream 的基本原理三、std::basic_osyncstream 的使用方法(一)基本用法(二)多線程環境下的使用(三)與文件流的結合 四、std::basic_…

C/C++藍橋杯算法真題打卡(Day8)

一、P8780 [藍橋杯 2022 省 B] 刷題統計 - 洛谷 算法代碼&#xff1a; #include<bits/stdc.h> // 包含標準庫中的所有頭文件&#xff0c;方便使用各種數據結構和算法 using namespace std; // 使用標準命名空間&#xff0c;避免每次調用標準庫函數時都要加 std::in…

JavaScript 編程:從基礎到高級應用的全面探索

引言 JavaScript 作為一種廣泛應用于 Web 開發的腳本語言&#xff0c;已經成為現代互聯網不可或缺的一部分。它不僅可以為網頁增添交互性和動態效果&#xff0c;還能在服務器端&#xff08;如 Node.js&#xff09;進行后端開發。本文將從 JavaScript 的基礎語法開始&#xff0…

第十三次CCF-CSP認證(含C++源碼)

第十三次CCF-CSP認證 跳一跳滿分題解 碰撞的小球滿分題解遇到的問題 棋局評估滿分題解 跳一跳 題目鏈接 滿分題解 沒什么好說的 基本思路就是如何用代碼翻譯題目所給的一些限制&#xff0c;以及變量應該如何更新&#xff0c;沒像往常一樣給一個n&#xff0c;怎么讀入數據&…

Pytorch使用手冊—自定義函數的雙重反向傳播與自定義函數融合卷積和批歸一化(專題五十二)

1. 使用自定義函數的雙重反向傳播 有時候,在反向計算圖中運行兩次反向傳播是有用的,例如計算高階梯度。然而,支持雙重反向傳播需要對自動求導(autograd)有一定的理解,并且需要小心處理。支持單次反向傳播的函數不一定能夠支持雙重反向傳播。在本教程中,我們將展示如何編…

MySQL:數據庫基礎

數據庫基礎 1.什么是數據庫&#xff1f;2.為什么要學習數據庫&#xff1f;3.主流的數據庫&#xff08;了解&#xff09;4.服務器&#xff0c;數據庫&#xff0c;表之間的關系5.數據的邏輯存儲6.MYSQL架構7.存儲引擎 1.什么是數據庫&#xff1f; 數據庫(Database,簡稱DB)&#x…

Web Component 教程(五):從 Lit-html 到 LitElement,簡化組件開發

前言 在現代前端開發中&#xff0c;Web 組件是一種非常流行的技術&#xff0c;它允許我們創建可重用的、自包含的 UI 元素。而 Lit-html 是一個簡潔高效庫&#xff0c;用于在 Web 組件中進行渲染。在這篇教程中&#xff0c;我們一步步學習如何 Lit-html 來創建 Web Component。…

【C++】二叉樹和堆的鏈式結構(上)

本篇博客給大家帶來的是用C語言來實現堆鏈式結構和二叉樹的實現&#xff01; &#x1f41f;&#x1f41f;文章專欄&#xff1a;數據結構 &#x1f680;&#x1f680;若有問題評論區下討論&#xff0c;我會及時回答 ??歡迎大家點贊、收藏、分享&#xff01; 今日思想&#xff…