top
本文目录
概述
资源
关键概念
通用技术
嵌入
代币
导游
聊天完成 API
聊天完成响应格式
完成API
完成响应格式
聊天完成与完成
GPT 最佳实践
管理代币
常问问题
为什么模型输出不一致?
我应该如何设置温度参数?
是否可以对最新型号进行微调?
您是否存储传递到 API 中的数据?
添加审核层
我应该使用 ChatGPT 还是 API?

chatgpt中文手册

介绍

概述

寻找 ChatGPT?前往chat.openai.com

OpenAI API 几乎可以应用于任何需要理解或生成自然语言和代码的任务。OpenAI API 还可用于生成和编辑图像或将语音转换为文本。我们提供一系列具有不同功能和价位的模型,以及微调定制模型的能力。

资源

关键概念

通用技术

OpenAI 的 GPT(生成式预训练转换器)模型经过训练可以理解自然语言和代码。GPT 提供文本输出以响应其输入。GPT 的输入也称为“提示”。设计提示本质上是您“编程”GPT 模型的方式,通常是通过提供说明或一些示例来说明如何成功完成任务。GPT 可用于各种任务,包括内容或代码生成、摘要、对话、创意写作等。在我们的GPT介绍指南和GPT 最佳实践指南中阅读更多内容。

嵌入

嵌入是一段数据(例如一些文本)的矢量表示,旨在保留其内容和/或其含义的各个方面。在某种程度上相似的数据块往往比不相关的数据具有更紧密的嵌入。OpenAI 提供文本嵌入模型,将文本字符串作为输入并生成嵌入向量作为输出。嵌入可用于搜索、聚类、推荐、异常检测、分类等。在我们的嵌入指南中阅读有关嵌入的更多信息。

代币

GPT 和嵌入模型以称为标记的块的形式处理文本。标记表示经常出现的字符序列。例如,字符串“tokenization”被分解为“token”和“ization”,而像“the”这样的短词和常用词则被表示为单个token。请注意,在句子中,每个单词的第一个标记通常以空格字符开头。查看我们的分词器工具来测试特定的字符串,看看它们是如何被翻译成分词的。根据粗略的经验,对于英文文本,1 个标记大约为 4 个字符或 0.75 个单词。

要记住的一个限制是,对于 GPT 模型,提示和生成的输出组合不能超过模型的最大上下文长度。对于嵌入模型(不输出标记),输入必须短于模型的最大上下文长度。每个 GPT 和嵌入模型的最大上下文长度可以在模型索引中找到。


导游

跳转到我们的指南之一以了解更多信息。

快速入门教程
通过构建快速示例应用程序进行学习
通用技术
了解如何生成文本
GPT 最佳实践
了解使用 GPT 模型构建的最佳实践
嵌入
了解如何搜索、分类和比较文本
语音转文字
测试版
了解如何将语音转换为文本
图像生成
测试版
了解如何生成或编辑图像
微调
了解如何为您的用例训练模型

通用技术

寻找 ChatGPT?前往chat.openai.com

OpenAI 的 GPT(生成式预训练转换器)模型经过训练可以理解自然语言和代码。GPT 提供文本输出以响应其输入。GPT 的输入也称为“提示”。设计提示本质上是您“编程”GPT 模型的方式,通常是通过提供说明或一些示例来说明如何成功完成任务。

使用 GPT,您可以构建应用程序以:

  • 起草文件
  • 编写计算机代码
  • 回答有关知识库的问题
  • 分析文本
  • 创建会话代理
  • 给软件一个自然语言界面
  • 一系列科目的导师
  • 翻译语言
  • 模拟游戏角色
  • 以及更多

要通过 OpenAI API 使用 GPT 模型,您将发送包含输入和 API 密钥的请求,并收到包含模型输出的响应。我们的最新模型gpt-4gpt-3.5-turbo,可通过聊天完成 API 端点访问。目前,只有较旧的遗留模型可通过完成 API 端点使用。

模范家庭 API端点
较新型号(2023 年–) gpt-4, gpt-3.5-turbo https://api.openai.com/v1/chat/completions
旧型号 (2020–2022) text-davinci-003, text-davinci-002, 达芬奇, 居里, 巴贝奇, ada https://api.openai.com/v1/completions

您可以在playground中试验 GPT 。如果您不确定要使用哪个模型,请使用gpt-4gpt-3.5-turbo

聊天完成 API

聊天模型将消息列表作为输入,并返回模型生成的消息作为输出。虽然聊天格式旨在让多轮对话变得简单,但它对于没有任何对话的单轮任务同样有用。

示例 API 调用如下所示:

1
2
3
4
5
6
7
8
9
10
11
import openai  openai.ChatCompletion.create(  model="gpt-3.5-turbo",  messages=[  {"role": "system", "content": "You are a helpful assistant."},  {"role": "user", "content": "Who won the world series in 2020?"},  {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},  {"role": "user", "content": "Where was it played?"}  ] )

请在此处查看完整的 API 参考文档。

主要输入是消息参数。消息必须是一组消息对象,其中每个对象都有一个角色(“系统”、“用户”或“助手”)和内容。对话可以短到一条消息,也可以来回多次。

通常,对话首先使用系统消息进行格式化,然后是交替的用户和助理消息。

系统消息有助于设置助手的行为。例如,您可以修改助手的个性或提供有关其在整个对话过程中应如何表现的具体说明。但是请注意,系统消息是可选的,没有系统消息的模型行为可能类似于使用通用消息,例如“你是一个有帮助的助手”。

用户消息提供请求或评论以供助理响应。助手消息存储以前的助手响应,但也可以由开发人员编写以提供所需行为的示例。

当用户说明引用之前的消息时,包括对话历史记录很重要。在上面的示例中,用户的最后一个问题是“它在哪里播放?” 仅在有关 2020 年世界职业棒球大赛的先前消息的上下文中才有意义。由于模型对过去的请求没有记忆,因此所有相关信息都必须作为每个请求中对话历史记录的一部分提供。如果对话不适合模型的令牌限制,则需要以某种方式缩短它。

要模仿在迭代返回文本的 ChatGPT 中看到的效果,请将参数设置为 true。

聊天完成响应格式

示例聊天完成 API 响应如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{  'id': 'chatcmpl-6p9XYPYSTTRi0xEviKjjilqrWU2Ve', 'object': 'chat.completion', 'created': 1677649420, 'model': 'gpt-3.5-turbo', 'usage': {'prompt_tokens': 56, 'completion_tokens': 31, 'total_tokens': 87}, 'choices': [ { 'message': { 'role': 'assistant', 'content': 'The 2020 World Series was played in Arlington, Texas at the Globe Life Field, which was the new home stadium for the Texas Rangers.'}, 'finish_reason': 'stop', 'index': 0 } ] }

在 Python 中,可以使用 提取助手的回复response['choices'][0]['message']['content']

每个回复都将包含一个finish_reason. 的可能值为finish_reason

  • stop:API 返回完整的模型输出
  • length:由于max_tokens参数或令牌限制,模型输出不完整
  • content_filter:由于我们的内容过滤器中的标记而省略了内容
  • null: API 响应仍在进行中或不完整

完成API

完成 API 端点与聊天完成端点具有不同的接口。输入不是消息列表,而是一个名为prompt.

示例 API 调用如下所示:

1
2
3
4
5
6
import openai  response = openai.Completion.create(  model="text-davinci-003",  prompt="Write a tagline for an ice cream shop." )

请参阅完整的API 参考文档以了解更多信息。

令牌日志概率

完成 API 可以为每个输出令牌提供与最可能的令牌相关联的有限数量的日志概率。此功能通过使用logprobs字段来控制。这在某些情况下可用于评估模型对其输出的置信度。

插入文字

除了被视为前缀的标准提示之外,完成端点还支持通过提供后缀来插入文本。在编写长文本、段落之间的过渡、遵循大纲或引导模型走向结尾时,这种需求自然会出现。这也适用于代码,可用于插入函数或文件的中间。

深潜
插入文字

完成响应格式

示例完成 API 响应如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{  "choices": [ { "finish_reason": "length", "index": 0, "logprobs": null, "text": "\n\n\"Let Your Sweet Tooth Run Wild at Our Creamy Ice Cream Shack" } ], "created": 1683130927, "id": "cmpl-7C9Wxi9Du4j1lQjdjhxBlO22M61LD", "model": "text-davinci-003", "object": "text_completion", "usage": { "completion_tokens": 16, "prompt_tokens": 10, "total_tokens": 26 } }

在 Python 中,可以使用response['choices'][0]['text'].

响应格式类似于聊天完成 API 的响应格式,但还包括可选字段logprobs

聊天完成与完成

通过使用单个用户消息构造请求,可以使聊天完成格式类似于完成格式。例如,可以使用以下完成提示将英语翻译成法语:

Translate the following English text to French: "{text}"

一个等效的聊天提示是:

[{"role": "user", "content": 'Translate the following English text to French: "{text}"'}]

同样,完成 API 可用于通过相应地格式化输入来模拟用户和助手之间的聊天。

这些 API 之间的差异主要源于每个 API 中可用的底层 GPT 模型。gpt-4聊天完成 API 是我们功能最强大的模型 ( ) 和最具成本效益的模型 ( )的接口gpt-3.5-turbo。作为参考,gpt-3.5-turbo性能水平与text-davinci-003每个令牌的价格相似,但价格低 10%!请在此处查看定价详情。

我应该使用哪种型号?

我们通常建议开发人员使用gpt-4gpt-3.5-turbo. 您应该使用其中的哪一个取决于您使用模型的任务的复杂性。gpt-4通常在广泛的评估中表现更好。特别是,gpt-4能够更仔细地遵循复杂的指令。相比之下,gpt-3.5-turbo更有可能只遵循复杂的多部分指令的一部分。gpt-4不太可能gpt-3.5-turbo编造信息,这种行为被称为“幻觉”。gpt-4还具有更大的上下文窗口,最大大小为 8,192 个标记,而 . 的最大大小为 4,096 个标记gpt-3.5-turbo。但是,gpt-3.5-turbo返回具有较低延迟的输出并且每个令牌的成本要低得多。

我们建议在playground中进行试验,以调查哪些模型可以为您的使用提供最佳的性价比权衡。一种常见的设计模式是使用几种不同的查询类型,每种类型都被分派到适合处理它们的模型。

GPT 最佳实践

了解使用 GPT 的最佳实践可以显着提高应用程序性能。GPT 展示的故障模式以及解决或纠正这些故障模式的方法并不总是直观的。有一种使用 GPT 的技巧被称为“提示工程”,但随着该领域的进步,其范围已经超出了仅仅将提示工程设计到使用模型查询作为组件的工程系统中。要了解更多信息,请阅读我们的GPT 最佳实践指南,其中涵盖改进模型推理、降低模型幻觉可能性等的方法。您还可以在OpenAI Cookbook中找到许多有用的资源,包括代码示例。

管理代币

语言模型以称为标记的块形式读取和写入文本。在英语中,token 可以短至一个字符,也可以长至一个单词(例如,a apple),在某些语言中,token 甚至可以短于一个字符,甚至长于一个单词。

例如,字符串"ChatGPT is great!"被编码为六个标记:["Chat", "G", "PT", " is", " great", "!"].

API 调用中的令牌总数会影响:

  • 您为每个令牌支付的 API 调用费用是多少
  • 您的 API 调用需要多长时间,因为写入更多令牌需要更多时间
  • 您的 API 调用是否有效,因为令牌总数必须低于模型的最大限制(4096 个令牌gpt-3.5-turbo

输入和输出令牌都计入这些数量。例如,如果您的 API 调用在消息输入中使用了 10 个令牌,而您在消息输出中收到了 20 个令牌,则您需要支付 30 个令牌的费用。但是请注意,对于某些模型,每个令牌的价格对于输入中的令牌与输出中的令牌是不同的(有关更多信息,请参阅定价页面)。

要查看 API 调用使用了多少令牌,请检查usageAPI 响应中的字段(例如,response['usage']['total_tokens'])。

聊天模型喜欢gpt-3.5-turbogpt-4使用令牌的方式与完成 API 中可用的模型相同,但由于它们基于消息的格式,因此更难计算对话将使用多少令牌。

深潜
计算聊天 API 调用的令牌

要在不进行 API 调用的情况下查看文本字符串中有多少标记,请使用 OpenAI 的tiktoken Python 库。示例代码可以在 OpenAI Cookbook 关于如何使用 tiktoken 计算令牌的指南中找到。

传递给 API 的每条消息都会消耗内容、角色和其他字段中的令牌数量,外加一些额外的用于幕后格式化。这在未来可能会略有改变。

如果对话中的标记过多而无法满足模型的最大限制(例如,gpt-3.5-turbo 的标记超过 4096 个),您将不得不截断、省略或以其他方式缩小文本,直到适合为止。请注意,如果从消息输入中删除一条消息,模型将失去所有关于它的知识。

请注意,很长的对话更有可能收到不完整的回复。例如,长度为 4090 个令牌的 gpt-3.5-turbo 对话将在仅 6 个令牌后被切断回复。

常问问题

为什么模型输出不一致?

默认情况下,API 是不确定的。这意味着即使您的提示保持不变,您每次调用它时可能会得到略微不同的完成。将温度设置为 0 将使输出大部分具有确定性,但仍会保留少量可变性。

我应该如何设置温度参数?

较低的温度值会产生更一致的输出,而较高的值会产生更多样化和更有创意的结果。根据特定应用所需的连贯性和创造性之间的权衡选择温度值。

是否可以对最新型号进行微调?

不可以。目前,您只能微调基本 GPT-3 模型(davincicuriebabbageada)。有关如何使用微调模型的更多详细信息,请参阅微调指南。

您是否存储传递到 API 中的数据?

自 2023 年 3 月 1 日起,我们会将您的 API 数据保留 30 天,但不再使用您通过 API 发送的数据来改进我们的模型。在我们的数据使用政策中了解更多信息。

添加审核层

如果您想向聊天 API 的输出添加审核层,您可以按照我们的审核指南来防止显示违反 OpenAI 使用政策的内容。

我应该使用 ChatGPT 还是 API?

ChatGPT为 OpenAI API 中的模型提供聊天界面,并提供一系列内置功能,例如集成浏览、代码执行、插件等。相比之下,使用 OpenAI 的 API 为开发人员提供了更大的灵活性。

THE END
icon
0
icon
打赏
icon
分享
icon
二维码
icon
海报