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. 相关链接

### Cline 的复杂提示及其与不同模型的兼容性 #### 使用复杂提示的方法 Cline 支持复杂的提示机制,这使得开发者能够在编写代码时获得更加精准的帮助。为了利用这些高级特性,用户可以通过配置文件或命令行参数自定义提示的行为。例如,在 VSCode 中使用 Cline 插件时,可以设置特定的关键字触发更详细的上下文感知建议[^2]。 对于希望进一步定制体验的用户来说,还可以通过编辑 `.clineconfig` 文件来调整提示策略。此文件通常位于项目的根目录下,并支持 JSON 或 YAML 格式的配置项。下面是一个简单的例子: ```json { "prompt": { "contextualDepth": 3, "includeComments": true, "maxSuggestions": 5 } } ``` 这段配置会告诉 Cline 提供最多五条基于当前上下文中三层嵌套结构的相关建议,并考虑注释中的信息作为额外背景。 #### 与其他模型的兼容性 关于 Cline 和其他 AI 模型之间的互操作性,该平台设计之初就考虑到要保持灵活性和支持多种第三方服务的能力。特别是提到 Model Context Protocol (MCP),这是一种开放标准协议,旨在促进不同机器学习框架间的通信和协作。借助 MCP 协议的支持,Cline 可以轻松连接至各种预训练的语言模型或其他类型的预测引擎,从而实现功能上的扩展。 具体而言,除了内置集成 DeepSeek V3 外部 API 接口外,任何遵循 MCP 规范的服务都可以被纳入进来,只要它们提供了必要的接口文档和技术说明即可接入新工具并增强现有能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值