随着 ChatGPT 的问世,人工智能(AI)新时代也正式开启。ChatGPT 是一种语言模型。它与用户进行对话交互,以便用户输入问题或提示,模型响应,然后对话可以继续来回进行,类似于在消息传递应用程序上向实际人员发送消息的方式。随着对 AI 的需求不断增长,为 AI 模型提供信息的能力也变得同样重要。这就是提示工程(Prompt Engineering)的用武之地,通过给 AI 模型提供正确的“提示”来满足业务需求。

在本文中,我们将一同探讨提示工程的概念、基本要素,以及提示工程面临的挑战与未来趋势。

提示工程的基本概念

提示工程是为 AI 语言模型设计有效输入的过程,以获得所需的输出。提示工程包括了解模型的能力和局限性,以及用户的目标和期望。提示工程对于探索和释放AI语言模型的全部潜力至关重要,让 AI 语言模型可以顺利执行文本生成、摘要、问题解答、代码生成等多种任务。当然,这些模型需要需要根据明确而具体的指令才能产生准确、相关和有用的结果。

一般来说,提示工程由两个主要目标:

提示工程的首要目标是设计基于文本的输入,可以更有效地指导 AI 模型。提示工程师为模型提供各种输入,然后评估输出结果。如果输出未达到预期的精度水平,提示工程师与开发人员则会进行合作对模型进行微调。例如,可能要求模型不得使用任何攻击性语气或避免表达任何政治观点,并且还必须防范例如提示注入(Prompt injection)之类的安全威胁。

在第二种情况下,根据企业所在的行业编写不同的文本输入,以提供优化结果,同时满足领域要求。例如,在医疗保健行业, AI 模型不泄露任何个人或机密信息至关重要。另一个例子是开发有效的提示,以充分利用模型,同时利用最少数量的 token 来最大限度地降低使用 AI 模型的成本。

提示工程 101

有效的提示工程需要深入了解大型语言模型(LLM)的功能和限制,以构建优秀的输入提示的能力。同时,提示工程通常涉及仔细选择提示中包含的单词、短语以及输入的整体结构,以实现获得准确回复的目的。即使对提示进行微小的修改也会对结果产生重大影响,因此提示工程的系统方法至关重要。

提示工程:关键术语

LLM 是一种 AI 模型,经过大量文本数据的训练,可以对自然语言输入创建类似人类的回复。LLM 以其撰写高质量、连贯的写作能力而著称,这些写作通常与人类的写作没有什么太大区别。这种尖端性能是通过在大型文本语料库(通常有数十亿个单词)上训练 LLM 来实现的,使其能够掌握人类语言的复杂性。

以下是与提示工程和 LLM 相关的几个关键术语,从 LLM 中使用的主要算法开始:

  • Word embedding(词嵌入)是 LLM 中使用的一种基本方法,因为它用于以数字方式表示单词的含义,随后可由 AI 模型进行分析。

  • Attention mechanisms(注意力机制) 是一种 LLM 算法,能够结合上下文,让 AI 在创建输出时专注于输入文本的某些元素,例如与情感相关的短语。

  • Transformer 是 LLM 研究中常见的一种神经网络设计,通过自注意力技术处理输入数据。

  • Fine-tuning(微调)是通过在较小的相关数据集上进行训练来使 LLM 适应给定工作或主题的过程。

  • Prompt engineering(提示工程)是对 LLM 输入提示的专家设计,以提供高质量、连贯的输出。

  • Interpretability(可解释性)是指理解和解释 AI 系统的输出和决策的能力,由于其复杂性,这通常是 LLM 的一个挑战和持续的研究领域。

提示要素

  • 说明:提示的主要目的是为语言模型提供清晰的说明。

  • 上下文:上下文提供额外的信息来帮助语言模型产生更相关的输出。该信息可以来自外部来源或由用户提供。

  • 输入数据:输入数据是用户的查询或请求。

  • 输出指示符:指定答案的格式。

提示工程:示例

让我们看一下来自 Awesome ChatGPT Prompts [1] 的一个简单的提示工程示例。

示例

现在你是一个 Python 解释器。我会给你 Python 代码,你来执行它,不提供任何解释。除了代码的输出之外,不要回复任何内容。第一个代码是:“print('hello world!')”

OpenAI Playground [2] 还有很多提示模板,可以查看以学习更准确的提示。

提示工程:角色

正如您在这些实例中所看到的,每个问题都包含“角色”,这是指导聊天机器人的一个重要方面,正如我们在 ChatGPT API 版本中看到的那样。必须建立许多角色:

  • System: “系统”消息控制 assistant 的行为。例如提示“你是 ChatGPT,一个由 OpenAI 训练的大型语言模型”。尽可能用简短的语言回答。信息截止日期:{knowledge_cutoff} 当前日期:{current_date} ”

  • User: 用户消息提供精确的指示。这些信息主要由应用程序最终用户使用,开发人员也可以针对某些使用场景对其进行硬编码。

  • Assistant: 助手消息保存过去的 ChatGPT 答案,也可以是由开发人员提供的所需行为示例。

以下是 ChatGPT API 请求的示例:

response = openai.ChatCompletion.create(model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}])

提示工程:参数

除了仔细构建提示的书面部分外,在使用 LLM 时还需要考虑几个提示工程参数。例如,让我们看看 OpenAI Playground 中可用于 GPT-3 Completions 的 API 参数:

  • Model 模型:用于文本完成的模型,即 text-davinci-003

  • Temperature 采样温度:较高的值会让输出更具随机性,而较低的值输出结果则更集中,更具确定性。

  • Maximum length 最大长度:要生成的最大 token 数量因型号而异,但 ChatGPT 允许在提示和完成之间共享 4000 个 token(约 3000 个单词)(1 个 token = 约 4 个字符)。

  • Stop sequence 停止序列:API 停止返回回复的最多四个序列。

  • Top P:指给定决策或预测的最可能选择的概率分布,参数设置为 0.5,表示候选 token 被考虑用于特定输出的积累概率为0.5

  • Frequency penalty 频率惩罚:用于防止模型重复相同的单词或过于频繁地解析。范围通常在-1.0到1.0之间。当设置一个正的频率惩罚值时,ChatGPT会尽量避免使用常见的单词和短语,而更倾向于生成较少见的单词。反之,如果设置一个负的频率惩罚值,ChatGPT将更倾向于使用常见的单词和短语。

  • Presence penalty 存在惩罚: 它为某些单词或短语赋值,并根据该值是正还是负,使模型或多或少地生成该单词或短语。此功能可用于微调输出,以包括或排除某些单词或短语。

  • 最佳结果 Best of:这在服务器上用于生成大量完成结果,并且仅显示最佳结果。仅当设置为 1 时,流式完成才可用。

总而言之,提示工程的每个用例都有自己的一组最佳参数来获得所需的结果,因此了解并尝试不同的参数设置以优化性能非常重要。

提示工程:用例

现在我们已经介绍了基础知识,下面是一些最典型的提示工程任务:

  • 文本摘要:可用于从文章或文档中提取要点。

  • 回答问题:这在与外部文档或数据库交互时非常有用。

  • 文本分类:有助于情感分析、实体提取等应用。

  • 角色扮演:涉及生成模拟特定用例和角色类型(导师、治疗师、分析师等)转换的文本

  • 代码生成:其中最著名的是 GitHub Copilot。

  • 推理:适合创作展示逻辑或解决问题的能力(例如决策)的写作。

提示工程的挑战与未来

尽管生成式 AI 与提示工程越来越受欢迎,但有部分人担心过度依赖提示可能会导致人工智能系统出现偏差。科技行业知名人士萨姆·奥尔特曼 (Sam Altman) 表示,提示工程只是让机器更自然地理解人类语言一目标的一个阶段,并表示五年后不会还在做提示工程。

而提示工程也存在着以下两个挑战:

上下文依赖性 - 正确捕获上下文:提示工程的一项挑战和限制在于上下文依赖性以及正确捕获上下文的需要。AI 系统能够根据给定的上下文理解和处理信息。然而,在输入中清晰准确地捕获上下文可能很困难,尤其是在复杂或模糊的查询中。

歧义 - 难以为复杂查询制定精确的指令:对于复杂或歧义的查询,在单一语言命令中捕获所有必要的信息和条件可能具有挑战性。可能有不同的解释,可能会导致不同的结果。因此,及时工程需要制定策略来减少歧义并尽可能清楚地定义具体要求。

尽管一些专家表示提示工程可能会给人工智能系统带来偏见,并质疑其长期相关性,但提示工程仍是人工智能系统理解人类语言并有效交互的基础。如果没有精心设计的提示,人工智能模型就无法识别模式或做出可靠的预测。因此,及时的工程设计对于确保人工智能系统在所有行业产生有意义的结果至关重要。此外,提示工程始终在不断改进,利用新技术和工具来创建更有效的提示。

虽然存在一些挑战,但提示工程领域的持续发展和研究为人机交互带来了光明的未来。通过掌握提示工程,我们可以充分利用对话式人工智能系统的潜力,创造有效、无缝的用户体验。

参考链接

  1. https://github.com/f/awesome-chatgpt-prompts?ref=mlq.ai

  2. https://platform.openai.com/playground/?ref=mlq.ai

  3. https://www.cloudbooklet.com/prompt-engineering-key-concepts-use-cases/#prompt-engineering-use-cases

  4. https://ai.plainenglish.io/prompt-engineering-the-future-of-ai-job-market-or-just-a-trend-fb8ac8631b0f

  5. https://onlim.com/en/prompt-engineering-the-art-of-precise-language-control/

提示工程101|与 AI 交谈的技巧和艺术的更多相关文章

  1. 《花雕学AI》17:关注提示工程—本世纪最重要的技能可能就是与AI人工智能对话

    本文目录与主要结构 引言:介绍提示工程的概念和背景,说明为什么它是本世纪最重要的技能之一. 正文: 一.提示工程的基本原理和方法:介绍什么是提示.如何设计和优化提示.如何使用提示与语言模型进行交互. ...

  2. Eclipse无提示的解决办法 和 内容辅助技巧

    Eclipse无提示的解决办法 和 内容辅助技巧 一.若发现内容辅助失效没有提示 下面是解决办法,现贴出来与大家共享:       1.菜单window->Preferences->Jav ...

  3. 超强干货,11个灰常实用的AI设计小技巧!

    11个超级实用的AI设计小技巧!涉及到很多的实用操作,纯干货经验总结,灰常值得收藏,赶快转走学起来吧! ​编辑:千锋UI设计

  4. 前端AI切图技巧

    AI的基本使用 1.选中多个不同图层. 首先在AI右边工具栏找到“图层” 然后选择需要切图的图层(按住“ctrl”点击) 最后拖到PS里面的新建的图层. 还有个问题,就是图层关联太多,无法拖动某些图层 ...

  5. 平台工程101:Dev、Sec和Ops的自动化黏合剂

    国际权威知名调研机构 Gartner 在<2023年最重要的10个技术趋势>报告中将平台工程(Platform Engineering)列为高速发展的技术趋势之一,并预测到2026年80% ...

  6. AI使用之技巧

    学习人脸关键点检测的收获: 可以将高难度关键点定位任务,其拆成多个小任务,逐步细化精度,每一层都是小网络,相比用一个复杂大网络,更能节省predict的运行时间. 数据增强Data Augmentat ...

  7. AI 音辨世界:艺术小白的我,靠这个AI模型,速识音乐流派选择音乐 ⛵

    作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/t ...

  8. 学会提示-AI时代职场必修课

    作者:京东 何雨航 " 上个时代要学会提问,这个时代要学会提示." 引言 当你在写提数代码时,小张已经完成了数据分析:当你正在整理材料时,小王却在和对象逛环球影城:述职时,你发现小 ...

  9. 免费Midjourney AI绘画Prompt提示词平台合集

    Midjourney AI绘图最关键的地方在于Prompt提示词写的好,一个好的提示词可以让AI模型创造出更优质的绘图,以下是8个免费的Midjourney Prompt提示词辅助平台. ​ 编辑切换 ...

  10. AI PRO I 第4章

    Behavior Selection Algorithms An Overview Michael Dawe, Steve Gargolinski, Luke Dicken, Troy Humphre ...

随机推荐

  1. 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。

    /** * 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标. * * 你可以假设每种输入只会对应一个答案.但是,数组中 ...

  2. C语言跳转浏览器打开指定URL

    #include <stdlib.h> int main() { // 定义要打开的URL char* url = "https://rjku.gitee.io/"; ...

  3. 刺激!ChatGPT给我虚构了一本书?

    ChatGPT很强大,可以帮我们处理很多问题,但这些问题的答案的正确性您是否有考证过呢? 昨晚,DD就收到了一个有趣的反馈: 提问:有什么关于数据权限设计的资料推荐吗? ChatGPT居然介绍了一本根 ...

  4. 解决PaddlePaddle飞桨在迁移学习使用预训练模型时更改num_classes参数出现警告

    当我们使用 PaddlePaddle 进行迁移学习的时候,直接导入模型虽然是可以的,但是总是会有个警告 如直接用官方的 resnet101 并加载预训练模型的话 model = paddle.visi ...

  5. SQLLabs靶场 less11-20

    SQLLabs靶场 less11-20 Less-11-16 请求方式 注入类型 拼接方式 POST 联合.报错.布尔盲注.延时盲注 username='x'11 请求方式 注入类型 拼接方式 POS ...

  6. Docker私有仓库harbor

    Docker私有仓库harbor 目录 Docker私有仓库harbor Harbor私有仓库介绍 Harbor部署 harbor页面不显示排错思路 Harbor的使用 Harbor拉镜像 自制镜像推 ...

  7. Syncthing 忽略模式

    忽略模式 概要 .stignore 描述 这是 Syncthing 同步文件夹的忽略模式语法指南 语法 .stignore 文件可包含一系列路径匹配模式,对指定文件的处理方式由第一个匹配到它的模式决定 ...

  8. 把ChatGPT调教成机器学习专家,以逻辑回归模型的学习为例

    大家好我是章北海mlpy 看到一个蛮有意思的项目,可以把ChatGPT调教成导师 https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor 可以根据你选择的学习 ...

  9. 2022-10-03:给定一个正数n,比如6 表示数轴上有 0,1,2,3,4,5,6 <0 或者 >6 的位置认为无法到达 给定两个数字x和y,0<= x,y <= n 表示小人一开始在x的位置,它

    2022-10-03:给定一个正数n,比如6 表示数轴上有 0,1,2,3,4,5,6 <0 或者 >6 的位置认为无法到达 给定两个数字x和y,0<= x,y <= n 表示 ...

  10. PyCharm-汉化、中文语言包、英文语言包、中英文切换

    PyCharm的汉化是非常简单的,不需要繁琐的步骤,只需要到设置的插件中搜索你需要的语言包安装即可. 登录 进入项目(随便进入一个项目,新建也可以) File->settings->Plu ...