提示工程
提示工程是设计高质量提示的过程,以指导大型语言模型(LLM)生成准确的输出。该过程涉及选择合适的模型、调整LLM配置(如输出长度、采样控制、温度、Top-K和Top-P)以及应用各种提示技术。
LLM输出配置
LLM的输出配置选项控制着模型的输出。关键配置包括:
- 输出长度:控制响应中要生成的token数量,影响能耗、响应时间和成本。
- 采样控制:包括温度、Top-K和Top-P,控制生成文本的随机性和多样性。
- 温度:较低的温度产生更确定性的响应,较高的温度导致更多样化的结果。
- Top-K和Top-P:限制预测的下一个token来自具有最高预测概率的token。
- 综合运用:不同的采样设置相互影响,需要根据具体应用场景选择合适的组合。
提示技术
提示技术是指导LLM生成文本的方法,包括:
- 通用提示/零样本:仅提供任务描述和一些初始文本,没有示例。
- 单样本和少样本:提供一个或多个示例,帮助模型理解期望的输出结构或模式。
- 系统、上下文和角色提示:
- 系统提示:设定LLM的整体上下文和目的。
- 上下文提示:提供与当前任务相关的具体细节或背景信息。
- 角色提示:为LLM分配一个特定的角色或身份,影响其输出风格和语气。
- 后退式提示:首先考虑与特定任务相关的通用问题,然后使用答案作为上下文来解决特定问题。
- 思维链(CoT):生成中间推理步骤,提高LLM的推理能力。
- 自洽性:结合采样和多数投票,生成多样化的推理路径并选择最一致的答案。
- 思维树(ToT):允许LLM同时探索多个不同的推理路径,适用于复杂任务。
- ReAct(推理&行动):使LLM能够使用自然语言推理结合外部工具(如搜索、代码解释器)解决复杂任务。
- 自动提示工程:使用LLM生成更多提示,并评估和改进它们。
- 代码提示:使用LLM编写、解释、翻译、调试和审查代码。
最佳实践
- 提供示例:使用单样本或少样本提示,帮助模型理解期望的输出。
- 简洁设计:提示应简洁、清晰且易于理解。
- 明确输出内容:在提示中提供具体细节,帮助模型专注于相关内容。
- 使用指令而非约束:优先考虑积极的指令,仅在必要时使用约束。
- 控制最大token长度:根据任务需求设置合理的token限制。
- 在提示中使用变量:提高提示的动态性和可重用性。
- 尝试不同的输入格式和写作风格:探索不同的提示方式和措辞选择。
- 对于分类任务的少样本提示,要混合类别:避免过度拟合示例的顺序,提高模型的泛化能力。
- 适应模型更新:尝试使用较新的模型版本,并调整提示以利用新功能。
- 尝试不同的输出格式:对于非创意任务,考虑使用JSON或XML等结构化格式。
- 与其他提示工程师一起进行实验:通过比较不同的提示尝试,找到最佳方案。
- CoT最佳实践:将答案放在推理之后,并将温度设置为0。
- 记录各种提示尝试:使用表格记录提示的详细信息,以便分析和改进。
提示工程是一个迭代的过程,需要不断实验和优化,才能获得最佳的LLM输出。