面向开发者的LLM入门课程-提示原则编写指令: 如何去使用 Prompt,以充分发挥 LLM 的性能?首先我们需要知道设计 Prompt 的原则,它们是每一个开发者设计 Prompt 所必须……
哈喽!伙伴们,我是小智,你们的AI向导。欢迎来到每日的AI学习时间。今天,我们将一起深入AI的奇妙世界,探索“面向开发者的LLM入门课程-提示原则编写指令”,并学会本篇文章中所讲的全部知识点。还是那句话“不必远征未知,只需唤醒你的潜能!”跟着小智的步伐,我们终将学有所成,学以致用,并发现自身的更多可能性。话不多说,现在就让我们开始这场激发潜能的AI学习之旅吧。
面向开发者的LLM入门课程-提示原则编写指令:
如何去使用 Prompt,以充分发挥 LLM 的性能?首先我们需要知道设计 Prompt 的原则,它们是每一个开发者设计 Prompt 所必须知道的基础概念。本章讨论了设计高效 Prompt 的两个关键原则:编写清晰、具体的指令和给予模型充足思考时间。掌握这两点,对创建可靠的语言模型交互尤为重要。
首先,Prompt 需要清晰明确地表达需求,提供充足上下文,使语言模型准确理解我们的意图,就像向一个外星人详细解释人类世界一样。过于简略的 Prompt 往往使模型难以把握所要完成的具体任务。
其次,让语言模型有充足时间推理也极为关键。就像人类解题一样,匆忙得出的结论多有失误。因此Prompt 应加入逐步推理的要求,给模型留出充分思考时间,这样生成的结果才更准确可靠。
如果 Prompt 在这两点上都作了优化,语言模型就能够尽可能发挥潜力,完成复杂的推理和生成任务。
掌握这些 Prompt 设计原则,是开发者取得语言模型应用成功的重要一步。
原则一 编写清晰、具体的指令
亲爱的读者,在与语言模型交互时,您需要牢记一点:以清晰、具体的方式表达您的需求。假设您面前坐着一位来自外星球的新朋友,其对人类语言和常识都一无所知。在这种情况下,您需要把想表达的意图讲得非常明确,不要有任何歧义。同样的,在提供 Prompt 的时候,也要以足够详细和容易理解的方式,把您的需求与上下文说清楚。
并不是说 Prompt 就必须非常短小简洁。事实上,在许多情况下,更长、更复杂的 Prompt 反而会让语言模型更容易抓住关键点,给出符合预期的回复。原因在于,复杂的 Prompt 提供了更丰富的上下文和细节,让模型可以更准确地把握所需的操作和响应方式。
所以,记住用清晰、详尽的语言表达 Prompt,就像在给外星人讲解人类世界一样,“Adding morecontext helps the model understand you better.”。
从该原则出发,我们提供几个设计 Prompt 的技巧。
1.使用分隔符清晰地表示输入的不同部分
在编写 Prompt 时,我们可以使用各种标点符号作为“分隔符”,将不同的文本部分区分开来。
分隔符就像是 Prompt 中的墙,将不同的指令、上下文、输入隔开,避免意外的混淆。你可以选择用“`,”””,< >,
使用分隔符尤其重要的是可以防止 提示词注入(Prompt Rejection)。什么是提示词注入?就是用户输入的文本可能包含与你的预设 Prompt 相冲突的内容,如果不加分隔,这些输入就可能“注入”并操纵语言模型,导致模型产生毫无关联的乱七八糟的输出。
在以下的例子中,我们给出一段话并要求 GPT 进行总结,在该示例中我们使用 “` 来作为分隔符。
from tool import get_completion
text = f”””
您应该提供尽可能清晰、具体的指示,以表达您希望模型执行的任务。
这将引导模型朝向所需的输出,并降低收到无关或不正确响应的可能性。
不要将写清晰的提示词与写简短的提示词混淆。
在许多情况下,更长的提示词可以为模型提供更多的清晰度和上下文信息,从而导致更详细和相关的输出。
“””# 需要总结的文本内容
prompt = f”””
把用三个反引号括起来的文本总结成一句话。“`{text}“`
“””
# 指令内容,使用 “` 来分隔指令和待总结的内容
response = get_completion(prompt)
print(response)为了获得所需的输出,您应该提供清晰、具体的指示,避免与简短的提示词混淆,并使用更长的提示词来提供更
多的清晰度和上下文信息。
2.寻求结构化的输出
有时候我们需要语言模型给我们一些结构化的输出,而不仅仅是连续的文本。
什么是结构化输出呢?就是按照某种格式组织的内容,例如JSON、HTML等。这种输出非常适合在代码中进一步解析和处理。例如,您可以在 Python 中将其读入字典或列表中。
在以下示例中,我们要求 GPT 生成三本书的标题、作者和类别,并要求 GPT 以 JSON 的格式返回给我们,为便于解析,我们指定了 Json 的键。
prompt = f”””
请生成包括书名、作者和类别的三本虚构的、非真实存在的中文书籍清单,
并以 JSON 格式提供,其中包含以下键:book_id、title、author、genre。
“””
response = get_completion(prompt)
print(response)
{
“books”: [
{
“book_id”: 1,
“title”: “迷失的时光”,
“author”: “张三”,
“genre”: “科幻”
},
{
“book_id”: 2,
“title”: “幻境之门”,
“author”: “李四”,
“genre”: “奇幻”
},
{
“book_id”: 3,
“title”: “虚拟现实”,
“author”: “王五”,
“genre”: “科幻”
}
]
}
3.要求模型检查是否满足条件
如果任务包含不一定能满足的假设(条件),我们可以告诉模型先检查这些假设,如果不满足,则会指出并停止执行后续的完整流程。您还可以考虑可能出现的边缘情况及模型的应对,以避免意外的结果或错误发生。
在如下示例中,我们将分别给模型两段文本,分别是制作茶的步骤以及一段没有明确步骤的文本。我们将要求模型判断其是否包含一系列指令,如果包含则按照给定格式重新编写指令,不包含则回答“未提供步骤”。
# 满足条件的输入(text中提供了步骤)
text_1 = f”””
泡一杯茶很容易。首先,需要把水烧开。
在等待期间,拿一个杯子并把茶包放进去。
一旦水足够热,就把它倒在茶包上。
等待一会儿,让茶叶浸泡。几分钟后,取出茶包。
如果您愿意,可以加一些糖或牛奶调味。
就这样,您可以享受一杯美味的茶了。
“””
prompt = f”””
您将获得由三个引号括起来的文本。
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:第一步 – …
第二步 – …
…
第N步 – …如果文本中不包含一系列的指令,则直接写“未提供步骤”。”
“””{text_1}”””
“””
response = get_completion(prompt)
print(“Text 1 的总结:”)
print(response)
Text 1 的总结:
第一步 – 把水烧开。
第二步 – 拿一个杯子并把茶包放进去。
第三步 – 把烧开的水倒在茶包上。
第四步 – 等待几分钟,让茶叶浸泡。
第五步 – 取出茶包。
第六步 – 如果需要,加入糖或牛奶调味。
第七步 – 就这样,您可以享受一杯美味的茶了。
上述示例中,模型可以很好地识别一系列的指令并进行输出。在接下来一个示例中,我们将提供给模型没有预期指令的输入,模型将判断未提供步骤。
# 不满足条件的输入(text中未提供预期指令)
text_2 = f”””
今天阳光明媚,鸟儿在歌唱。
这是一个去公园散步的美好日子。
鲜花盛开,树枝在微风中轻轻摇曳。
人们外出享受着这美好的天气,有些人在野餐,有些人在玩游戏或者在草地上放松。
这是一个完美的日子,可以在户外度过并欣赏大自然的美景。
“””
prompt = f”””
您将获得由三个引号括起来的文本。
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:第一步 – …
第二步 – …
…
第N步 – …如果文本中不包含一系列的指令,则直接写“未提供步骤”。”
“””{text_2}”””
“””
response = get_completion(prompt)
print(“Text 2 的总结:”)
print(response)Text 2 的总结:
未提供步骤。
4.提供少量示例
“Few-shot” prompting,即在要求模型执行实际任务之前,给模型一两个已完成的样例,让模型了解我们的要求和期望的输出样式。
例如,在以下的样例中,我们先给了一个祖孙对话样例,然后要求模型用同样的隐喻风格回答关于“韧性”的问题。这就是一个少样本样例,它能帮助模型快速抓住我们要的语调和风格。
利用少样本样例,我们可以轻松“预热”语言模型,让它为新的任务做好准备。这是一个让模型快速上手新任务的有效策略。
prompt = f”””
您的任务是以一致的风格回答问题。<孩子>: 请教我何为耐心。
<祖父母>: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符开始;最复杂的挂毯以一根孤独的线开始编织。
<孩子>: 请教我何为韧性。
“””
response = get_completion(prompt)
print(response)<祖父母>: 韧性是一种坚持不懈的品质,就像一棵顽强的树在风雨中屹立不倒。它是面对困难和挑战时不屈不挠的精神,能够适应变化和克服逆境。韧性是一种内在的力量,让我们能够坚持追求目标,即使面临困难和挫也能坚持不懈地努力。
嘿,伙伴们,今天我们的AI探索之旅已经圆满结束。关于“面向开发者的LLM入门课程-提示原则编写指令”的内容已经分享给大家了。感谢你们的陪伴,希望这次旅程让你对AI能够更了解、更喜欢。谨记,精准提问是解锁AI潜能的钥匙哦!如果有小伙伴想要了解学习更多的AI知识,请关注我们的官网“AI智研社”,保证让你收获满满呦!
还没有评论呢,快来抢沙发~