输入“/”快速插入内容

04-提示工程基础

2024年8月19日修改
✏️
如何撰写 LLM 的提示很重要,精心设计的提示可以比不精心设计的提示取得更好的结果。 但这些概念到底是什么,提示、提示工程以及我如何改进我发送给 LLMs 的内容? 诸如此类的问题正是本章和下一章想要解答的。
生成式人工智能能够根据用户请求创建新内容(例如文本、图像、音频、代码等)。 它使用 LLMs 来实现这一目标,例如 OpenAI 的 GPT 模型系列,这些模型通过使用自然语言和代码进行训练。
用户现在可以使用熟悉的语言(如聊天)与这些模型进行交互,而无需任何技术专业知识或培训。 这些模型是基于提示的——用户发送文本输入(提示)并获取人工智能响应(完成)。 然后,他们可以在多轮对话中迭代地“与人工智能聊天”,完善他们的提示,直到响应符合他们的预期。
“提示”现在成为生成式人工智能应用程序的主要编程界面,告诉模型要做什么并影响返回响应的质量。 “提示工程”是一个快速发展的研究领域,专注于提示的“设计和优化”,以大规模提供一致且高质量的响应。
在本章中,我们将了解什么是提示工程、为什么它很重要,以及如何针对给定的模型和应用程序目标制定更有效的提示。 我们将了解提示工程的核心概念和最佳实践,并了解交互式 Jupyter Notebooks“沙箱”环境,在 Notebooks 中我们可以看到这些概念应用于实际示例。
在本课结束时,我们将能够:
1.
解释什么是提示工程及其重要性。
2.
描述提示的组成部分及其使用方法。
3.
学习提示工程的最佳实践和技术。
4.
结合 OpenAI 将学到的技术应用于实际示例。
目前,提示工程更多的是玄学而不是科学。 提高我们直觉的最佳方法是“更多练习”并采用试错方法,将应用程序领域的专业知识与推荐的技术和特定于模型的优化相结合。
本课程附带的 Jupyter Notebook 提供了一个沙盒环境,您可以在其中尝试所学内容 - 边学边做,或者作为最后代码挑战的一部分。 要完成练习,您需要:
1.
设置 OpenAI API 密钥 - 已部署的 LLM 的服务端点。
2.
Python 运行时 - 可以让 Notebook 运行。
我们使用一个带有 Python 3 运行时的开发容器来检测这个存储库。 只需在 GitHub Codespaces 或本地 Docker 桌面上打开 Repo,即可自动激活运行时。 然后打开笔记本并选择 Python 3.x 内核以准备 Notebook。
默认 Notebook 设置为与 OpenAI API 密钥一起使用。 只需将文件夹根目录中的“.env.copy”文件复制到“.env”,并使用您的 API 密钥更新“OPENAI_API_KEY=”行 - 一切就完成了。
该 Notebook 附带入门练习 - 但我们鼓励您添加自己的 Markdown(描述)和代码(提示请求)部分来尝试更多示例或想法 - 并建立您对提示工程设计的感觉。
现在,让我们来谈谈这个主题与 Our Startup 的使命将人工智能创新带入教育有何关系 。 我们希望构建由人工智能驱动的个性化学习应用程序 - 所以让我们考虑一下我们应用程序的针对不同用户如何“设计”提示:
管理员可能会要求人工智能分析课程数据以识别覆盖范围的差距_。 人工智能可以总结结果或用代码将其可视化。
教育者可能会要求人工智能为目标受众和主题生成教学计划。 AI 可以按照指定的格式构建个性化计划。
学生可能会要求人工智能辅导他们学习困难的科目。 人工智能现在可以通过适合学生水平的课程、结合提示和示例来指导学生。
这只是冰山一角。 查看 教育中的提示工程 一个由教育专家设计的开源提示库 ! 尝试在沙箱中运行其中一些提示或使用 OpenAI Playground 看看会产生什么结果!
在本章中,我们将提示工程定义为设计和优化文本输入(提示) 的过程,以便为指定的应用程序目标和模型提供一致且高质量的响应(完成) 。 我们可以将其视为一个两步过程:
设计指定模型和目标的初始提示
通过迭代的方式提炼提示语以提高响应质量
这必然是一个反复尝试的过程,需要用户的直觉和努力才能获得最佳结果。 那么为什么它很重要呢? 要回答这个问题,我们首先需要了解三个概念:
Tokenization = 模型如何“看到”提示
Base LLMs = 基础模型如何“处理”提示
Instruction-Tuned LLM = 模型现在如何查看“任务”
LLM 将提示视为标记序列,其中不同的模型(或模型的版本)可以以不同的方式对同一提示进行标记。 由于 LLM 是根据标记(而不是原始文本)进行训练的,因此提示标记化的方式对生成的响应的质量有直接影响。
要直观地了解标记化的工作原理,请尝试使用如下所示的 OpenAI Tokenizer 等工具。 复制您的提示 - 并查看如何将其转换为标记,注意空白字符和标点符号的处理方式。 请注意,此例子显示的是较旧的 LLM (GPT-3) - 因此使用较新的模型尝试此操作可能会产生不同的结果。