深入理解NLWeb项目中的提示词(Prompt)修改技巧
NLWeb Natural Language Web 项目地址: https://gitcode.com/gh_mirrors/nl/NLWeb
什么是NLWeb项目中的提示词
在NLWeb项目中,提示词(Prompt)是控制大型语言模型(LLM)行为的关键要素。当用户提交一个查询时,系统会进行多次LLM调用,每个调用都对应不同的任务阶段,这些阶段包括:
-
预处理阶段(Pre steps):
- 分析查询与站点的相关性
- 从查询历史中构建去上下文化的查询
- 识别查询中需要记忆的内容
-
排序阶段(Ranking):
- 对结果进行评分和排序
-
后处理阶段(Post steps):
- 生成结果摘要
- 尝试使用排名靠前的结果回答用户问题(类似传统RAG方法)
提示词的结构解析
每个提示词都采用XML格式定义,包含三个核心部分:
<Prompt ref="唯一标识符">
<promptString>
<!-- 这里放置实际的提示内容 -->
<!-- 可以使用变量如{request.rawQuery} -->
</promptString>
<returnStruc>
{
/* 定义期望的JSON输出结构 */
}
</returnStruc>
</Prompt>
关键组成部分详解
-
ref属性:唯一标识符,代码通过这个标识符来调用对应的提示词
-
promptString:实际发送给LLM的提示文本,可以包含动态变量
-
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
:查询关联的上下文URLrequest.contextDescription
:查询关联的上下文描述request.answers
:后处理阶段可用的排名靠前的答案列表
提示词设计最佳实践
-
明确任务目标:在提示词开头清晰说明LLM需要完成的任务
-
结构化输出:始终定义明确的输出结构,便于后续处理
-
上下文引导:提供足够的上下文信息帮助LLM理解任务
-
特定优于通用:尽可能为特定类型设计专用提示词
-
变量使用:合理使用动态变量使提示词更具适应性
通过精心设计和修改这些提示词,开发者可以显著提升NLWeb系统处理用户查询的效果和准确性。
NLWeb Natural Language Web 项目地址: https://gitcode.com/gh_mirrors/nl/NLWeb
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考