深入了解 GPT-4 和 ChatGPT 的 API---OpenAI Playground

文章目录

    • 基本概念
    • OpenAI API 提供的可用模型
    • 在 OpenAI Playground 中使用 GPT 模型

    掌握GPT-4 和 ChatGPT 的 API 的使用方法,以便有效地将它们集成到 Python 应用程序中。首先,需要了解 OpenAI Playground。这将使你在编写代码之前更好地了解模型。接着,需要学习 OpenAI Python 库。这部分内容包括登录信息和⼀个简单的 Hello World 示例。然后,需要学习创建和发送 API 请求的过程,并了解如何处理 API 响应。这将确保你知道如何解释这些 API 返回的数据。最后,还会介绍诸如安全最佳实践和成本管理等考虑因素。随着学习的深入,我们将获得实用的知识,这对使用 GPT-4 和 ChatGPT 进行 Python 开发非常有帮助。在继续阅读之前,请查看 OpenAI 的使用规则。如果还没有账户,请在 OpenAI 主页上创建⼀个。

基本概念

    OpenAI 提供了多个专为不同任务设计的模型,每个模型都有自己的定价。接下来,我们将详细地对比这些模型并讨论如何根据需求选择模型。需要注意的是,模型的设计目的——无论是用于补全文本、聊天还是编辑——会影响你如何使用其 API。比如,GPT-4 和 ChatGPT 背后的模型基于聊天目的,并使用聊天端点。提示词不仅适用于 OpenAI API,而且是所有 LLM 的入口点。简单地说,提示词就是用户发送给模型的输入文本,用于指导模型执行特定任务。对于 GPT-4 和 ChatGPT 背后的模型,提示词具有聊天格式,输入消息和输出消息存储在列表中。除了提示词,还有标记。标记是词或词的⼀部分。据粗略估计,100 个标记大约相当于 75 个英语单词。对 OpenAI 模型的请求是根据所使用的标记数量来定价的,也就是说,调用 API 的成本取决于输入文本和输出文本的长度。

图片名称
OpenAI API 的基本概念

OpenAI API 提供的可用模型

    通过 OpenAI API,你可以使用 OpenAI 开发的多个模型。这些模型可通过API 作为服务使用(通过直接的 HTTP 调用或提供的库),这意味着 OpenAI 在远程服务器上运行模型,开发人员只需向其发送查询请求即可。每个模型都有自己的功能和定价。需要注意的是,这些模型是专有的,你不能根据自己的需求直接修改模型的代码。但是你可以通过 OpenAI API 在特定数据上微调其中的⼀些模型。⼀些较旧的 OpenAI 模型(包括 GPT-2 模型)并不是专有的。你可以直接从 Hugging Face 或 GitHub 下载 GPT-2 模型,但无法通过 API使用它。由于 OpenAI 提供的许多模型会不断更新,因此很难给出完整的列表。要了解最新的模型列表,请查看 OpenAI 的在线文档。

    InstructGPT,这个模型系列可以处理许多单轮文本补全任务。text-ada-001 模型只能处理简单的文本补全任务,但它也是 GPT-3 系列中速度最快、价格最便宜的模型。text-babbage-001 模型和 text-curie-001 模型稍微强大⼀些,但也更昂贵。text-davinci-003 模型可以出色地执行所有文本补全任务,但它也是 GPT-3 系列 中最昂贵的。截至 2023 年 11 月下旬的消息,InstructGPT 系列已经在 2024 年 1 月 4 日统⼀替换为最新的 gpt-3.5-turbo-instruct 模型。

    ChatGPT 背后的模型是 gpt-3.5-turbo。作为⼀个聊天模型,它可以将⼀系列消息作为输入,并生成相应的消息作为输出。虽然 gpt-3.5-turbo 的聊天格式旨在进行多轮对话,但它也可用于没有对话的单轮任务。在单轮任务中,gpt-3.5-turbo 的性能与 text-davinci-003 相当。由于 gpt-3.5-turbo 的价格只有 text-davinci-003 的十分之⼀ ,而且两者性能相当,因此建议默认使用它来进行单轮任务。gpt-3.5-turbo 模型的上下文窗口大小约为 4000 个标记,这意味着它可以接收约 4000 个标记作为输入。OpenAI 还提供了另⼀个模型,名为 gpt-3.5-turbo-16k。它具有与标准的 gpt-3.5-turbo 模型相同的功能,但上下⽂窗口大小是后者的 4 倍。截至 2023 年 11 月下旬,最新版本的 text-davinci-003 价格是每千个标记 0.0200 美元,gpt-3.5-turbo-0613 的价格是每千个输⼊标记 0.0030 美元 + 每千个输出标记 0.0040 美元。

    这是迄今为止 OpenAI 发布的最大的模型。由于在⼴泛的文本和图像多模态语料库上进行了训练,因此它精通许多领域。GPT-4 能够准确地遵循复杂的自然语言指令并解决难题。它可用于聊天任务和单轮任务,并具有相当高的准确性。OpenAI 提供了两个 GPT-4 模型 :gpt-4 的上下文窗口大小为 8192 个标记,gpt-4-32k 的上下文窗口大小为 32 768 个标记。32 768 个标记大约相当于 24 576 个英语单词,即⼤约 40 页的上下文。截止 2023 年 11 月下旬,OpenAI 已提供 6 个 GPT-4 模型,包括 gpt-4-1106-preview、gpt-4-vision-preview、gpt-4、gpt-4-32k、gpt-4-0613、gpt-4-32k-0613。无论是 GPT-3.5 Turbo 还是 GPT-4,都在持续更新。当提到 gpt-3.5-turbo、gpt-3.5-turbo-16k、gpt-4 和 gpt-4-32k 时,我们指的是这些模型的最新版本。截止 2023 年 11 月下旬,文中提到的模型版本已更新至 gpt-3.5-turbo-1106、gpt-3.5-turbo-0613、gpt-4-1106-preview、gpt-4-32k-0613。

    开发人员通常希望 LLM 版本具有良好的稳定性和可见性,以便在应用程序中使用它。对于开发人员来说,如果模型的版本在⼀夜之间发生变化,并且针对相同的输入给出截然不同的回答,那么这样的模型使用起来很困难。为此,OpenAI 提供了这些模型的静态快照版本。上述模型最新的静态快照版本分别是 gpt-3.5-turbo-0613、gpt-3.5-turbo-16k-0613、gpt-4-0613 和 gpt-4-32k-0613。OpenAI 建议使用 InstructGPT 系列而不是原始的 GPT-3模型。这些模型仍然在 API 中以 davinci、curie、babbage 和 ada 的名称提供。鉴于这些模型可能给出奇怪、错误和具有误导性的回答,建议在使用时要谨慎。然而,由于这些模型是仅有的几个可以针对你的数据进行微调的模型,因此它们仍然可用。截OpenAI 已宣布将于 2024 年提供 GPT-3.5 Turbo 和 GPT-4 的微调功能。截止 2023 年 11 月下旬,GPT-3.5 微调功能已完全开放,GPT-4 微调功能可通过申请权限开放。在经过 SFT 阶段后获得,该模型没有经过 RLHF 阶段,也可以通过 API 以 davinci-instruct-beta 的名称使用。

在 OpenAI Playground 中使用 GPT 模型

    OpenAI Playground 是⼀个基于 Web 的平台。你可以使用它直接测试 OpenAI 提供的语言模型,而无须编写代码。在 OpenAI Playground 上,你可以编写提示词,选择模型,并轻松查看模型生成的输出。要测试 OpenAI提供的各种 LLM 在特定任务上的表现,OpenAI Playground 是绝佳的途径。以下是访问 OpenAI Playground 的步骤。

  • 访问 OpenAI 主页,然后依次单击 Developers → Overview。
  • 如果你已经拥有⼀个账户但未登录,请单击屏幕右上方的 Log in。如果还没有 OpenAI 账户,那么你需要创建账户才能使用 Playground 和 OpenAI 的大部分功能。请注意,由于 Playground 和 API 是收费的,因此你在注册账户时需要提供支付方式。
  • 登录后,你将在网页的顶部看到加入 Playground 的链接。单击该链接,你应该会看到下图所示的内容。

    ChatGPT Plus 选项与使用 API 或 Playground 无关。如果你是 ChatGPT Plus 用户,那么仍需要支付费用才能使用 API 和 Playground。

图片名称
OpenAI Playground 补全模式下的界面

    OpenAI Playground 在 2023 年 11 月 7 日的 OpenAI 首届开发者大会后已更新版本。最新版本的界面与上图中的界面存在差异,请以最新版本为准。界面中的主要空白处用于输入消息。编写完消息后,单击 Submit 按钮以生成输出。在上图所示的示例中,我们编写消息“As Descartes said, I think therefore”(正如笛卡儿所说,我思故),然后单击 Submit 按钮。模型用“I am”(我在)补全了文本。每次单击 Submit 按钮时,OpenAI 都会收取相应的费用。就本例而言,成本约为 0.0002 美元。界面的底部和右侧有许多选项。我们从底部开始。在 Submit 按钮右侧的是撤销按钮(在图中标记为 A),用于删除最后生成的文本。在本例中,它将删除“I am”。接下来是重新生成按钮(在图中标记为 B),用于重新生成刚刚删除的文本。再往后是历史按钮(在图中标记为 C),它会给出过去30 天内的所有请求。请注意,⼀旦进⼊历史菜单,你就可以出于隐私原因轻松地删除请求。

    右侧的选项面板提供与界面和所选模型相关的各种设置。我们在此只解释其中的⼀些选项,后文会陆续介绍其他选项。右侧的第⼀个下拉列表是模式列表(在图中标记为 D)。可用的模式有聊天(默认选项)、补全和编辑。补全模式和编辑模式已被标记为遗留模式,现在已经消失。如图所示,语言模型在 Playground 的补全模式下努力补全用户的输入。下图展示了在聊天模式下使用 Playground 的示例。界面左侧是系统面板(在图中标记为 E)。在这里,你可以描述聊天系统的行为方式。比如,在下图中,我们要求它成为⼀个喜欢猫的有用助手。我们还要求它只谈论猫,并给出简短的回答。根据设置的这些参数所生成的对话显示在界面中央。如果想继续与系统对话,你可以单击 Add message(在图中标记为 F),输入消息,然后单击 Submit 按钮(在图中标记为 G)。还可以在右侧定义模型(在图中标记为 H),这⾥使用 GPT-4。请注意,并非所有模型在所有模式下都可用。比如,只有 GPT-4 和 GPT-3.5 Turbo 在聊天模式下可用。截止 2023 年 11 月下旬,OpenAI Playground 聊天模式可用的模型包括 gpt-3.5-turbo、gpt-3.5-turbo-0301、gpt-3.5-turbo-0613、gpt-3.5-turbo-1106、gpt-3.5-turbo-16k、gpt-3.5-turbo-16k-0613。

图片名称
OpenAI Playground 聊天模式下的界面

    Playground 还提供了编辑模式。在这种模式下,你提供⼀些文本(在图中标记为 I)和指令(在图中标记为 J),模型将尝试修改文本。在下图所示的例子中,我们给出了⼀段描述⼀个年轻男子要去旅行的文本。同时,我们指示模型将文本中的主人公更改为⼀位年长的女士。可
以看到,结果(在图中标记为 K)符合指令。如下图所示。

图片名称
OpenAI Playground 编辑模式下的界面

    在 Playground 界面的右侧、模式下拉列表下方的是模型下拉列表(在图中标记为 L)。正如你已经看到的,这是你选择 LLM 的地方。该下拉列表中可用的模型取决于所选的模式。在模型下拉列表下方的是参数,例如温度(在图中标记为 M),它定义模型的行为。我们不会在此详细讨论这些参数。在详细讨论不同模型的工作原理时,我们会探索这里的大部分参数。界面顶部有⼀个加载预设项的下拉列表(在图中标记为 N)和 4 个按钮。在上图中,我们使用 LLM 来补全句子,但是通过使用适当的提示词,我们也可以让模型执行特定的任务。下图显示了模型可以执行的常见任务。

图片名称
模型可以执行的常见任务

    应注意,预设项不仅定义了提示词,还定义了界面右侧的⼀些选项。如果选择“Grammatical Standard English”(语法标准的英语),那么你将在主窗口中看到下图所示的提示词。

图片名称
预设项 Grammatical Standard English 的提示词示例

    如果单击 Submit 按钮,那么你将得到以下结果:“She did not go to the market”(她没有去市场)。虽然可以从下拉列表中的提示词入手,但是你应该修改它们以使其适合你的问题。OpenAI 为不同的任务提供了完整的示例列表,详见 OpenAI 网站的 Examples 页面。在上图中的“Load a preset”下拉列表旁边的是 Save 按钮(在图中标记为O)。想象⼀下,你已经为任务定义了有价值的提示词,也选择了模型及其参数,并且希望以后在 Playground 中轻松复用它们。Save 按钮的功能是把Playground 的当前状态保存为⼀个预设状态。你可以为预设状态命名并添加描述信息。⼀旦保存,你的预设状态就将出现在“Load a preset”下拉列表中。Save 按钮右侧的是 View code 按钮(在图中标记为 P)。它提供了在 Playground 中直接运行测试代码的脚本。你可以请求Python、Node.js 或cURL 代码,以便在 Linux 终端中直接与 OpenAI 远程服务器交互。如果用Python 代码给出提示词“As Descartes said, I think therefore”,那么我们将得到以下结果:

import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
response = openai.Completion.create(
	model="text-davinci-003",
	prompt="As Descartes said, I think therefore",
	temperature=0.7,
	max_tokens=3,
	top_p=1,
	frequency_penalty=0,
	presence_penalty=0,
)

    现在你应该了解了如何在没有编码的情况下使用 Playground 来测试 OpenAI 的语言模型。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins教程-8-上下游关联自动化测试任务构建

上一小节小节我们学习了一下Jenkins自动化测试任务发送测试结果邮件的方法,本小节我们讲解一下Jenkins上下游关联自动化测试任务的构建。 下面我们以一个真实的自动化测试场景来讲解Jenkins如何管理上下游关联任务的触发和构建,比如我们有两个jenkin任务…

go语言day4 引入第三方依赖 整型和字符串转换 进制间转换 浮点数 字符串

Golang依赖下载安装失败解决方法_安装go依赖超时怎么解决-CSDN博客 go安装依赖包(go get, go module)_go 安装依赖-CSDN博客 目录 go语言项目中如何使用第三方依赖:(前两步可以忽略) 一、安装git,安装程序…

如何将重量传感器 HX711 与 Arduino 一起使用

How to use a Weight Sensor / Load Cell HX711 with an Arduino 原文 OVERVIEW We’ve all used a scale to determine the weight of something at some point in our lives. Using a Load Cell or Weight sensor you can add this capability to your Arduino projects.…

【面试题】面试官:判断图是否有环?_数据结构复试问题 有向图是否有环

type: NODE;name: string;[x: string]: any; }; [x: string]: any;}; export type Data Node | Edge; 复制代码 * 测试数据如下const data: Data[] [ { id: ‘1’, data: { type: ‘NODE’, name: ‘节点1’ } }, { id: ‘2’, data: { type: ‘NODE’, name: ‘节点2’ } },…

【kaggle数据集无法下载解决办法】

kaggle数据集无法下载的解决办法 当我们在做机器学习相关问题的时候,需要到kaggle网站上下载数据集,但是很多时候速度很慢或者连接超时等问题,此时解决办法如下: 在本地安装Kaggle API包 打开终端输入如下指令: pip i…

【NPS】哑终端设备如何实现域VLAN动态分配

在【NPS】微软NPS配置802.1x,验证域账号,动态分配VLAN(有线网络续篇)中,已经通过C3PL策略配置实现了802.1x验证没有通过时,自动分配一个Guest VLAN,以确保用户至少能够访问基本的网络服务。问题…

使用ChatGPT进行数据分析和可视化,12个专业顶级提示词指令,轻松上手使用

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。可以和我(yida985)交流学术写作或ChatGPT等AI领域相关问题,多多交流,相互成就,共同进步。 高级学术…

【Java核心技术13】Java中的构造器与析构器:深入解析与代码示例

引言 所有文章均为原创验证,您随手的 关注、点赞、收藏 是我创作最大的动力。 示例代码地址:https://gitee.com/code-in-java/csdn-blog.git 在面向对象编程语言中,构造器和析构器是类生命周期管理的关键部分。构造器负责初始化新创建的对象&…

邂逅Three.js探秘图形世界之美

可能了解过three.js等大型的3D 图形库同学都知道啊,学习3D技术都需要有图形学、线性代数、webgl等基础知识,以前读书学的线性代数足够扎实的话听这节课也会更容易理解,这是shader课程,希望能帮助你理解着色器,也面向第…

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇域控系统提权NetLogonADCSPACKDC永恒之蓝CVE漏洞

红队内网攻防渗透 1. 内网横向移动1.1 横向移动-域控提权-CVE-2020-1472 NetLogon1.2 横向移动-域控提权-CVE-2021-422871.3 横向移动-域控提权-CVE-2022-269231.4 横向移动-系统漏洞-CVE-2017-01461.5 横向移动-域控提权-CVE-2014-63241. 内网横向移动 1、横向移动-域控提权-…

Excel 宏录制与VBA编程 —— 11、工作表及工作簿操作(附:Worksheets与Sheets区别)

代码1 - Worksheets与Sheets区别 Worksheets表示普通工作表;Sheets即可表示普通工作表也可表示图标工作表。 下面模块中代码结果是一样的,大家理解时可结合上面区别说明进行了解 Sub Test()Worksheets("Sheet1").Range("A1").Value 100Sheets("Sheet…

python桌面应用

py文件 import osimport wx import wx.html2class MyFrame(wx.Frame):def __init__(self, parent):wx.Frame.__init__(self, parent, title"启动啦", size(1000, 700))# 创建一个Web视图组件self.browser wx.html2.WebView.New(self)# 加载本地HTML文件# self.brow…

Python重拾

1.Python标识符规则 字母,下划线,数字;数字不开头;大小写区分;不能用保留字(关键字) 2.保留字有哪些 import keyword print(keyword.kwlist)[False, None, True, and,as, assert, async, await…

在 The Sandbox 体验韩剧《碰撞搜查线》的刺激!

风靡全球的韩国电视剧《碰撞搜查线》现已登陆 The Sandbox 元宇宙! ASTORY 的电视剧《碰撞搜查线》以充满动作喜剧色彩的方式,讲述了一个交通犯罪调查小组打击公路上的恶棍的故事。该剧迅速成为 Disney 最受欢迎的节目之一! 在 The Sandbox体…

CSS阴影优化气泡框样式

<body> <div class"pop">气泡框</div> </body>body{display: flex;justify-content: center;align-items: center;height: 100% } .pop{display: flex;justify-content: center;align-items: center;background: #409eff;width: 150px;heigh…

python+unity实现数字人跟随运动

效果如下 设计思路 1 python通过摄像头提取人物肢体关键点信息 2 通过UDP将获取到人体信息发送给Unity 3 unity将获取的的人物信息进行解析 4 将解析的数据赋值给模型骨架 代码获取

GNSS接收机的工作原理

GNSS接收机的工作原理如下&#xff1a; 信号接收&#xff1a;GNSS接收机通过天线接收来自卫星导航系统的信号&#xff0c;这些信号包含卫星的位置、时间和健康状态等信息。 信号处理&#xff1a;接收的信号首先经过前置放大器放大&#xff0c;然后经过滤波器滤除噪声。接收机会…

iptables(6)扩展匹配条件--tcp-flags、icmp

简介 前面我们已经介绍了不少的扩展模块,例如multiport、iprange、string、time、connlimit模块,但是在tcp扩展模块中只介绍了tcp扩展模块中的”--sport”与--dport”选项,并没有介绍”--tcp-flags”选项,那么这篇文章,我们就来认识一下tcp扩展模块中的”--tcp-flags”和i…

【linux kernel】一文总结linux输入子系统

文章目录 一、导读二、重要数据数据结构&#xff08;2-1&#xff09;struct input_dev&#xff08;2-2&#xff09;input_dev_list和input_handler_list&#xff08;2-3&#xff09;struct input_handler 三、input核心的初始化四、常用API五、输入设备驱动开发总结(1)查看输入…

Linux:基础IO(三.软硬链接、动态库和静态库、动精态库的制作和加载)

上次介绍了基础IO&#xff08;二&#xff09;&#xff1a;Linux&#xff1a;基础IO&#xff08;二.缓冲区、模拟一下缓冲区、详细讲解文件系统&#xff09; 文章目录 1.软硬链接1.1硬链接1.2软链接使用场景 2.动态库和静态库1.1回顾1.2静态库的制作和使用为什么要有库制作者角度…