掌握与AI对话的艺术,让AI更好地理解你的需求并提供精准回答!
作者: Lee Boonstra | 2025年2月
当你与大型语言模型(如Gemini)交流时,你输入的文字就是"提示",AI会根据这些提示生成回答。提示工程就是设计高质量提示的过程,引导AI产生准确的输出。
小贴士: 你不需要成为数据科学家或机器学习工程师 — 任何人都可以学习如何写好提示!
大型语言模型(LLM)是一个预测引擎。当你输入文字时,模型会根据它训练过的数据预测下一个词应该是什么。通过精心设计的提示,你可以引导模型生成更符合你期望的回答。
除了提示本身,你还可以调整各种配置选项来控制AI的输出。这些设置会影响AI生成回答的方式。
控制AI生成的文字数量。生成更多文字需要更多计算资源,可能导致响应时间变慢和成本增加。
注意: 仅设置输出长度限制不会让AI的回答变得更简洁,它只会在达到限制时停止生成。
控制AI回答的随机性程度:
温度为0时,AI总是选择概率最高的词。
这些设置控制AI在选择下一个词时考虑的可能性范围:
推荐设置: 一般情况下,温度0.2、Top-P 0.95和Top-K 30会给你提供相对连贯但又不失创意的结果。如果需要更有创意的回答,可以尝试温度0.9、Top-P 0.99和Top-K 40。
警告: 如果你看到AI回答的末尾出现大量重复文字,这可能是"重复循环错误"。这是由于温度和采样设置不当导致的。调整这些参数可以解决问题。
以下是一些强大的提示技术,可以帮助你获得更好的AI回答:
最简单的提示方式,直接告诉AI你想要什么,不提供任何示例。
通过给AI提供一些例子,帮助它更好地理解你的需求。这种方法向模型展示了它需要遵循的模式。
小贴士: 一般来说,少样本提示应该使用3-5个例子。例子应该多样化、高质量且书写良好。
为语言模型设置整体上下文和目的,定义模型应该做什么的"大局"。
为AI模型分配特定角色或身份,帮助模型生成与指定角色一致的回答。
提供与当前对话或任务相关的特定细节或背景信息,帮助模型理解所问内容的细微差别。
先要求AI考虑与特定任务相关的一般问题,然后将该问题的答案用于解决具体问题。这种"后退"允许AI在尝试解决特定问题前激活相关的背景知识。
然后,你可以将这些主题用作上下文,创建更具体的故事情节:
通过生成中间推理步骤来提高AI的推理能力,特别适合解决需要逐步思考的复杂问题。
小贴士: 使用思维链提示时,最好将温度设置为0,因为通常只有一个正确答案。
允许AI同时探索多个不同的推理路径,而不是仅仅遵循单一的线性思维链。特别适合需要探索的复杂任务。
思维树通过维护一个思维树,每个思维代表一个连贯的语言序列,作为解决问题的中间步骤。模型可以通过从树的不同节点分支出来探索不同的推理路径。
结合自然语言推理和外部工具(如搜索、代码解释器等),使AI能够执行某些操作,如与外部API交互以检索信息。
ReAct通过将推理和行动结合到一个思考-行动循环中工作。AI首先推理问题并生成行动计划,然后执行计划中的行动并观察结果,最后使用观察结果更新推理并生成新的行动计划。
> 输入新的AgentExecutor链... Metallica有4个成员。 行动: 搜索 行动输入: James Hetfield有多少个孩子? 观察: 三个孩子 思考: 1/4 Metallica乐队成员有3个孩子 行动: 搜索 行动输入: Lars Ulrich有多少个孩子? 观察: 3 思考: 2/4 Metallica乐队成员有6个孩子 行动: 搜索 行动输入: Kirk Hammett有多少个孩子? 观察: Hammett自1998年以来与他的第二任妻子Lani结婚。他们有两个儿子,Angel(2006年9月29日出生)和Vincenzo(2008年6月28日出生)。 思考: 3/4 Metallica乐队成员有8个孩子 行动: 搜索 行动输入: Robert Trujillo有多少个孩子? 观察: 2 思考: 4/4 Metallica乐队成员有10个孩子 最终答案: 10
使用特定技巧让AI帮助你编写、解释或调试代码。
以下是一些提示工程的最佳实践,帮助你获得更好的AI回答:
在提示中提供示例是最有效的方法之一。示例可以帮助AI理解你期望的输出格式和风格。
提示应该简洁、清晰、易于理解。如果提示对你来说已经很混乱,那么对AI来说也可能很混乱。尽量不要使用复杂的语言,不要提供不必要的信息。
明确说明你期望的输出。简洁的指令可能不足以引导AI,或者太过笼统。在提示中提供具体细节可以帮助模型关注相关内容,提高整体准确性。
研究表明,在提示中专注于积极指令比严重依赖约束更有效。这与人类更喜欢积极指令而不是"不要做什么"的列表的方式一致。
要控制AI回答的长度,你可以在配置中设置最大标记限制,或者在提示中明确要求特定长度。例如:"用推特长度的消息解释量子物理学。"
使用变量可以让你的提示更加动态,避免重复。例如,不要在提示中硬编码城市名称,而是使用变量。
不同的模型、模型配置、提示格式、词汇选择和提交方式可能产生不同的结果。因此,尝试不同的提示属性很重要。
在进行分类任务时,确保在少样本示例中混合可能的响应类别。这可以确保模型学习识别每个类别的关键特征,而不是简单地记住示例的顺序。
了解模型架构变化、添加的数据和功能很重要。尝试新的模型版本,并调整你的提示以更好地利用新的模型功能。
除了提示输入格式外,考虑尝试不同的输出格式。对于非创意任务,如提取、选择、解析、排序或分类数据,尝试让输出以JSON或XML等结构化格式返回。
使用JSON输出的好处:
详细记录你的提示尝试,这样你可以随着时间的推移了解哪些方法有效,哪些无效。
名称 | 目标 | 模型 | 温度 | 标记限制 |
---|---|---|---|---|
[提示名称和版本] | [目标的一句话解释] | [使用的模型名称和版本] | [0-1之间的值] | [数字] |
Top-K | Top-P | 提示 | ||
[数字] | [数字] | [完整提示] | ||
输出 | ||||
[输出或多个输出] |
提示工程是一个迭代过程: 制作和测试不同的提示,分析并记录结果。根据模型的表现改进你的提示。继续实验,直到达到期望的输出。当你更改模型或模型配置时,回去继续尝试之前使用的提示。