有效提示工程的8个最佳实践

本文是来自 KNIME 社区和团队的专家建议,以指导大型语言模型生成有意义的响应

有效提示工程的8个最佳实践

大型语言模型(LLMs) 已经改变了我们与人工智能互动的方式,为解决问题、生成见解和创建内容提供了巨大的潜力。然而,它们的效果取决于提示的编写质量:编写不当的提示通常会导致模糊、不相关或不准确的响应。

在本文中,我们将探讨提示工程的八个最佳实践,并展示来自 KNIME 社区的数据科学家的见解。这些指南将帮助你设计精确有效的提示,确保你的 LLM 生成您期望的结果。

提示与提示工程

提示(prompt)是提供给 LLM 的输入或指令,以引导其生成响应。它通常由人类用自然语言编写,并提供必要的指导和上下文,使模型能够理解当前的任务。

提示工程(prompt engineering)是设计和优化提示的过程,以引导 LLM 生成符合用户需求的准确、相关和有效的响应。随着人工智能在行业和学术界的广泛应用,提示工程已成为与这项技术互动的关键要素。

上图展示了 OpenAI DALL-E 视图 节点的两个配置窗口,该节点允许你从 KNIME 分析平台 提示 OpenAI 的 DALL-E 模型进行图像生成。

在左侧,模型生成了一个没有具体细节的普通日落图像。而在右侧,通过添加更多具体信息到提示中,我们得到了一张具有独特风格的图像,展示了精心设计提示的影响。

提示工程之所以重要,是因为 AI 模型依赖于输入提示来生成响应。清晰具体的提示可以减少歧义,增强任务对齐,满足用户的意图,并减少错误或无关输出的可能性,从而提高 AI 应用的整体效果和准确性。

如何编写好的提示?

编写有效的提示是一项新兴且高度需求的技能,需要时间和练习。掌握提示写作需要一个迭代过程,就像使用任何新工具一样,有很多可以从成功使用者那里学到的东西。

KNIME,即 可视开源 数据科学平台,拥有一个充满活力的 社区 数据专业人士。为了探索提示工程的最佳实践,我们联系了 KNIME 社区中的几位数据专家并询问他们最宝贵的建议。三位贡献者分享了他们的见解:

让我们开始吧!

1、具体明确

Angel Molina,数据科学顾问建议,在设计提示时,最重要的一条规则就是具体明确。提供详细的指令将导致更准确和定制化的响应。

❌ 解释机器学习模型训练的过程

✅ 总结用于分类任务的随机森林算法的机器学习模型训练的关键步骤。
将步骤以简洁的编号列表形式呈现。

2、首先给出指令

提示的前几个词应该清楚地回答“我想让 LLM 做什么?”这个问题。无论是总结、翻译等,首先给出指令可以避免不必要的处理或延迟响应核心请求。

❌ 我不懂西班牙语,所以我想你可能能帮我理解这段文字。你能把它从西班牙语翻译成英语吗?

✅ 将这段文字从西班牙语翻译成英语。

3、包含示例

示例是向 LLM 展示您希望如何回应的一种好方法。尽可能提供示例是高度推荐的。

❌ 创建一个分析气候趋势的数据集。

✅ 创建一个分析气候趋势的数据集,使其看起来像下面的例子。
示例:|| 国家 | 排放量 | 平均温度 | 降水量 ||

4、结构化提示

在为 LLM 编写提示时,清晰的组织结构至关重要。使用不同的标记(如 ### 或 “””””””)分离提示的不同部分可以帮助模型更好地理解和执行。

❌ 为以下段落找到一个好的标题 {你的文本}

✅ 段落:###{你的文本}###

对于更复杂的请求,采用高度结构化的提示是有益的。Martin Dieste,业务顾问,数字推动者,以及 Finnovation Flows 的创始人,推荐使用类似 XML 标签的方法作为增加清晰度和组织结构的有效方法。这种方法模仿了 XML 属性和元素的树状结构,并将其适应于任务。这样,模型更容易识别提示的不同部分,发现关键指令,或遵循提供的推理步骤,从而提高模型生成准确和相关响应的能力。

以下是一个例子:

<角色>  
  你是一位专业文案撰写人,擅长为环保产品撰写吸引人的产品描述。  
</角色>  
<过程>  
  <步骤1>分析输入中提供的产品的特征。</步骤1>  
  <步骤2>创建一个富有创意且有说服力的产品描述。</步骤2>  
  <步骤3>以呼吁购买结束,鼓励购买。</步骤3>  
</过程>  
<任务>  
  为一款由不锈钢制成的环保水瓶撰写 100-150 字的产品描述。  
  特征:  
  - 容量:750 毫升  
  - 双层绝缘(保持饮料冷 24 小时,热 12 小时)  
  - BPA 免费且防漏  
  - 有多种颜色可供选择  
  - 100% 可回收包装  
</任务>  
<响应指令>  
  以专业且吸引人的语气撰写产品描述。确保强调产品的环保特性并包含关键特征。将您的响应包裹在这些标签内:  
  <最终响应>…您的产品描述…</最终响应>。不要包括标签外的内容。  
</响应指令>

5、分解任务

如果你正在处理一个涉及推理的复杂任务,最好将其分解为一系列较小的任务,以便说明过程并使 LLM 更容易跟随。在这种情况下,明确列出过程的步骤是有益的,类似于你会指导一个人完成某项任务的方式。

❌ 分析以下研究论文。

研究论文:### {你的论文} ###

✅ 分析以下研究论文,按照以下步骤进行:
  1. 确定论文所解决的核心研究问题或问题。
  2. 审查研究中使用的方法论,并评估其是否适合研究问题。
  3. 检查论文中呈现的结果,并评估它们是否被数据充分支持。
  4. 分析讨论和结论,确定作者的解释和结论是否合理。
研究论文:###{你的论文}###

6、分配角色

为 LLM 分配特定角色有助于缩小其焦点范围,确保响应符合所需的专长和背景。引入诸如“想象你是 X”或“扮演 X”的陈述。

❌ 审查以下代码。

代码:###{你的代码}###

✅ 审查以下代码。扮演网络安全专家的角色,评估潜在的安全风险。

代码:###{你的代码}###

7、指定受众

明确指出预期的目标受众可以确保提示生成的响应符合他们的需求、偏好和理解水平。这种具体性增强了输出的相关性和质量。

❌ 解释什么是线性回归。

✅ 向一个不懂微积分的初中生解释什么是线性回归。

8、学习和改进

有效的提示工程通常不是一个静态的、一次性交互。这是一个学习过程,测试和改进您的提示对于实现符合您需求的输出至关重要。

Francesco Alaimo,TIM 团队负责人和数据科学教育家,在开发基于 检索增强生成(RAG) 的聊天机器人时分享了他的提示工程经验。在开发过程中,他遇到了 LLM 生成的响应中的常见问题:它们包含了 “幻觉”。当模型无法从公司的知识库中检索到相关信息时,它仍然会输出听起来合理的但实际上是错误的回答。

经过多次迭代和提示改进,Francesco 学到了非常明确的提示是至关重要的。他需要明确指示 LLM 仅根据知识库中的可用上下文作答,并为模型提供一种优雅的退出策略,如果适当上下文不可用的话。

✅ 生成响应时,请仅考虑提供的上下文。如果提供的上下文中没有适当的信息,则输出一个反事实响应。

对于给定的问题,反事实响应如下:

问题:“你能做这件事吗?”
反事实响应:“不,我不能做这件事”。

原文链接:8 best practices for effective prompt engineering

汇智网翻译整理,转载请标明出处