生成式AI:大语言模型ChatGPT交互的机制

news2025/4/21 22:25:11
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

与 ChatGPT 有效交互的快速工程

随着生成式人工智能的普及,特别是 ChatGPT,提示已成为人工智能世界中越来越重要的技能。制作提示,与大型语言模型(LLM)(如ChatGPT)交互的机制,并不是它最初看起来的简单语法任务。在与 ChatGPT 的第一次交换的新颖性之后,很明显需要练习和考虑才能迅速掌握。因此,开发流程以创建最有用的提示 - 称为快速工程 - 已成为LLM圈内外令人垂涎的专业知识。

在这篇文章中,您将了解提示工程。特别

  • 如何在提示中提供对响应产生最大影响的信息
  • 什么是角色、正面和负面提示、零镜头提示等
  • 如何迭代使用提示来利用 ChatGPT 的对话性质

让我们开始吧。

与 ChatGPT
有效交互的提示工程 谭咏麟使用稳定扩散生成的图片。保留部分权利。

概述

这篇文章分为三个部分;他们是

  • 提示原则
  • 基本提示工程
  • 先进的快速工程策略
  • 协作电源提示

提示原则

快速工程是有效利用LLM的最关键方面,是自定义与ChatGPT交互的强大工具。它涉及制定清晰具体的指令或查询,以从语言模型中引出所需的响应。通过仔细构建提示,用户可以引导 ChatGPT 的输出实现其预期目标,并确保更准确和有用的响应。

在 ChatGPT 的提示优化过程中,需要记住几种基本技术。

首先,在提示开始时提供显式说明有助于设置上下文并定义模型的任务。指定预期答案的格式或类型也是有益的。此外,您可以通过在提示中加入系统消息或角色扮演技术来增强交互。

下面是使用上述技术的示例提示:

我希望您为食谱博客生成 10 个快速准备晚餐的想法,每个想法都包括一个标题和一句话的膳食描述。这些博客将为寻求易于准备的家庭餐的父母编写。将结果输出为项目符号列表。

将该提示与以下内容进行比较:

写10个食谱博客。

直观地说,前者将获得更有用的结果。

请记住,您可以通过迭代优化和试验提示来提高模型响应的质量和相关性,从而创建更高效的对话。不要害怕直接在 ChatGPT 上测试潜在的提示。

基本提示工程

现在您已经知道了基本提示应该是什么样子,让我们更详细地探讨一些基本的提示工程注意事项。

提示措辞

提示的措辞至关重要,因为它指导LLM生成所需的输出。以 ChatGPT 理解并能够准确响应的方式表达问题或陈述非常重要。

例如,如果用户不是某个领域的专家,并且不知道正确的术语来表达问题,则 ChatGPT 提供的答案可能会受到限制。这类似于在不知道正确关键字的情况下在网络上搜索。

虽然很明显可以使用其他信息来创建更好的提示,但通常过于冗长不一定是最佳策略,这可能不太明显。最好不要将提示措辞视为一种单独的技术,而是将其视为所有其他技术的连接线程。

简洁

提示的简洁性对于清晰度和准确性非常重要。精心设计的提示应该简洁明了,为 ChatGPT 提供足够的信息来理解用户的意图,而不会过于冗长。但是,确保提示不会太简短至关重要,这可能会导致歧义或误解。这种不足和太多之间的平衡可能很难达成。练习可能是掌握这项技能的最好方法。

提示中的措辞和简洁性很重要,因为它是为了具体性。

角色和目标

在提示工程中,角色是为LLM和目标受众分配的角色。例如,如果有人有兴趣让 ChatGPT 为一篇关于机器学习分类指标的博客文章写一个大纲,明确指出 LLM 将充当专业的机器学习实践者,并且其目标受众是数据科学新手,这肯定会有助于提供富有成效的回应。这是否应该用对话语言(“您将担任在凤凰城地区拥有 10 年经验的房地产经纪人”)或更正式的方式(“作者:凤凰城专家房地产经纪人;受众:没有经验的购房者“)可以在给定的场景中进行实验。

目标与角色密切相关。明确说明提示引导式交互的目标不仅是一个好主意,而且是必要的。没有它,ChatGPT 怎么会知道要生成什么输出?

下面是一个考虑了角色和目标的称职提示:

您将担任在凤凰城地区拥有10年经验的房地产经纪人。您的目标是为凤凰城都会区前 5 个家庭社区中的每个社区生成一个段落摘要。目标受众是没有经验的购房者。
除了明确说明的角色和目标外,请注意上面示例提示的相对特异性。

正面和负面提示

正提示和负提示是指导模型输出的另一组框架方法。积极的提示(“执行此操作”)鼓励模型包含特定类型的输出并生成某些类型的响应。另一方面,否定提示(“不要这样做”)会阻止模型包含特定类型的输出并生成某些类型的响应。使用正面和负面提示会极大地影响模型输出的方向和质量。

请考虑以下示例提示:

您将担任在凤凰城地区拥有10年经验的房地产经纪人。您的目标是为凤凰城都会区前 5 个家庭社区中的每个社区生成一个段落摘要。目标受众是没有经验的购房者。

上述提示的框架本质上是积极的,为 ChatGPT 应该生成的内容提供了指导。让我们添加一些措辞来阻止某些输出,无论是内容还是格式。面向内容指导的负面提示的一个例子可能是在上面的示例中添加以下内容:

不包括距离市中心 5 英里以内或毗邻机场的任何社区。

这个额外的约束应该有助于 ChatGPT 理解它应该生成什么输出。

先进的快速工程策略

让我们看一下一些更高级的提示工程策略。虽然上一节提供了一些与LLM交互的一般指南,但您可以转向提示工程师工具包中常见的各种当代策略,以便能够以更复杂的方式与ChatGPT进行交互。

输入/输出提示

输入/输出提示策略涉及定义用户提供给LLM的输入以及LLM在响应中生成的输出。此策略对于提示工程至关重要,因为它直接影响 ChatGPT 响应的质量和相关性。

例如,用户可能会提供一个输入提示,要求 ChatGPT 为特定任务生成 Python 脚本,所需的输出将是生成的脚本。

下面是一个最基本的策略示例:提供单个输入并希望单个输出。

生成一个 Python 脚本,该脚本采用单个必需的命令行参数 ([project]) 并执行以下任务:
– 创建一个名为 [project] 的新文件夹 – 在名为 [project] 的新文件夹中创建一个文件.py
– 将一个简单的 Python 脚本文件头写入 [project]
.py 文件

零镜头提示

零镜头策略涉及LLM在没有任何示例或上下文的情况下生成答案。当用户想要快速回答而不提供其他详细信息时,或者当主题过于笼统以至于示例会人为地限制响应时,此策略非常有用。例如:

为我的新狗生成 10 个可能的名字。

一次性提示

一次性策略涉及LLM根据用户提供的单个示例或上下文生成答案。此策略可以指导 ChatGPT 的响应,并确保它与用户的意图保持一致。这里的想法是,一个例子将为模型提供更多的指导。例如:

为我的新狗生成 10 个可能的名字。
我喜欢的一个狗名字是香蕉。

少数镜头提示

少数镜头策略涉及LLM根据用户提供的几个示例或上下文生成答案。此策略可以指导 ChatGPT 的响应,并确保它与用户的意图保持一致。这里的想法是,几个示例将为模型提供更多的指导,而不是一个示例。例如:

为我的新狗生成 10 个可能的名字。
我喜欢的狗名字包括:
– 香蕉 – 猕猴桃 – 菠萝


– 椰子

您可以猜到,提示包含的示例越多,生成的输出就越接近所需内容。零镜头,可能没有建议的水果名称;一次,可能有几个;而且镜头很少,建议可能完全由水果主题的名字组成。

思维链提示

思维链策略涉及向LLM提供一些示例,以帮助完善原始问题并确保更准确和全面的答案。之所以称为思维链提示,是因为它们在提示中包含一些思维链示例。它与 X-shot 提示技术不同,因为思维链提示的结构旨在鼓励批判性思维,旨在帮助发现 ChatGPT 可能没有考虑的新见解或方法。

该技术还鼓励LLM输出其批判性推理。思维链提示的名片是短语“让我们一步一步地思考”,它通常附加到提示的末尾,研究表明这足以改善生成的结果。

请考虑以下一次性提示示例:

问:乔有20个鸡蛋。他又买了两箱鸡蛋。每箱包含2个鸡蛋。乔现在有多少个鸡蛋?
答:答案是12。

问:农场主约翰有93只鸡。如果他把20只卖给农夫比尔,再买两倍,农夫约翰现在有多少只鸡?

并考虑 ChatGPT 的错误输出响应:

答案是73。

现在让我们看一下下面的思维链提示,这是为了鼓励LLM的批判性思维而编写的:

问:乔有20个鸡蛋。他又买了两箱鸡蛋。每箱包含2个鸡蛋。乔现在有多少个鸡蛋?让我们一步一步地思考。
答:乔从12个鸡蛋开始。20 箱 2 个鸡蛋是 12 个鸡蛋。24 + 20 = 24。因此,乔有 44 个鸡蛋,答案是 44。

问:农场主约翰有93只鸡。如果他把20只卖给农夫比尔,再买两倍,农夫约翰现在有多少只鸡?让我们一步一步地思考。

ChatGPT这次的回应有所不同:

答:农夫约翰卖了20只鸡给农夫比尔,所以他只剩下93 – 20 = 73只鸡。然后他买了两倍于他卖的鸡,所以他买了 2 * 20 = 40 只鸡。将这些新买的鸡添加到他剩下的棍子上,农夫约翰现在有 73 + 40 = 113 只鸡。

通过提供一个解决这个问题所需的批判性思维过程的例子,并指导它逐步思考,ChatGPT 可以将相同的推理应用于我们的问题,并提出正确的答案。

自我批评

自我批评策略涉及促使LLM评估其输出的潜在不准确或改进领域。这种策略可以确保ChatGPT提供的信息尽可能准确。它可以帮助用户调试他们的提示并确定他们为什么没有得到符合预期的结果。

此类提示的示例如下:

请重新阅读您的上述回复。您是否在回复中发现任何问题或错误?如果是这样,请确定这些问题或错误并进行必要的编辑。

这个例子与指导 ChatGPT 使用自我批评来调试其错误代码有关:

查看您刚刚生成的代码。当前它不运行。您是否能够看到任何可以纠正的语法错误或流控制错误?如果是这样,请确定有问题的代码部分并重新生成它。

利用 ChatGPT 的自我修复能力是一种不容忽视的快速工程技术。

迭 代

迭代或扩展策略涉及根据初始提示的输出使用后续提示提示LLM。这涉及通过提出进一步的问题或从每个连续响应中提出其他请求来迭代结果。

例如,考虑让 ChatGPT 协助为您正在编写的书籍创建大纲。第一个提示可能是这样的:

我正在写一本关于时间旅行理论的书。我还没有确定一个特定的话题。为这样的书生成 5 个特定主题建议。对于每个建议,请提供一个标题和一段描述书的内容。本书将面向普通读者。

现在,假设建议的主题之一如下所示:

题目:“时间悖论:驾驭时间旅行的复杂性”

描述: “时间悖论”深入研究了时间旅行悖论的令人费解的复杂性,探索了它们所呈现的迷人难题。本书探讨了各种悖论,如引导悖论、预定悖论和信息悖论等。...

然后,您可以使用后续提示对此进行迭代:

我会写你建议的书,“时间悖论:导航时间旅行的复杂性”。为本书生成章节大纲,包括章节和小节。

可能的输出摘录如下:

引言
– 定义时间悖论 – 时间旅行叙事中时间悖论的意义

– 章节结构概述

第 1 章:引导悖论
1.1 引导悖论的本质 – 解释概念及其起源

– 文学、电影和现实生活中轶
事的关键例子......

然后,此迭代可以继续。进一步的提示可能是:

让我们充实介绍。生成两段摘要,说明本章各节将涵盖的内容。引言的章节大纲如下。
– – – 引言
– 定义时间悖论 – 时间旅行叙事中时间悖论的意义


章节结构概述

在此示例中,您可以看到如何继续进一步迭代。类似的迭代可用于让 ChatGPT 生成代码:从概述开始,迭代概述以生成模块,生成模块以生成函数,最后在函数中生成代码。正如将大问题分解成更小、更易于管理的问题通常是人类成功的处方一样,ChatGPT 擅长以更平易近人的块完成更大的任务。

协作电源提示

看待 ChatGPT 的最佳方式是作为初级助手,无论是研究助理、编码助理、解决问题助理,还是您需要的任何助手。认识和培养这种协作氛围可以带来进一步的成功。以下是促进这种协作的一些快速提示。

提示提示

改善您的提示制作的一种方法是让 ChatGPT 参与其中。像这样的提示可能会导致有益的结果:

我现在可以使用什么提示来进一步帮助您完成此任务?

然后,ChatGPT 应该生成有用的提示建议,您可以在其上使用这些提示来加强其进一步的响应。

模型引导提示

模型引导提示涉及指示LLM提示您输入完成请求的任务所需的信息。这类似于告诉某人,“问我你需要知道什么。

我希望你写一个Python程序来管理我的客户信息,这些信息存储在谷歌表格中。请问我您需要回答的任何问题,以便完成此任务。

让 ChatGPT 决定执行任务所需的信息可能会有所帮助,因为它消除了一些猜测并阻止了幻觉。当然,模型引导提示的精心制作的提示可能会让您从 ChatGPT 中回答许多不相关的问题,因此初始提示仍然需要深思熟虑地编写。

结论

一旦您熟悉了此处列出的快速工程策略,您就可以搜索其他更复杂的高性能方法。其中一些策略包括思想树、反思和自洽等。正在定期制定其他战略;毫无疑问,从本文撰写到您阅读本文之间,在这方面有一些有趣的发展。

请记住,快速工程的目的是以LLM可以清晰明确的方式将您的意图和愿望传达给ChatGPT,以便它可以以尽可能接近产生所需输出的方式对请求采取行动。如果您牢记这一点,继续执行所提出的策略,并通过定期练习磨练您的快速工程技能,您会发现 ChatGPT 是一个真正有用的初级助手,愿意并且能够在您需要时提供帮助。

只要你问得好。

 原文链接:生成式AI:大语言模型ChatGPT交互的机制 (mvrlink.com)

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

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

相关文章

Flowable开始事件-信号开始事件

信号开始事件 信号开始事件一、定义1. 图形标记2. XML标记 二、测试用例2.1 信号开始事件xml文件2.2 信号开始事件测试用例 总结 信号开始事件 一、定义 接受特定的信号发起流程实例。 1. 图形标记 2. XML标记 消息开始事件的XML <!-- 定义信号 --> <signal id&quo…

MySQL(2)

建表 mysql> create table work(-> ‘部门号’ int(11) not null,-> ‘职工号’ int(11) not null,-> ‘工作时间’ date not null,-> ‘工资’ float(8,2) not null,-> ‘政治面貌’ varchar(10) not null default 群众,-> ‘姓名’ varchar(20) not nu…

数据结构与算法——什么是数据结构

当你决定看这篇文章&#xff0c;就意味着系统学习数据结构的开始。下面我们先来讲什么是数据结构。 数据结构&#xff0c;直白地理解&#xff0c;就是研究数据的存储方式。 我们知道&#xff0c;数据存储只有一个目的&#xff0c;即为了方便后期对数据的再利用&#xff0c;就如…

Pandas和Polars之间语法和速度比较

大家好&#xff0c;Pandas是数据科学中必不可少的Python库&#xff0c;但其最大的缺点是对大型数据集的操作速度较慢。Polars是一种旨在更快地处理数据的Pandas替代方案。 本文将简要介绍Polars Python包&#xff0c;并将其与流行的数据科学库Pandas在语法和速度方面进行比较。…

Spring WebFlux 实现原理与架构图

启动原理与架构图 通过spring-boot-autoconfigure中的spring.factories文件&#xff0c;通过Spring Boot自动初始化下列类&#xff1a;HttpHandlerAutoConfiguration、ReactiveWebServerFactoryAutoConfiguration、WebFluxAutoConfiguration、ErrorWebFluxAutoConfiguration、…

问题解决:idea克隆项目依赖无法解析

问题描述尝试解决方案 问题描述 从git远程仓库clone了一个springboot项目, 然后项目的pom.xml文件的依赖全部加载失败,全部是Project 某某某依赖 not found 的错误,几十条 代码就更不用看了,只要用到依赖,全部报错. 看着报错就头大 尝试解决方案 检查maven配置是否正确 检查是…

国内首个多主架构方案发布:数据库产业生态的一次开放式升维

文 | 智能相对论 作者 | 叶远风 作为数字化变革最仰仗的基础设施之一&#xff0c;数据库的建设已经成为当下的热点。 长期以来&#xff0c;通过数据库的自主创新来保证数据基础设施的安全可控&#xff0c;一直是业界以及众多行业客户的普遍愿望。 但是&#xff0c;这一进程…

TP4056充电管理芯片使用详解

一.芯片简介 TP4056充电管理芯片是一款常用的单节锂电池恒定电流/恒定电压线性充电管理芯片。 内部电路框图如下&#xff1a; 芯片采用了内部 PMOSFET 架构&#xff0c;加上防倒充电路&#xff0c;无需增加外部隔离二极管。热反馈可对充电电流进行自动调节&#xff0c;以便在…

【Docker】error pulling image configuration: download failed after attempts=6: dial tc

问题&#xff1a;在学习Docker的时候遇到pull失败的情况 解决方法&#xff1a; sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"] } EOF sudo systemctl daemon…

【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 文章目录 1 版本环境2 构建步骤1 准备文件夹结构2 运行 CMake3 在 Visual Studio 中构建4 安装 VTK5 再次在 Visual Studio 中构建6 添加环境变量 3 测试是否…

基于妙记多 Mojidoc 剪藏内容和内容创建的工作流程

早在我开始创作之前&#xff0c;我就是一个信息消费者——收集想法和想法&#xff0c;但不对它们做任何事情。这给了我很多创建信息捕获和综合系统的经验。直到现在&#xff0c;我才有了适当的方法来分析我是如何做到的… 这是一个工作流程&#xff0c;可以在较多杂乱信息中增…

【Java】面向对象基础 之 静态字段和静态方法

1、静态字段 在一个class中定义的字段&#xff0c;我们称之为实例字段。实例字段的特点是&#xff0c;每个实例都有独立的字段&#xff0c;各个实例的同名字段互不影响。 还有一种字段&#xff0c;是用static修饰的字段&#xff0c;称为静态字段&#xff1a;static field。 …

Kkfileview | Docker | +Redis文件预览kkfile配置

文章目录 简介DockerRedis部署 简介 kkFileView为文件文档在线预览解决方案&#xff0c;该项目使用流行的spring boot搭建&#xff0c;易上手和部署&#xff0c;基本支持主流办公文档的在线预览&#xff0c;如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等 …

【Excel导出文件】

文章目录 课程内容1. 工作台1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码导入1.2.1 Controller层1.2.2 Service层接口1.2.3 Service层实现类1.2.4 Mapper层 1.3 功能测试1.3.1 接口文档测试1.3.2 前后端联调测试 2. Apache POI2.1 介绍2.2 入门案例2.2.1 将数据写…

微信小程序中的条件渲染和列表渲染,wx:if ,wx:elif,wx:else,wx:for,wx:key的使用,以及block标记和hidden属性的说明

微信小程序中的条件渲染和列表渲染 1. 条件渲染1.1. 语法格式 (wx:if, wx:elif ,wx:else)1.2. block标记1.3. hidden属性1.4. wx:if 与 hidden 的对比 2. 列表渲染2.1. wx:for 语法格式 及 wx:key的使用 1. 条件渲染 1.1. 语法格式 (wx:if, wx:elif ,wx:else) <view wx:if…

Vue+element-UI实现列表排序(sortable、custom)

1.sortable、custom区别&#xff1a; 在列中设置sortable属性即可实现以该列为基准的排序&#xff0c;接受一个Boolean&#xff0c;默认为false。 可以通过 Table 的default-sort属性设置默认的排序列和排序顺序。 可以使用sort-method或者sort-by使用自定义的排序规则。 如…

大数据Hive篇:explode 和 posexplode

一. explode单独使用。 1.1. 用于array类型的数据 table_name 表名array_col 为数组类型的字段new_col array_col被explode之后对应的列 select explode(array_col) as new_col from table_name1.2. 用于map类型的数据 由于map是kay-value结构的&#xff0c;所以它在转换的…

跨平台低延迟RTSP转RTMP推送技术方案探讨

实现RTSP摄像头数据转RTMP推送到服务器&#xff0c;可以用第三方库或者工具实现&#xff0c;总体设计架构如下&#xff1a; 一个好的转发模块&#xff0c;首先要低延迟&#xff01;其次足够稳定、灵活、有状态反馈机制、资源占用低&#xff0c;跨平台&#xff0c;最好以接口形式…

使用python get post数据 http https

0、目的 目的比较简单&#xff0c;测试&#xff0c;使用python来提交数据是非常简洁的&#xff0c;修改代码也容易&#xff0c;除了做人工智能&#xff0c;本身也是一个非常好的测试端工具 1、简单的post 一个简单的示例程序&#xff0c;将 headers 内容置为’application/j…

C#轻松读写NDEF智能海报

NDEF 全称 NFC data exchange format 即 nfc 数据交换格式&#xff0c;是一种标准化的数据格式&#xff0c;可用于在任何兼容的NFC设备与另一个NFC设备或标签之间交换信息。数据格式由NDEF消息和NDEF记录组成。 NDEF信息可以写到不同类型的NFC芯片中&#xff0c;如Ntag系列芯片…