深入解析MCP的提示词模板:结构、使用方法与实践(六)

引言

模型上下文协议(Model Context Protocol, MCP)是一种开放协议,旨在实现大型语言模型(LLM)应用与外部数据源、工具和服务之间的无缝集成。MCP可以比作AI应用的USB-C接口,它提供了一种将AI模型连接到不同数据源、工具和功能的标准方法。MCP通过标准化模型与外部资源的交互方式,提升LLM应用的功能性、灵活性和可扩展性。
在MCP框架中,提示词模板(Prompts)扮演着至关重要的角色。它们使服务器能够定义可重用的提示词模板和工作流,客户端可以轻松地将其呈现给用户和LLM。提示词提供了一种强大的方式来标准化和共享常见的LLM交互。

MCP提示词的基本概念

提示词的定义

MCP中的提示词是预定义的模板,具有以下核心功能:

  • 接受动态参数
  • 包含来自资源的上下文
  • 链接多个交互
  • 引导特定工作流
  • 作为UI元素呈现(如斜杠命令)
    提示词被设计为用户可控的,这意味着它们从服务器暴露给客户端时,目的是让用户能够明确地选择使用它们。

提示词的结构

每个提示词的定义包含以下部分:

{
   
  name: string; // 提示词的唯一标识符
  description?: string; // 人类可读的描述
  arguments?: [ // 可选的参数列表
    {
   
      name: string; // 参数标识符
      description?: string; // 参数描述
      required?: boolean; // 参数是否必需
    }
  ]
}
  • name: 提示词的唯一标识符,用于唯一标识该提示词
  • description: 人类可读的描述,解释提示词的功能
  • arguments: 参数列表,每个参数包含:
    • name: 参数标识符
    • description: 参数描述
    • required: 布尔值,指示参数是否必需

发现和使用提示词

发现可用的提示词

客户端可以通过prompts/list端点发现可用的提示词:

// 请求
{
   
  "method": "prompts/list"
}
// 响应
{
   
  "prompts": [
    {
   
      "name": "analyze-code",
      "description": "分析代码以寻找潜在改进",
      "arguments": [
        {
   
          "name": "language",
          "description": "编程语言",
          "required": true
        }
      ]
    }
  ]
}

获取提示词详细信息

要获取特定提示词的详细信息,客户端可以发送prompts/get请求:

// 请求
{
   
  "method": "prompts/get",
  "arguments": {
   
    "name": "analyze-code"
  }
}
// 响应
{
   
  "name": "analyze-code",
  "description": "分析代码以寻找潜在改进",
  "arguments": [
    {
   
      "name": "language",
      "description": "编程语言",
      "required": true
    }
  ]
}

执行提示词

要执行提示词,客户端需要发送prompts/execute请求:

// 请求
{
   
  "method": "prompts/execute",
  "arguments": {
   
    "name": "analyze-code",
    "arguments": {
   
      "language": "python"
    }
  }
}

提示词的工作原理

提示词的生命周期

提示词的生命周期包括创建、发现、获取和执行四个主要阶段:

  1. 创建: 服务器创建提示词模板,并定义其参数和功能
  2. 发现: 客户端通过prompts/list发现可用的提示词
  3. 获取: 客户端通过prompts/get获取特定提示词的详细信息
  4. 执行: 客户端通过prompts/execute执行提示词,LLM根据该提示词生成响应

提示词与LLM的交互

提示词模板结合了系统提示和用户输入的占位符。当客户端调用提示词时,MCP服务器会将提示词模板与提供的参数结合起来,形成要发送给LLM的完整提示。例如,对于一个名为"summarize-text"的提示词,系统提示可能是:
“你是一个文本摘要专家。你的任务是总结给定的文本。保持简洁,抓住主要观点。”
然后,用户输入是"text"参数的值。完整的提示将是:
“你是一个文本摘要专家。你的任务是总结给定的文本。保持简洁,抓住主要观点。文本:[text_value]”
这个完整的提示被发送给LLM,它将生成相应的摘要。

提示词示例

基础提示词示例

以下是一个名为"simple_prompt"的基础提示词示例,它不接受任何参数[7]:

  • 名称: simple_prompt
  • 描述: 基础提示,无参数
  • 返回值: 单条消息交换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值