提示工程101|与 AI 交谈的技巧和艺术

news2024/10/10 4:27:09

随着 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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/790482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker容器日志大小限制

docker的日志随着时间推移越来越大,我们可以做出一些限制。 docker的日志驱动设置有两种方式,一种是全局配置,一种是特定容器的限制。 这里我选择特定容器限制更加的符合生产环境。全局配置下,需要重启docker。 参考官方文档&am…

在Chrome(谷歌浏览器)中安装Vue.js devtools开发者工具及解决Vue.js not detected报错

文章目录 一、Vue.js devtools开发者工具安装1.打开谷歌浏览器——点击扩展程序——选择管理扩展程序2.先下载添加一个谷歌助手到扩展程序中(根据提示进行永久激活)3.点击谷歌浏览器的应用商店4.输入Vue.js devtools——搜索——选择下载 二、解决Vue.js…

10.python设计模式【代理模式】

内容:为其他对象提供一种代理一控制对这个对象的访问 应用场景: 远程代理: 为远程的对象提供代理虚代理:根据需要创建很大的对象保护代理:控制对原始对象的访问,用于对象有不同访问权限时 UML图 举个例…

vue中Cascader 级联选择器实现-修改实现

vue 的cascader研究了好长时间&#xff0c;看了官网给的示例&#xff0c;上网查找了好多信息&#xff0c;才解决修改时回显的问题&#xff0c;现将方法总结如下&#xff1a; vue代码&#xff1a; <el-form-item label"芯片" prop"firmware"> <…

redis中使用bloomfilter的白名单功能解决缓存穿透问题

一 缓存预热 1.1 缓存预热 将需要的数据提前缓存到缓存redis中&#xff0c;可以在服务启动时候&#xff0c;或者在使用前一天完成数据的同步等操作。保证后续能够正常使用。 1.2 缓存穿透 在redis中&#xff0c;查询redis缓存数据没有内容&#xff0c;接着查询mysql数据库&…

63、故障处理之快速恢复数据

数据丢失快速恢复的重要性 目的&#xff1a;尽快修复数据&#xff0c;恢复业务 快速恢复相关技术对比 常用备份恢复技术 数据快速恢复原理 MVCC 是TiDB数据库原生的一项功能&#xff0c;默认使用无需配置&#xff0c;它使用多个历史快照的方式来维护数据在某个时间点对并…

Python案例|使用Scikit-learn进行房屋租金回归分析

回归分析是一种预测性的建模技术&#xff0c;研究的是因变量&#xff08;目标&#xff09;和自变量&#xff08;预测器&#xff09;之间的关系。回归分析是建模和分析数据的重要工具。比如预测股票价格走势、预测居民收入、预测微博互动量等等。常用的有线性回归、逻辑回归、岭…

软路由r2s简单刷固件openwrt教程

r2s软件介绍 NanoPi R2S 是 FriendlyELEC&#xff08;友善电子&#xff09;推出的一款单板计算机&#xff0c;它是 NanoPi 系列的一部分。NanoPi R2S 是一款小型高性能的嵌入式系统&#xff0c;适用于网络路由、家庭网关、嵌入式应用和网络安全等场景。 r2s软件特点 特性描述…

前端学习——Vue (Day4)

组件的三大组成部分 组件的样式冲突 scoped <template><div class"base-one">BaseOne</div> </template><script> export default {} </script><style scoped> /* 1.style中的样式 默认是作用到全局的2.加上scoped可以让样…

MySQL - 安装、连接、简单介绍

1、安装 MySQL8.0 安装MySQL 8.0的步骤&#xff0c;以 Windows 为例&#xff1a; 1.1 下载MySQL Installer&#xff1a; 需要从MySQL官方网站下载MySQL Installer。在下载页面中&#xff0c;选择适用于Windows的MySQL Installer并下载。 1.2 运行MySQL Installer&#xff1…

银河麒麟安装nginx及配置(附常见问题解析)

下载并安装nginx 去官网下载所需安装包nginx: download 解压 tar -zxvf nginx-xxx.tar.gz 进入nginx目录下&#xff0c;输入命令 ./configure 此处可能报错 原因为未下载gcc编译器 输入以下命令解决 sudo apt-get install -y build-essential git-core bison openssl libr…

《价值流动》从项目到产品: 到底是什么应该流经软件价值流?| IDCF

译者&#xff1a;无敌哥 原文地址: https://www.tasktop.com/blog/what-flows-through-a-software-value-stream/ 本文翻译仅供学习交流之用。 原文作者 Mik Kersten 出版了《Project to Product》 本系列共四篇文章&#xff0c;分别是 01 从项目到产品&#xff1a;软件需要…

web服务器(Tomcat)

一、web服务器 1. 常见web服务器 Tomcat&#xff1a;由Apache组织提供的一种Web服务器&#xff0c;提供对jsp和Servlet的支持。它是一种轻量级的javaWeb容器&#xff08;服务器&#xff09;&#xff0c;也是当前应用最广的JavaWeb服务器&#xff08;免费&#xff09;。 Jbos…

看了2023年的一线互联网公司时薪排行榜!值得思考

前言 根据最近针对国内的一线互联网企业做的调研&#xff0c;汇总了他们的平均时薪水平&#xff0c;最终出了一个排行榜&#xff01; 首先我们来看下&#xff0c;排行榜分哪几个Level&#xff0c;分别为初级、中级、高级、资深、专家/架构这五个&#xff0c;主要根据工程师的…

【044】深入探索STL:解密set与multiset容器的神秘力量

解密set与multiset容器的神秘力量 引言一、set和 multiset容器概述二、set容器常用API三、multiset的常用API四、对组 pair4.1、概念4.2、创建对组 pair 的方式 五、使用示例5.1、重定义排序规则5.2、队组pair的使用 总结 引言 &#x1f4a1; 作者简介&#xff1a;一个热爱分享…

【GeoDa实用技巧100例】016:制作(三维)散点图

文章目录 一、散点图介绍二、加载实验数据三、散点图制作四、剔除回归样本五、3D散点图一、散点图介绍 散点图是一种以点的分布反映变量之间相关情况的统计图。根据散点图中各点的分布走向和密度,可以大致判断变量之间相互关系。根据反映变量的维度可分为二维(亦称2D)和三维(…

数据结构第六天(7.20)双向链表逆置

DoubleLink rev_double(DoubleLink L,int n) {if(LNULL||L->nextNULL)return L;DoubleLink pL;LL->next;p->nextNULL;DoubleLink t;printf("%d",n);for(int i0;i<n-1;i){tL;LL->next;t->nextp;p->prevt;t->prevNULL;pt;}return p; }

【kubernetes系列】flannel之vxlan模式原理

概述 在Kubernetes中要保证容器之间网络互通&#xff0c;网络至关重要。而Kubernetes本身并没有自己实现容器网络&#xff0c;而是而是借助CNI标准&#xff0c;通过插件化的方式自由接入进来。在容器网络接入进来需要满足如下基本原则&#xff1a; Pod无论运行在任何节点都可…

【Ubuntu18.04安装FileZilla】

Ubuntu18.04安装FileZilla 1 FileZilla简介2 安装方式3 使用方式3.1 连接FTP服务器3.1.1 快速连接3.1.2 通过站点管理器 1 FileZilla简介 FileZilla是自由开源、快速、可信赖的FTP客户端以及服务器端应用&#xff0c;具有多种特色、直观的接口。 特点&#xff1a;可控性、有条…