本文中所指的“提示词工程”主要说的是NLP(Natural Language Processing)自然语言大模型所使用提示词。有人说“提示词工程”是学习生成式大模型的基础,既然这么重要那么就有必要深入的学习一番,那么哪些读者适合阅读本文呢?
- 正在使用或者将要使用ChatGPT或同类产品,如文心一言、claude等,想要使用大模型在工作中提升效率的读者
- 想要针对LLM技术进行自然大语言模型相关开发,比如使用LangChain进行开发的读者
一、什么是提示词工程
提示词工程是一门新兴的学科,旨在通过设计和优化提示词来提高语言模型的性能。提示词是提供给语言模型的一段文本,它可以引导模型生成特定的输出。
随着研究的深入,我们对提示词的设计和优化有了越来越深刻的理解。这使得提示词工程成为一种越来越强大的工具,可以用于提高语言模型的性能。
二、指导原则
1、第一原则
编写清晰而具体的提示,当你使用一个经过指令调优的LLM(ChatGPT)时,你可以想象在给另一个人,一个聪明但不了解具体任务的人。所以当LLM不能正常工作时,有时是由于指令不够清晰。例如,我的提问是“请给我写一些关于苏东坡的东西”,应该更加明确一些内容,比如他的诗歌创作、个人生活、历史角色等。进一步地,你可以指定文本的风格,是像一个专业记者的报到、还是像一封朋友的便签。
策略一:使用分隔符清楚地表示输入的不同部分
我来举个例子。我们有一段话,我们想要完成的任务就是总结这段话。因此,我在提示中要求,将由三重反引号"""分隔的文本总结为一句话。
text = f"""
You should express what you want a model to do by \
providing instructions that are as clear and \
specific as you can possibly make them. \
This will guide the model towards the desired output, \
and reduce the chances of receiving irrelevant \
or incorrect responses. Don't confuse writing a \
clear prompt with writing a short prompt. \
In many cases, longer prompts provide more clarity \
and context for the model, which can lead to \
more detailed and relevant outputs.
"""
prompt = f"""
总结由三个反引号分隔的文本 \
使其变成一个句子
```{text}```
"""
response = get_completion(prompt)
print(response)
在提示中,我们使用三重反引号"""把将文本{text}括起来,使用 get_completion 函数获得响应,然后打印输出响应。如果我们运行这段程序,就可以得到下面这个输出的句子。
在本例中我们使用这些分隔符,向模型非常清楚地指定它应该使用的确切文本。分隔符可以是任何明确的标点符号,将特定的文本片段部分与提示的其它部分分隔开来。分隔符可以使用三重双引号、单引号、XML 标记、章节标题,或者任何可以向模型表明这是一个单独部分的符号或标记。例如我们可以使用这些分隔符:“”",—,< >,
策略二:要求结构化的输出
为了更容易解析模型的输出,要求结构化输出(例如 HTML 或 JSON 格式)往往会很有帮助。
正如所见,这里有三个虚构的书名,格式为漂亮的 JSON 结构化输出。这样做的好处是,你实际上可以在 Python 中将其读入字典(dict)或列表(list)中。
[
{
"book_id": 1,
"title": "红楼梦",
"author": "曹雪芹",
"genre": "文学"
},
{
"book_id": 2,
"title": "西游记",
"author": "吴承恩",
"genre": "神话"
},
{
"book_id": 3,
"title": "三国演义",
"author": "罗贯中",
"genre": "历史"
}
]
大模型的输入内容如果是这种结构化的会更容易理解
策略三:要求模型检查是否满足条件
如果任务的结果不一定满足假设条件,那么我们可以要求模型先检查这些假设条件,如果它们不满足,就指出这一点,并停止尝试完成完整的任务。你还可以考虑潜在的边界情况,以及模型应如何处理边界情况,以避免意外的错误或结果。比如,你可以在语句后面加上,“请认真思考这个问题并回答,如果不清楚怎么回复就说我不知道”
策略四:少样本提示(few-shot prompt)
我们最终的战术是少样本(few-shot)提示,就是在要求模型执行实际任务之前,向模型提供成功执行所需任务的示例。
模型不知道也不清楚一些提示词的时候,需要教会模型依样画葫芦。
回想一下,你的小时候是怎么学会骑自行车的,肯定不是你的爸爸把自行车放在你面前,说骑吧,然后你会学会骑自行车了。那是不是他会先说一下骑自行车的注意事项和步骤,然后亲自示范一下怎么骑自行车,后面你经过努力终于学会了。你可以把大模型想成一个智商很高但没什么经验的专家,只要你给出合适的例子,大模型的回复往往会给你带来惊喜。
2、第二原则,给模型思考的时间
模型推理有时候会是错误的,原因可能有很多种,比如当你给模型一个过于复杂的任务,模型无法在短时间内用少量文字完成,这样的推理可能不准确,你可以指示模型更长的时间思考问题,让它在任务上花费更多的计算量将是一种解决办法。
策略一:知道完成任务所需的步骤
首先,复制一段文字,在这段文字中我们描述了 Jack 和 Jill 的故事。然后,我将复制一份提示。在这个提示中,说明执行以下操作:
1、用一句话总结由三个反引号"""分隔的以下文本。
2、将摘要翻译成法语。
3、在法语摘要中列出每个名字。
4、输出一个 JSON 对象,包括以下字段:法语摘要和名字的数量
text = f"""
在一个迷人的村庄里, Jack 和 Jill 兄妹踏上了 \
从山顶取水的任务。\
他们一边攀登,一边欢快地歌唱,不幸的是 \
Jack 被石头绊倒并摔倒了 \
Jill 也跟着下了山。\
尽管受到了轻微的打击,两人还是回到了家。\
尽管发生了事故, \
他们的冒险精神丝毫未减,他们 \
满心欢喜地继续探索。
"""
prompt_1 = f"""
Perform the following actions:
1 - 总结以下由三重分隔符的文本。
2 - 将摘要翻译成法语。
3 - 列出法语摘要中的每个名字。
4 - 输出一个包含以下内容的 json 对象 \
keys: french_summary, num_names.
用换行符分隔您的答案。
Text:
```{text}```
"""
response = get_completion(prompt_1)
print("Completion for prompt 1:")
print(response)
如果我们运行这段操作,你可以看到我们已经得到了总结摘要,以及法语翻译,以及名字的列表。有趣的是,它是用法语的格式给出了这些名字。接下来还有我们所要求的 JSON。
策略二:指导模型得出结论前,先自己想办法解决问题
当我们明确指示模型在得出结论之前,先推理出自己的解决方案时,往往会得到更好的结果。这其实是我们之前讨论的相同思路,即在模型判断答案正确与否之前,给模型足够的时间去解析问题,就像人类一样。
总结一下:
- 给出清晰的指令
- FewShot思想(依样画葫芦)
- 给大模型思考时间
- 先将复杂的任务拆解成多个子任务
三、提示词的迭代开发
当你使用LLM开发应用程序编写提示词时,一开始你对自己想做什么、想完成的任务会有一个想法,然后你就可以初步尝试编写,模型会希望能有一个清晰地具体地提示,如果可以给系统思考的时间,然后你就可以运行模型,让模型推理并看看结果。
如果推理的效果不够好,那么就需要反复迭代的过程清楚为什么指令不够清晰,为什么没有足够的时间思考,然后你可以完善提示词,在此基础上进行多次循环,最终得到一个适用于你的应用程序的提示。
记住一点,没有一个完美的提示词适用于任何场景,你要有一个迭代过程,用来为你的特定应用程序挖掘出良好的提示。
四、如何学习大模型?
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
5. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【
保证100%免费
】