30 秒看懂
在这段 2023 年 3 月的教程中,Matthew Berman 介绍新发布的 ChatGPT 和 Whisper API,浏览文档和 Playground,并构建一个本地动物命名工具。视频标题写着“4.0 Turbo”,但当时发布的是 GPT-3.5 Turbo;代码演示使用的是更早的 DaVinci 补全模型。录制以来,模型可用性、API、价格和政策都发生了变化。
- 1实际使用的模型2023 年发布的是 GPT-3.5 Turbo,而非 GPT-4 Turbo;当时公布的价格为每 1000 个 token 0.002 美元。
- 2输入和输出都计算 token输入和生成的输出都会消耗 token;限制和价格因模型及版本而异。
- 3温度参数改变采样较低温度通常让输出更容易预测,较高温度则允许更多变化。
- 4示例使用 DaVinci本地 Flask 演示调用的是旧版补全模型,而非新推出的 Turbo 聊天端点。
要点建议
- 2023 年 3 月发布的 ChatGPT API 引入了 GPT-3.5 Turbo,当时的价格为每 1000 个 token 0.002 美元。
- token 预算包括输入和输出,限制取决于模型及其版本。
- 温度参数影响采样的多样性,不能保证准确性或结果可重复。
- Python Flask 示例使用 DaVinci 补全模型,而非 Turbo 聊天端点。
- 阅读这篇历史教程时,应对照当前模型可用性、文档和政策。
按章节阅读整理后的全文
2023 年的 API 发布
Berman 介绍 GPT-3.5 Turbo 和 Whisper,并解释当时的价格。他还回顾了早期应用示例。
OpenAI 刚刚开放 ChatGPT 和 Whisper API,我很期待开发者在此基础上构建应用。这段 2023 年 3 月的视频讨论的是 GPT-3.5 Turbo,尽管视频后来使用了“4.0 Turbo”的标题。OpenAI 宣布新模型的价格为每 1000 个 token 0.002 美元,相较其已有的 GPT-3.5 模型便宜十倍;这并不能证明 Turbo 和 DaVinci 是同一个模型。
我会先浏览文档,再运行一个小型 Python 应用。ChatGPT API 接收消息并生成模型回复;Whisper API 负责音频转写。Whisper 转写的示例给我留下了深刻印象,不过这些观察并不是与其他服务的受控比较。
OpenAI 介绍了 Snap、Quizlet、Instacart 和 Shopify 的早期应用:可定制聊天机器人、语言辅导、杂货建议和购物推荐。这些例子展示了不同产品如何将模型输出融入自己的使用体验。

发布时的价格是每 1000 个 token 0.002 美元,OpenAI 称其比已有的 GPT-3.5 模型便宜十倍。这是历史价格,并非当前报价。新的 gpt-3.5-turbo 模型使用接收结构化消息的 chat-completions 端点;我稍后运行的旧版 text-completions 示例使用的是不同的模型和端点。
提示词、token 与模型
他讲解文本补全示例、token 计数和文档中列出的模型。模型限制和可用性取决于具体版本。
一个语言模型 API 可以通过提示词支持差异很大的任务,无须为每一种翻译或聊天机器人用途分别设计端点。文档用一个请求冰淇淋店广告语的提示词来说明这一点。请求的措辞会影响回复。
token 既关系到计费,也关系到模型能处理的文本量。一个 token 通常约等于四个英文字母或四分之三个英文单词,但这只是粗略估计。输入和生成的输出都会计入模型的上下文预算和费用。
我正在阅读的文档提到提示词和回复合计不能超过 2048 个 token。这个数字并非通用限制:上限取决于具体模型和版本,应查阅相应文档。规划请求长度时,要记得为回复留出空间。
token 可以是完整的常用单词,也可以是较长单词的片段。我用“Tell me something cool.”试用了分词工具,展示文本如何被拆分和计数,包括空格。分词工具有助于估算请求大小和费用,但实际用量取决于模型和输出。
我查看的模型目录包括 GPT-3.5、用于图像生成的 DALL·E、用于转写的 Whisper、衡量相关性的嵌入模型、用于代码的 Codex 和内容审核模型。嵌入向量可以帮助搜索查询找出相关结果。这份 2023 年教程中的目录和模型可用性属于历史情况。
温度参数与政策
示例展示了提示词的具体程度和温度参数如何影响生成文本。Berman 还回顾了当时的使用规则。
快速入门示例展示了更具体的提示词如何改变答案:请求一个马的名字会得到一个建议,而请求一匹黑马的名字会得到另一个建议。接着,教程介绍了温度参数,这是一个可选的采样设置,会影响输出可能出现的变化程度。
在教程展示的零到一区间内,较低温度更倾向于选取可预测的结果,较高温度则允许更广泛的候选 token。它不能保证准确性或创造性,而设为零也不能普遍保证每次回复完全相同。

动物超级英雄提示词先给出几个例子,再要求生成更多名字。在这个演示中,温度为零时会重复相同建议;把温度调到 0.5 再调到 1,结果便出现更多变化。少样本示例有助于传达所需模式,而温度影响采样。
一幅交互图将“Horses are my favorite”拆成 token,并展示候选的下一个词及其概率。在这个例子中,“animal”的概率最高,“animals”紧随其后。较高温度会提高低概率选项相对于首选项出现的可能性。

当我知道希望回复呈现什么样子时,我倾向于使用较低温度;如果要写诗或俳句,我可能会尝试较高温度。这只是实验的起点,不能代替对输出的检查。
我还阅读了当时有效的使用政策,包括对有害活动、经济损害和政治竞选相关用途的限制。我特别提到与人互动的自动化系统需要披露身份的规则,以及当时政策中列出的一些例外。政策会变化,开发者必须查阅当前条款,不能依赖这份 2023 年的概述。
Playground 与 Python 应用
主持人在 Playground 中尝试聊天,并运行本地 Flask 命名应用。示例使用的是旧版 DaVinci 模型,而非 Turbo。
在 Playground 的聊天界面中,我设置系统指令“你是一名私人购物助手”,然后询问自己应该穿什么。模型回复时询问天气、活动和个人偏好;我说天气晴朗、计划长时间散步之后,它建议穿舒适的衣服。界面提供温度和最大长度等设置。

在动手示例中,我使用 Python,克隆教程代码仓库,进入项目目录并复制环境变量示例文件。我创建 API 密钥,并配置本地环境使用它。凭据应保密且不要纳入版本控制;教程中的旧软件包和 API 调用可能需要修改,才能适用于当前服务。
示例应用导入 OpenAI 库和 Flask。它读取 API 密钥、定义路由,并从表单接收一种动物。提示词提供几个动物超级英雄名字作为示例,再让模型为提交的动物生成三个名字。
我安装项目依赖并启动 Flask。正如我在视频中指出的,文档示例使用的是旧版 DaVinci 补全模型,而非新发布的 GPT-3.5 Turbo 聊天端点。因此,运行这个示例展示的是旧版补全流程,而不是实际接入 Turbo。
本地服务器运行后,我在 localhost 的 5000 端口打开页面,输入“bunny”。应用返回三个建议:Super Hopper、Thumperman 和 Carrot Crusader。这个例子展示了从表单输入、调用模型到显示文本的基本流程。

现在,我们已经有了一个连接 OpenAI API 的本地 Python 环境。我计划之后用 Turbo 端点构建更完整的应用,并考虑使用 Ruby on Rails 还是无代码方案。这段视频记录的是早期教程,因此读者动手实现之前,应查看当前的 API 文档、受支持模型、价格和政策。
同频道的其他文章
34:21EN → 简体中文
0:26EN → 简体中文
0:36EN → 简体中文
0:21EN → 简体中文
25:50EN → 简体中文
32:20EN → 简体中文