提示,在人工智能和自然语言处理的上下文中,prompt指的是输入给语言模型的一段文本或问题,目的是引导模型生成与输入相关的回答或继续生成文本。
ChatGPT 引发大语言模型新时代之后,Prompt 即成为与大模型交互输入的代称。即我们一般将给大模型的输入称为 Prompt,将大模型返回的输出称为 Completion。
由于大模型的应用,如何写好提示(Prompt)也变成了一门学问,于是有了提示工程这样的课程。在使用大模型时,构造一个合理的Prompt决定了使用大模型的上限,所以我也在学习提示工程(Prompt Engineering),主要来源是吴恩达老师的《ChatGPT Prompt Engineering for Developers》教程,这是面向开发人员编写的课程,其中主要介绍了如何构造 Prompt 并基于 OpenAI 提供的 API 实现包括总结、推断、转换等多种常用功能,是入门 LLM 开发的第一步。
设计有效的prompt可以显著影响模型输出的质量和相关性。以下是一些提示:
在这部分的学习中,主要包含了提升大语言模型应用效果的技巧和实践。包括对于开发人员该如何进行提示词设计、文本总结、推理、转换、扩展以及构建聊天机器人等语言模型典型应用场景。在具备了这些能力之后,开发人员可以借助大模型的能力助力自己项目的开发,创造出激动人心的APP。在这里,比如我设定一个目标,就是构建一个虚拟女朋友/虚拟男朋友,来试试看大模型能给我们提供哪些能力支持。
随着 LLM 的发展,其大致可以分为两种类型,后续称为基础 LLM 和指令微调(Instruction Tuned)LLM。基础LLM是基于文本训练数据,训练出预测下一个单词能力的模型。其通常通过在互联网和其他来源的大量数据上训练,来确定紧接着出现的最可能的词。例如,如果你以“从前,我有一个女朋友”作为 Prompt ,基础 LLM 可能会继续预测“她经常会对我发脾气”。但是,如果你以“女朋友为什么经常发脾气?”为 Prompt ,则基础 LLM 可能会根据互联网上的文章,将回答预测为“女朋友为什么喜怒无常?如何安抚女朋友?”,因为互联网上的文章很可能是有关女朋友情绪的问答题目列表。
与基础语言模型不同,指令微调 LLM 通过专门的训练,可以更好地理解并遵循指令。举个例子,当询问“女朋友为什么经常发脾气?”时,这类模型很可能直接回答“去年你没有给她买包”。指令微调 LLM 的训练通常基于预训练语言模型,先在大规模文本数据上进行预训练,掌握语言的基本规律。在此基础上进行进一步的训练与微调(finetune),输入是指令,输出是对这些指令的正确回复。有时还会采用RLHF(reinforcement learning from human feedback,人类反馈强化学习)技术,根据人类对模型输出的反馈进一步增强模型遵循指令的能力。通过这种受控的训练过程。指令微调 LLM 可以生成对指令高度敏感、更安全可靠的输出,较少无关和损害性内容。因此。许多实际应用已经转向使用这类大语言模型。
如果你将 LLM 视为一名新毕业的大学生,要求他完成这个任务,你甚至可以提前指定他们应该阅读哪些文本片段来写关于如何解决女朋友情绪问题的文本,这样能够帮助这位新毕业的大学生更好地完成这项任务。本书的下一章将详细阐释提示词设计的两个关键原则:清晰明确和给予充足思考时间。