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

推荐:将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.mzph.cn/news/1113.shtml

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

相关文章

【C语言督学营 第十八天】考研408排序大题初探(将排序思想融入题目)

文章目录 题目一分析代码实战 题目二分析代码实战 补充(快排与归并)数据结构大题注意点!!!(评分标准) 题目一 分析 (1)算法的基本设计思想 由题意知,将最小的nl2个元素放在Ai中,其余的元素放在A2中&#x…

Linux信号

文章目录 一.信号基础二.信号的产生1.使用键盘组合键发送信号(只能给当前正在运行的进程发)信号捕捉2.使用kill指令(可以向任意进程发送信号)3.使用raise()让进程自己给自己发送信号4.硬件异常产生信号a.除…

Java中List的使用方法简单介绍

Java中List的使用方法简单介绍 java中的List就是一种集合对象,将所有的对象集中到一起存储。List里面可以放任意的java对象,也可以直接放值。 使用方法很简单,类似于数组。 使用List之前必须在程序头引入java.util.* import java.util.*; pub…

分享四款导航页 个人主页html源码

一、开源免费,可以展示很多社交账号,也可以更换社交账号图标指向你的网站,上传后即可使用 https://wwwf.lanzout.com/ik7R912s031g 二、开源免费,不过部署稍微麻烦点 https://wwwf.lanzout.com/iCq2u12s02wb 三、适合做成导航页面…

golang网络编程学习-1rpc

网络编程主要的内容是: 1.TCP网络编程 2.http服务 3.rpc服务 4.websocket服务 一、rpc RPC 框架----- 远程过程调用协议RPC(Remote Procedure Call Protocol)-----允许像调用本地服务一样调用远程服务。 RPC是指远程过程调用,也就是说两台服…

MySQL结构以及数据管理(增删改查)

目录 1.数据库的简介 2.数据库分类 2.1关系型数据库 2.2 非关系型数据库 3.mysql的数据类型 3.1 常用的数据库类型 4.mysql的数据库结构 4.1 查看库信息 4.2 查看表信息 5.SQL 语句 5.1 SQL语言分类: 1.数据库的简介 数据库(database&#…

Spark高级特性

spark shuffle 中 map 和 reduce 是一个相对的概念,map是产生一批数据,reduce是接收一批数据,前一个任务是map,后一个任务是reduce。 hashShuffle:hash分组,一个task里面按hash值的不同,分到不…

微服务优雅上下线的实践方法

导语 本文介绍了微服务优雅上下线的实践方法及原理,包括适用于 Spring 应用的优雅上下线逻辑和服务预热,以及使用 Docker 实现无损下线的 Demo。同时,本文还总结了优雅上下线的价值和挑战。 作者简介 颜松柏 腾讯云微服务架构师 拥有超过…

Flask_实现token鉴权

目录 1、安装依赖 2、实现代码 3、测试 源码等资料获取方法 1、安装依赖 pip install flask pip install pycryptodome 2、实现代码 import random import string import time import base64from functools import wrapsfrom flask import Flask, jsonify, session, req…

RabbitMQ如何保证消息的可靠性6000字详解

RabbitMQ通过生产者、消费者以及MQ Broker达到了解耦的特点,实现了异步通讯等一些优点,但是在消息的传递中引入了MQ Broker必然会带来一些其他问题,比如如何保证消息在传输过程中可靠性(即不让数据丢失,发送一次消息就…

学习babylon.js --- [2] 项目工程搭建

本文讲述如何搭建babylonjs的项目工程。 一 准备 首先创建一个目录叫MyProject,然后在这个目录里再创建三个目录:dist,public和src,如下, 接着在src目录里添加一个文件叫app.ts,本文使用typescript&#…

docker数据卷权限管理--理论和验证

一、Docker容器中用户权限管理 Linux系统的权限管理是由uid和gid负责,Linux系统会检查创建进程的uid和gid,以确定它是否有足够的权限修改文件,而非是通过用户名和用户组来确认。 同样,在docker容器中主机上运行的所有容器共享同一…

【kubernetes系列】Kubernetes之配置dashboard安装使用

Kubernetes之配置dashboard 概述 Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息&#x…

【单例模式】—— 每天一点小知识

💧 单例模式 \color{#FF1493}{单例模式} 单例模式💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法》专栏的文章图文并茂🦕生动形…

LiveGBS流媒体平台GB/T28181功能-作为上级平台对接海康大华华为宇视等下级平台监控摄像机NVR硬件执法仪等GB28181设备

LiveGBS作为上级平台对接海康大华华为宇视等下级平台监控摄像机NVR硬件执法仪等GB28181设备 1、背景说明2、部署国标平台2.1、安装使用说明2.2、服务器网络环境2.3、信令服务配置 3、监控摄像头设备接入3.1、海康GB28181接入示例3.2、大华GB28181接入示例3.3、华为IPC GB28181接…

SpringBoot整合ZooKeeper完整教程

目录 ZooKeeper简单介绍 一、安装zookeeper 二、springboot整合zookeeper ZooKeeper简单介绍 zookeeper是为分布式应用程序提供的高性能协调服务。zookeeper将命名、配置管理、同步和组服务等常用服务公开在一个简单的接口中,因此用户无需从头开始编写这些服务。可…

Android GridPager实战,从RecyclerView to ViewPager

这个简单的的案例展示了如何从RecyclerView to ViewPager,以网上的公开图片为样例。 安卓开发中从RecyclerView 到 ViewPager demo运行结果demo项目工程目录结构关键代码 MainActivity关键代码GridFragment关键代码ImageFragment关键代码ImagePagerFragment关键布局…

CSS---CSS面试题

目录 1.盒模型 2.offsetHeight /clientheight/scrollHeight 3.left与offsetLeft 4.对BFC规范的理解 5.解决元素浮动导致的父元素高度塌陷的问题 6.CSS样式的先级 7.隐藏页面元素 8.display: none 与 visibility: hidden 的区别 9.页面引入样式时,使用link与import有…

C++学习——类和对象(一)

C语言和C语言最大的区别在于在C当中引入了面向对象的编程思想,想要完全了解c当中的类和对象,就要从头开始一点一点的积累并学习。 一:什么是面向对象编程 我们之前学习的C语言属于面向过程的编程方法。举一个简单的例子来说:面向过…

使用npm和nrm查看源和切换镜像

一、使用npm查看当前源、切换淘宝镜像、切换官方源 (1)npm查看当前源: npm get registry (2)npm设置淘宝镜像源: npm config set registry http://registry.npm.taobao.org (3)n…