1. 编写清晰的指令
模型不能读懂你的心思。如果输出内容太长,请要求简短回复。如果输出内容过于简单,请要求专家级别的写作。如果你不喜欢模型输出的格式,请展示你希望看到的格式。让模型猜测你想要什么的次数越少,得到想要的结果的可能性就越大。
1.1 在你的提示词中包含更多的细节以获得更相关的回答
为了获得和prompt更相关的回复,请确保请求提供重要的细节或上下文。否则,模型只能猜测你的意思。
Bad case | 改进 |
---|---|
我怎样在Excel中加数字? | 如何在 Excel 中将一行美元金额相加?我希望这能自动应用于整个表格的行,所有的总计最终出现在右侧名为“Total”的列中。 |
谁是总统? | 2021年墨西哥的总统是谁,选举有多频繁举行? |
编写代码计算斐波那契序列。 | 编写一个TypeScript函数来高效计算斐波那契序列。充分评论代码以解释每一部分的作用及其编写方式。 |
总结会议记录。 | 用单段总结会议记录。然后,写一个markdown列表,列出发言者及其每个关键点。最后,列出发言者提出的下一步行动或建议的行动项目(如果有)。 |
1.2 要求模型采用一个角色
system可用于指定模型在回复中使用的角色。
role | content |
---|---|
SYSTEM | 当我请你帮忙写东西时,你的回复文件中每段至少要有一个笑话或俏皮话。 |
USER | 给我的钢铁供应商写一封感谢信,感谢他们在短时间内准时交货。这使我们能够交付一份重要的订单。 |
1.3 使用分隔符明确指出输入内容的不同部分
三引号、XML 标记、章节标题等分隔符可以帮助划分文本中需要区别对待的部分。
role | content |
---|---|
USER | 用俳句概括用三引号分隔的文本。 “”“此处插入文本”“” |
role | content |
---|---|
SYSTEM | 您将收到两篇关于同一主题的文章(用 XML 标记分隔)。首先总结每篇文章的论点。然后指出哪一篇文章的论点更好,并解释原因。 |
USER | <article> 在此处插入第一篇文章 </article> <article> 在此处插入第二篇文章 </article> |
对于这类简单的任务,使用分隔符可能不会影响输出质量。但是,任务越复杂,明确任务细节就越重要。不要让模型费力地理解您对他们提出的确切要求。
1.4 明确完成任务所需的步骤
有些任务最好指定为一系列步骤。明确写出这些步骤可以使模型更容易遵循这些步骤。
role | content |
---|---|
SYSTEM | 使用以下分步指令来响应用户输入。 第1步: 用户将提供三引号文本。用 "Summary:"前缀将文本总结为一句话。 第2步:将第 1 步的摘要翻译成西班牙语,前缀为 "Translation: ". |
USER | “”“在此处插入文本”“” |
1.5 提供示例
但在某些情况下,提供示例可能更能让模型理解你的意图。例如,如果您打算让模型复制一种难以明确描述的回应用户查询的特定风格。这就是所谓的 “few-shot” prompting。
role | content |
---|---|
SYSTEM | 回答的问题保持一致的风格 |
USER | 告诉我什么是爱 |
ASSISTANT | 最深邃的河流源于一泓清泉; 最宏伟的交响乐源于一个音符; 最复杂的织锦始于一根丝线。 |
USER | 告诉我什么是恨 |
1.6 指定输出的长度
您可以要求模型生成具有给定目标长度的输出。可以用字数、句数、段落数、要点数等来指定目标输出长度。但请注意,指示模型生成特定字数的精确度并不高。模型可以更可靠地生成具有特定段落数或要点数的输出结果。
role | content |
---|---|
USER | 将下面的内容总结为50字。 “”“此处插入文本”“” |
to be continue…