原文链接: [2401.14423] Prompt Design and Engineering: Introduction and Advanced Methods (arxiv.org)
Abstract部分:
为了能够最大程度上挖掘大语言模型的潜力, 提示词工程的设计现在至关重要.
Introduction部分:
Prompt: 用户用于指导大模型输出的文本输入.
在如DALLE-3这类图像生成模型中, prompt多为描述性的文本; 而在GPT-4或Gemini这类大语言模型中, prompt通常是将简单的查询(query)转变为复杂的问题描述.
Prompt通常包含四个方面: Instruction, Question, Input Data, Example. 其中Instruction和Question是必不可少的两个元素. 最基本的prompt可以是直接提出问题或是为一项特定的任务提供说明. 高级prompt则涉及更复杂的结构如"思维链(Chain-of-Thought)", 引导模型遵循逻辑推理来输出答案.
三类基本prompt示例:
Instruction + Question: "我应该如何写我的大学论文? 关于我应该包括的不同部分, 我应该使用什么语气, 我应该避免使用什么表达方式, 请给我一些建议."
Instruction + Input Data: "参照一下信息, 为我写一篇包含4段的论文: [参考信息…]."
Question + Example: "以下是我非常喜欢的电视剧: 绝命毒师, 浴血黑帮, 熊出没. 我不喜欢Ted Lasso这个角色. 你可以再为我推荐几个我可能会喜欢的电视剧吗?"
Prompt Engineering介绍:
提示词工程在生成式AI模型中是一个迅速发展的新兴学科, 主要是通过设计最优prompt来帮助生成式模型实现特定目标.
大语言模型目前的限制:
-
瞬态(Transient State): LLMs缺乏持久的记忆, 需要额外的软件或系统来维护和管理上下文.
-
随机性(Probabilistic Nature): 在相同的prompt下, 每次都可能得到不同的答案.
-
过时性(Outdated Information): LLMs对于预训练数据的依赖导致其局限于历史知识.
-
幻觉(Content Fabrication): LLMs可能会产生似是而非的虚假信息, 即幻觉.
-
资源消耗(Resource Intensity): LLMs的庞大规模同样也意味着庞大的计算成本.
-
领域特异性(Domain Specificity): LLMs本质上是通才, 但需要特殊训练才能专精特定领域.
这些限制都强调了Prompt Engineering技术的必要性. (3和6目前可以通过RAG改善, 但RAG本质上来说也是Prompt Engineering).
高级Prompt设计时的小Tips
-
CoT思维链: 强制模型遵循一系列的推理过程来表面其Output是正确的.
如Prompt设为: “What is the sum of the squares of the individual digits of the last year that Barcelona F.C. won the Champions League?
Use the format:
Q: <repeat_question>
A: Let’s think step by step. <give_reasoning> Therefore, the answer is <final_answer>.“
-
要求模型实事求是: 例如在prompt中要求模型表明真实的文献参考出处. 但是存在弊端, 这些出处也会存在幻觉.
-
使用特殊指令: 例如GPT有一个特殊指令<|endofprompt|>, 该指令表明Instruction的结束. 该指令有助于GPT模型更好地理解输入文本结构.
例如: "我踏上了前往未知的旅程. 收拾好行囊, 检查了护照和机票, 准备好迎接新的冒险了. <|endofprompt|>突然, 我发现自己置身于一个神秘的小镇. 街道两旁是古老的建筑, 阳光透过树叶洒在石板路上, 仿佛是一幅宁静的画面. 我决定探索这个神秘的地方, 看看隐藏的秘密."
在这个示例中, <|endofprompt|>标记将输入文本分成了旅行准备和旅行体验两个部分, 帮助模型更好地理解并生成与旅行相关的连贯文本.
-
尝试使用强硬的语气(感叹词/符号等)来使得大语言模型听从指令.
-
让大语言模型自行判断: 结束生成任务后, 询问大模型是否存在不合理之处, 让其给出理由并自行修改.
-
维持大语言模型所扮演的角色: 如进行翻译任务时, 时刻提醒其是一名严谨的语言翻译助手.
-
通过展示示例来让大语言模型学习/理解Instruction: LLMs最强大的能力之一就是学习能力, 可以从prompt中学习.
-
尝试不同的提示顺序: 多数研究表明在Example前给出Instruction对于LLMs理解prompt是有帮助的.
高级Prompt:
Chain-of-Thought(CoT):
思维链将LLMs中隐含的推理步骤转化为显性的, 有指导性的序列, 从而增强了模型逻辑推理能力, 尤其是在应对复杂问题时. 思维链主要分为两类: Zero-Shot CoT和Manual CoT.
-
Zero-Shot CoT: 是指在没有任何特定任务的示例或者指导的情况下, 模型尝试自己生成推理步骤来解决问题的方法. 通常在prompt中加入一些指示性语句, 比如 "让我们一步一步思考", 来引导模型进入CoT模式.
-
Manual CoT: 在prompt中明确给出了示例问题及其对应的推理步骤与答案, 以此作为模型解决问题的指导.
Tree-of-Thought(ToT):
思维树的灵感来源于人的认知过程, 在解决问题时进行多方位的探索, 即在推导出最合理的解决方案之前先考虑出一系列的可能解决方案, 然后选取最为合理的一则方案.
思维树在复杂, 多方面问题的场景中效果良好, 显著提高了LLMs对于具有模糊性和复杂性任务的处理能力.
Tools, Connectors, and Skills(工具, 连接器, 技能):
Tools即LLMS可以利用的外部功能或服务; 连接器充当LLMs与Tools间的接口, 负责交换数据和通信; Skills则为LLMs可以执行的功能, 包括访问外部工具所具有的功能.
例如Langchain库允许LLMs使用外部搜索引擎来扩展LLMs的能力.
Rails技术:
在预定义边界内指导LLMs输出的技术, 确保LLMs输出的相关性, 安全性和事实完整性.
-
主题轨道(Topical Rails): 确保LLM聚焦于指定的主题或领域, 房主偏离主题.
-
事实核验轨道(Fact-Checking Rails): 引导大模型进行对事实核验, 减少不准确的输出.
-
越狱轨道(Jailbreaking Rails): 旨在阻止大语言模型产生规避其操作限制或道德准则的输出, 防止滥用或有害内容生成.
自动提示工程(APE)简化Prompt Design:
自动提示工程 (APE)自动执行复杂的prompt创建过程. 通过利用大语言模型自身生成, 评估和完善提示的能力来优化prompt设计流程, 确保在响应时具有更高的效率和相关性.
APE 方法通过一系列不同但相互关联的步骤展开:
-
Prompt生成: 首先, 大语言模型利用其庞大的语言数据库和上下文理解, 生成针对特定任务的各种prompt.
-
prompt评分: 随后, 这些prompt会经历严格的评估阶段, 根据关键指标(例如清晰度, 特异性及其推动预期结果的潜力)进行评分, 确保只有最有效的提示才会被采纳选择用于细化.
-
细化和迭代: 细化过程涉及根据分数调整prompt, 目的是增强它们与任务要求的一致性. 这个迭代过程促进了prompt质量的持续改进.
目前APE的部署仍存在挑战, 巨大的计算成本仍是需要考虑的问题. 但APE仍代表了Prompt Engineering发展的重大飞跃, 为其提供了可扩展且高效的方案.
RAG技术:
RAG技术不再赘述, 详细知识了解可以参考RAG论文的解读.
相关博客: RAG综述性论文: Retrieval-Augmented Generation for Large Language Models: A Survey-CSDN博客
LLM Agent:
LLM代理可以访问外部工具和服务来帮助完成任务, 并根据上下文与目标来做出明智的决策. 例如, LLM Agent可以与API进行交互以获取天气信息, 来对外部世界进行解释.
提示词工程工具与框架:
Langchain: 最初专注于链, 后来逐渐扩展功能, 如代理和网页浏览. 目前其全面的功能已经成为LLMs开发的重要工具.
LlamaIndex: 专注于LLMs的数据管理, 提供必要的工具来处理LLMs所需要的大量数据, 精简数据集成的过程.
Nemo Guardrails: 专门用于构建Rails, 确保LLMs在预定义的准则下运行, 从而增强大语言模型输出的安全性和可靠性.
Conclusion:
随着大语言模型和生成式AI模型的发展, Prompt Design and Engineering只会变得更加重要. 本文讨论了基础和前沿方法,例如检索增强生成技术RAG----下一波智能应用的重要工具. 请记住, 本文所介绍的自动提示工程 (APE) 等创新可能会在未来几年成为标准实践, 成为塑造这些令人兴奋的发展轨迹的一部分!
关于Prompt Engineering的综述看这篇博客即可, 本篇博客基于2024年2月的一篇综述性论文.
如有错误请及时指出, 会及时更正的, 欢迎大家一同交流学习!