OpenAI GPT-3 API错误:“此模型的最大上下文长度为4097个令牌”

kqhtkvqz  于 2023-03-24  发布在  其他
关注(0)|答案(2)|浏览(9186)

我正在向completions端点发出请求。我的提示是1360个token,经过Playground和Tokenizer验证。我不会显示提示,因为它对于这个问题来说有点太长了。
下面是我使用openai npm包在Nodejs中打开openai的请求。

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

当在操场上测试时,我在回答后的总令牌是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
}

如果你已经解决了这个问题,我很想听听你是怎么做到的。

taor4pac

taor4pac1#

max_tokens参数在提示符和完成符之间共享。提示符和完成符的令牌加在一起不应超过特定GPT-3模型的令牌限制。
如官方OpenAI article中所述:
根据所使用的模型,请求最多可以使用在prompt和completion之间共享的4097令牌。如果您的prompt是4000令牌,则您的completion最多可以是97令牌。
这个限制目前是一个技术限制,但在这个限制范围内,往往有一些创造性的方法来解决问题,比如压缩你的提示,把文本分成更小的片段等等。
GPT-3 models

xghobddn

xghobddn2#

这个问题由Reddit用户'bortlip'解决。
max_tokens参数定义响应令牌。
来自OpenAI:
https://platform.openai.com/docs/api-reference/completions/create#completions/create-max_tokens
提示符的标记计数加上max_tokens不能超过模型的上下文长度。
因此,为了解决这个问题,我从max_tokens中减去提示符的令牌计数,它工作得很好。

相关问题