OpenAI GPT-3 API错误:"This model's maximum context length is 4097 tokens";

回答 2 浏览 5576 2023-02-09

我正在向 completions 端点发出请求。我的提示是1360个令牌,由Playground和Tokenizer验证。我不会显示提示,因为它对这个问题来说有点太长了。

这是我在Nodejs中使用openai npm包对openai提出的请求。

const response = await openai.createCompletion({
  model: 'text-davinci-003',
  prompt,
  max_tokens: 4000,
  temperature: 0.2
})

当在playground上测试时,我的响应后的总token是1374个。

通过完成 API 提交我的提示时,出现以下错误:

error: {
  message: "This model's maximum context length is 4097 tokens, however you requested 5360 tokens (1360 in your prompt; 4000 for the completion). Please reduce your prompt; or completion length.",
  type: 'invalid_request_error',
  param: null,
  code: null
}

如果您能够解决这个问题,我很想听听您是如何做到的。

Kane Hooper 提问于2023-02-09
2 个回答
#1楼 已采纳
得票数 3

max_tokens参数在提示和完成之间是共享的。来自提示和完成的所有令牌不应超过特定GPT-3模型的令牌限制。

正如官方的OpenAI文章中所说:

Depending on the model used, requests can use up to 4097 tokens shared between prompt and completion. If your prompt is 4000 tokens, your completion can be 97 tokens at most.

The limit is currently a technical limitation, but there are often creative ways to solve problems within the limit, e.g. condensing your prompt, breaking the text into smaller pieces, etc.

GPT-3模型

Table

Rok Benko 提问于2023-02-09
Rok Benko 修改于2023-02-24
谢谢Cervus,这澄清了我的一个误解。Kane Hooper 2023-02-09
我有一个带有长输入文本的摘要任务。是否有解决方法来处理更长的输入文本?M.Hossein Rahimi 2023-03-22
@M.HosseinRahimi 嗯,我看到了一些与此相关的问题。我看到的唯一简单的选择是将文本分成更小的部分。最后,比方说,你会有五份总结,然后你可以做最后的总结。这是一个选项吗?Rok Benko 2023-03-22
#2楼
得票数 -1

这一点被Reddit用户 "bortlip"解决了。

参数max_tokens定义了响应的令牌。

来自OpenAI的消息:

https://platform.openai.com/docs/api-reference/completions/create#completions/create-max_tokens

The token count of your prompt plus max_tokens cannot exceed the model's context length.

因此,为了解决这个问题,我从max_tokens中减去提示的令牌计数,它工作得很好。

Kane Hooper 提问于2023-02-09
标签