提示工程师指南4-ChatGPT Prompt Engineering

2023-11-14

ChatGPT Prompt Engineering

在这个部分,我们将介绍 ChatGPT 的最新提示工程技术,包括技巧、应用、限制、论文和额外的阅读材料。

主题:

与 ChatGPT 对话
Python 笔记本
请注意,本部分正在紧密开发中。

ChatGPT介绍

ChatGPT是OpenAI训练的一种新型模型,可以进行对话交互。该模型经过训练,可以按照提示中的指令,在对话上下文中提供适当的回应。ChatGPT 可以帮助回答问题、建议菜谱、按某种风格写歌词、生成代码等等。

ChatGPT 使用人类反馈强化学习(RLHF)进行训练。虽然这个模型比之前的 GPT 版本更具有能力(还经过训练以减少有害和不真实的输出),但它仍然存在限制。让我们通过具体的例子来了解一些能力和限制。

您可以在这里 使用ChatGPT的研究预览,但在下面的例子中,我们将使用 OpenAI Playground 上的“Chat”模式。


审查对话任务

In one of the previous guides, we covered a bit about conversation capabilities and role prompting. We covered how to instruct the LLM to have a conversation in a specific style, with a specific intent, behavior, and identity.
之前的指南中,我们介绍了一些关于对话能力和角色提示的内容。我们讲解了如何指导LLM以特定的风格、意图、行为和身份进行对话。

让我们回顾一下之前的基本示例,我们创建了一个对话系统,能够生成更技术和科学的回答。

Prompt:

以下是与AI研究助手进行的对话。助手的语气是技术和科学的。

人类:你好,你是谁?
AI:您好!我是一个AI研究助手。我今天可以帮您什么?
人类:你能告诉我关于黑洞的形成吗?
AI:

从上面的例子中,您可以看到两个重要组成部分:

意图或者解释聊天机器人是什么
身份,它指导聊天机器人用什么风格或语气来回复

上述简单示例适用于使用text-davinci-003的文本完成API。最近,OpenAI宣布了ChatGPT APIs,它是一种更强大和更便宜的模型,名为gpt-3.5-turbo,专门用于这种类型的功能(聊天完成)。OpenAI推荐它作为它们的最佳模型,即使是非聊天的用例也是如此。使用ChatGPT API的其他好处是显着的成本降低(90%)和效率。
Snap Inc.和Instacart等大公司已经在他们的产品上集成了由ChatGPT支持的对话功能,从个性化推荐到开放式购物目标不等。


使用ChatGPT进行对话

多轮对话

为了展示ChatGPT的能力,我们将使用上面的聊天机器人助手示例并讨论结果。与text-davinci-003相比,为ChatGPT提供动力的gpt-3.5-turbo模型使用聊天格式作为输入。模型期望一系列消息作为输入,然后使用这些消息生成响应。

Input:

系统: 你是一个使用技术性和科学性语气的AI研究助手。
用户: 你好,你是谁?
助手: 你好!我是一名AI研究助手。今天我能为你做些什么?
用户: 你能告诉我黑洞是如何产生的吗?

Output:

助手: 当然可以!黑洞是由于一个大质量星体耗尽燃料并在自身引力作用下崩塌形成的。这种崩塌导致星体变得极为致密,具有极强的引力场,甚至连光线都无法逃脱。这个无法回头的点称为事件视界。一旦一颗星体穿过事件视界,它就被认为是一个黑洞...

请注意,在上面的示例中,我已经简化了输入和输出,但是ChatGPT聊天补全API要求消息以特定的格式提供。我在下面添加了一个快照,展示了在OpenAI Playground中使用Chat Mode时,此示例的外观:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

对于我们的示例,更正式的API调用可能类似于以下示例:

import openai

openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "系统", "content": "你是一个使用技术性和科学性语气的AI研究助手。"},
        {"role": "用户", "content": "你好,你是谁?"},
        {"role": "助手", "content": "你好!我是一名AI研究助手。今天我能为你做些什么?"},
        {"role": "用户", "content": "你能告诉我黑洞是如何产生的吗?"}
    ]
)

未来开发人员与ChatGPT交互的方式预计将通过Chat Markup Language(简称ChatML)完成。

单轮任务

聊天格式使得多轮对话成为可能,但它也支持类似我们使用text-davinci-003进行的单轮任务。这意味着我们可以使用ChatGPT执行类似于我们对原始GPT模型进行演示的任务。例如,让我们尝试使用ChatGPT执行以下问答任务:

Input:

USER:根据下文回答问题。保持答案简短明了。如果不确定答案,请回答“不确定答案”。

背景:Teplizumab的根源可以追溯到名为Ortho Pharmaceutical的新泽西州制药公司。在那里,科学家生成了抗体的早期版本,称为OKT3。最初从小鼠中获得,这种分子能够结合到T细胞的表面并限制它们的细胞杀伤潜力。 1986年,它获得批准,用于帮助预防肾脏移植后器官排斥,成为首个允许人类使用的治疗性抗体。

问题:OKT3最初是从哪里获得的?

回答:

Output:

ASSISTANT:小鼠。

请注意,我添加了“USER”和“ASSISTANT”标签,以更好地演示如何使用ChatGPT执行任务。以下是使用Playground的示例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

更正式地说,这是API调用(我仅包括请求的消息组件):

CONTENT = """Answer the question based on the context below. Keep the answer short and concise. Respond \"Unsure about answer\" if not sure about the answer.

Context: Teplizumab traces its roots to a New Jersey drug company called Ortho Pharmaceutical. There, scientists generated an early version of the antibody, dubbed OKT3. Originally sourced from mice, the molecule was able to bind to the surface of T cells and limit their cell-killing potential. In 1986, it was approved to help prevent organ rejection after kidney transplants, making it the first therapeutic antibody allowed for human use.

Question: What was OKT3 originally sourced from?

Answer:
"""

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": CONTENT},
    ],
    temperature=0,
)

Instructing Chat Models

根据官方OpenAI文档,gpt-3.5-turbo模型的快照也将提供。例如,我们可以访问3月1日的快照gpt-3.5-turbo-0301。这使得开发人员可以选择特定的模型版本。这也意味着指导模型的最佳实践可能会从一个版本变化到另一个版本。

目前针对gpt-3.5-turbo-0301的推荐做法是,在user消息中添加指令,而不是在可用的system消息中添加指令。


Python笔记本

描述 Python笔记本
学习如何使用openai库调用ChatGPT API ChatGPT API介绍
学习如何使用LangChain库使用ChatGPT特性。 ChatGPT API with LangChain

参考资料(英文)

指南

以下是我们的一系列Prompt工程指南。指南仍在不断完善中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提示工程师指南4-ChatGPT Prompt Engineering 的相关文章

随机推荐

  • tomcat配置参数

    1 内存参数调优 说明 tomcat初始堆内存8G 最大堆内存16G 新生代内存为最大堆内存的3 8 这里是6G 持久化内存默认82M 项目中使用月100M 必须重设 可以考虑256M或者更多 这个设置的2G 最大设置的是4G 存活比率默认
  • element 时间选择器时间跨度设置 7天

  • 国内工业数字化进程的推进,难点在哪里?

    推进工业数字化进程 通常称为工业 4 0 或工业物联网 IIoT 可能是一项复杂且具有挑战性的工作 在此过程中 经常会遇到一些困难和障碍 包括 1 遗留系统 许多工业设施仍然依赖于未考虑数字化设计的遗留设备和系统 将这些旧系统与现代数字技术
  • Java bean 详解

    JavaBean 介绍 功能特点 分类 组成 属性 方法 事件 event 范围 scope 页面page 请求request 对话session 应用application 任务 设计目标 1 紧凑而方便的创建和使用 2 完全的可移植性
  • Selenium分布式自动化测试平台 Standalone Server 4.0 搭建

    最新的selenium测试平台大概有这么几个组件 Selenium Standalone Server 用来搭建远程测试平台以及分布式测试 Selenium WebDriver 最基础的用来创建测试脚本以及用来和上面的server进行交互的
  • CSP 202305-3 解压缩

    这道T3主要是能够读懂题目 然后根据题意进行模拟 需要比较多的位运算 在此题 我选择用uint8 t存储一个字节 然后对字符和数字进行了转换 include
  • Java多线程-锁的概念

    1 结婚戒指的意义 根据文献记载 最早使用戒指人就是希腊的悲剧英雄 被缚的普罗米修斯 宙斯为惩罚普罗米修斯盗火给人类 将他绑缚在考卡苏斯山上 每天都有一只老鹰飞到山上 将他的内脏啄出 到了夜晚 他所失去的器官又会重新长出来 后来 大力士海格
  • Kubernetes 中部署 NFS Provisioner 为 NFS 提供动态分配卷

    Kubernetes 中部署 NFS Provisioner 为 NFS 提供动态分配卷 文章目录 Kubernetes 中部署 NFS Provisioner 为 NFS 提供动态分配卷 一 NFS Provisioner 简介 二 创建
  • bert-as-service配置

    环境配置 conda create n bert service python 3 8 conda activate bert service pip install user nvidia pyindex pip install user
  • 11.Java数据库连接

    Java数据库连接 概念 在软件开发中 经常需要与数据库进行交互来存储和检索数据 Java提供了一种称为JDBC Java Database Connectivity 的API 用于连接和操作各种类型的关系型数据库 数据库连接是指通过Jav
  • 卷积与傅立叶变换

    一 卷积 1 一维的卷积 连续 在泛函分析中 卷积是通过两个函数 f x f x f x 和 g x g x g x 生成第三个函数的一种算子 它代表的意义是 两个函数中的一个 我取 g x
  • 私人网站域名服务器公安备案指南【网站备案】

    今天收到了工信部的审核通过短信 你的服务器要想使用域名解析 其中一个要求就是服务器要有备案 很开心 但 事情没那么简单 要求你30天内进行公安备案 我打开谷歌网址 开始了我的坎坷备案之旅 一天下午 加一天晚上 第二天下午
  • vue —— 路由 replace

    作用 控制路由跳转时操作浏览器历史记录的模式 2 浏览器的历史记录有两种方式 分别为 push 和 replace push是追加历史记录 replace是替换当前记录 路由跳转的时候默认 push 3 开启replace模式
  • CPU使用率和负载Load计算方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Loadavg分析 Loadavg浅述 cat proc loadavg 可以看到当前系统的load cat proc loadavg 0 01 0 02 0 05 2 3
  • 判断两条线段是否相交(C++)

    背景 在做51nod上的第1951题时 需要根据给出的两条线段来判断这两条线段是否相交 所以在这里记录一下 判断两条线段是否相交有两步 快速排斥计算 跨立计算 快速排斥 给出线条AB CD 如果以AB CD为对角线的矩形不相交 那么AB C
  • mysql5.5安装最后卡主_在MySQL5.5版本时安装到最后一步卡死的解决办法

    今天给老师安装mysql 5 5 版本时出了问题 老师的电脑为windows7 mysql安装版本为mysql 5 5 安装到最后一步 mysql实例配置最后一步卡死了 安装了多次也没有方法 百度了许多方法 比如删除注册表 删除某些主要文件
  • 量化交易项目怎么做

    同学们前面两期量化交易内容 Python量化交易入门 量化交易的历史 文章目录 学习目标 1 量化交易研究流程 1 1 分析结果 1 2 什么是策略 1 3 流程包含的内容 二 量化开发和研究岗位的要求 学习目标 1 说明量化交易的研究流程
  • SourceTree 解決冲突 Please commit your changes or stash them before you merge.

    目录 本机环境 通过 Sourcetree 拉取代码时提示冲突信息 一 本机环境 本机系统 Mac git 2 24 1 git version 查看 二 通过 Sourcetree 拉取代码时提示冲突信息 原因 同分支下 其他伙伴修改的
  • @SpringBootApplication失效问题

    SpringBootApplication的默认扫描范围 在练习springsecurity中 突然发现spring的自动配置失效 需要手动的在主应用程序类添加 ComponentScan才可以扫描到 然后排查发现idea自动在根路径创建一
  • 提示工程师指南4-ChatGPT Prompt Engineering

    ChatGPT Prompt Engineering 在这个部分 我们将介绍 ChatGPT 的最新提示工程技术 包括技巧 应用 限制 论文和额外的阅读材料 主题 与 ChatGPT 对话 Python 笔记本 请注意 本部分正在紧密开发中