LLM提示词设计_结构化

1. 提示词设计

提示词设计是应用LLM的重要起点。设计有效的提示词可以显著提升模型的性能,但这不仅仅是几句话的问题,而是需要结合大量的工程工作。

  1. 充分利用基本提示技巧
  • n-shot 提示:通过提供一些示例来展示任务要求,引导模型输出符合预期的结果。示例应具有代表性,n 值通常不小于5。
  • 链式思维(CoT):让LLM解释其思维过程。可以通过添加短语“让我们一步一步思考”来引导模型逐步推理。
  • 提供相关资源:通过检索增强生成(RAG)为模型提供直接利用的文本片段,并指导模型优先使用这些资源。
  1. 结构化输入和输出
  • 使用序列化格式提供输入,帮助模型理解上下文中的关系和元数据。
  • 结构化输出简化了与系统下游组件的集成,提高了可靠性和可扩展性。
  1. 设计简洁提示词
  • 避免提示词过于复杂,保持简洁和专注。可以将复杂任务拆分为多个简单步骤,提高性能和可理解性。
2. 信息检索/RAG

通过检索增强生成(RAG),将外部知识融入模型,提高其响应质量。RAG在提供知识、减少幻觉方面表现出色,且比微调模型成本低。

  1. 评估文档质量
  • 相关性:通过排名指标如MRR和NDCG量化检索文档的相关性。
  • 信息密度:更简洁且没有多余细节的文档更优。
  • 细节程度:提供更多细节可以帮助模型更好地理解任务。
  1. 混合方法
  • 结合关键字搜索和嵌入搜索,既能处理具体查询,又能捕捉语义相似性。
  1. 优先使用RAG而不是微调
  • 研究表明,RAG在整合新知识和提升任务性能方面比微调更有优势,且维护成本更低。
3. 调整和优化工作流

提示LLM只是开始,优化工作流是关键。

  1. 逐步、多回合的“流”
  • 将复杂任务拆分为多个简单任务,按步骤执行,提高可靠性和效率。
  • 明确计划步骤,确保每一步都有明确目标和具体计划。
  1. 确定性工作流
  • 生成确定性计划并按计划执行,使系统更可靠、可预测。
  • 计划可以作为少样本示例提示或微调Agent,提高其性能。
  1. 超越temperature
  • 通过调整提示中的元素或改变措辞,增加输出多样性,而不仅仅依赖调整temperature参数。
4. 缓存和微调

缓存和微调是提高系统性能和降低成本的重要策略。

  1. 缓存
  • 缓存可以节省成本,并减少生成延迟。使用唯一ID或规范化用户输入提高缓存命中率。
  1. 微调
  • 当提示工程无法满足任务需求时,可以考虑微调模型,但需评估其成本和收益。
  • 可以使用合成数据或开源数据降低微调成本。
5. 评估和监控

严格和深思熟虑的评估至关重要。

  1. 创建基于断言的单元测试
  • 使用生产环境中的输入输出示例,基于至少三个标准对输出进行评估。
  1. 使用LLM-as-Judge
  • 在成对比较和链式思考中,LLM-as-Judge可以有效评估其他LLM的输出,但需控制位置偏差和允许平局。

通过这些方法和策略,我们可以更好地设计、优化和评估基于LLM的产品,确保其在实际应用中的可靠性和性能。