深入理解NLWeb项目中的提示词(Prompt)修改技巧

深入理解NLWeb项目中的提示词(Prompt)修改技巧

NLWeb Natural Language Web NLWeb 项目地址: https://gitcode.com/gh_mirrors/nl/NLWeb

什么是NLWeb项目中的提示词

在NLWeb项目中,提示词(Prompt)是控制大型语言模型(LLM)行为的关键要素。当用户提交一个查询时,系统会进行多次LLM调用,每个调用都对应不同的任务阶段,这些阶段包括:

  1. 预处理阶段(Pre steps)

    • 分析查询与站点的相关性
    • 从查询历史中构建去上下文化的查询
    • 识别查询中需要记忆的内容
  2. 排序阶段(Ranking)

    • 对结果进行评分和排序
  3. 后处理阶段(Post steps)

    • 生成结果摘要
    • 尝试使用排名靠前的结果回答用户问题(类似传统RAG方法)

提示词的结构解析

每个提示词都采用XML格式定义,包含三个核心部分:

<Prompt ref="唯一标识符">
  <promptString>
    <!-- 这里放置实际的提示内容 -->
    <!-- 可以使用变量如{request.rawQuery} -->
  </promptString>
  <returnStruc>
    {
      /* 定义期望的JSON输出结构 */
    }
  </returnStruc>
</Prompt>

关键组成部分详解

  1. ref属性:唯一标识符,代码通过这个标识符来调用对应的提示词

  2. promptString:实际发送给LLM的提示文本,可以包含动态变量

  3. returnStruc:定义LLM应该返回的JSON结构,确保输出格式标准化

如何定制提示词

1. 通用提示词与特定类型提示词

系统支持两种层次的提示词定义:

  • 通用提示词:适用于所有类型的项目,定义在<Thing>标签下
  • 特定类型提示词:针对特定类型(如Recipe、Movie等)优化,定义在对应类型标签下

例如,检测记忆请求的通用提示词:

<Thing>
  <Prompt ref="DetectMemoryRequestPrompt">
    <promptString>
      <!-- 通用提示内容 -->
    </promptString>
    <!-- 输出结构 -->
  </Prompt>
</Thing>

而针对食谱(Recipe)的专用提示词:

<Recipe>
  <Prompt ref="DetectMemoryRequestPrompt">
    <promptString>
      <!-- 专注于饮食限制的提示内容 -->
    </promptString>
    <!-- 输出结构 -->
  </Prompt>
</Recipe>

2. 修改排序逻辑

默认排序提示词会评估项目与用户查询的相关性:

<Prompt ref="RankingPrompt">
  <promptString>
    <!-- 基本相关性评分提示 -->
  </promptString>
  <!-- 输出结构 -->
</Prompt>

如果需要考虑评分因素,可以修改为:

<Prompt ref="RankingPrompt">
  <promptString>
    <!-- 加入aggregateRating考量的提示 -->
  </promptString>
  <!-- 输出结构 -->
</Prompt>

3. 定制项目描述

可以为特定类型定制描述生成逻辑,例如食谱:

<Recipe>
  <Prompt ref="RankingPrompt">
    <promptString>
      <!-- 包含营养信息的描述生成提示 -->
    </promptString>
    <!-- 输出结构 -->
  </Prompt>
</Recipe>

可用变量列表

在提示词中可以使用以下动态变量:

  • request.site:请求关联的站点
  • site.itemType:该站点通常关联的项目类型
  • request.itemType:用户查询中明确请求的项目类型
  • request.rawQuery:用户原始查询文本
  • request.previousQueries:当前会话中的历史查询
  • request.query:去上下文化后的查询
  • request.contextUrl:查询关联的上下文URL
  • request.contextDescription:查询关联的上下文描述
  • request.answers:后处理阶段可用的排名靠前的答案列表

提示词设计最佳实践

  1. 明确任务目标:在提示词开头清晰说明LLM需要完成的任务

  2. 结构化输出:始终定义明确的输出结构,便于后续处理

  3. 上下文引导:提供足够的上下文信息帮助LLM理解任务

  4. 特定优于通用:尽可能为特定类型设计专用提示词

  5. 变量使用:合理使用动态变量使提示词更具适应性

通过精心设计和修改这些提示词,开发者可以显著提升NLWeb系统处理用户查询的效果和准确性。

NLWeb Natural Language Web NLWeb 项目地址: https://gitcode.com/gh_mirrors/nl/NLWeb

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈如廷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值