我正在向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
}
如果你已经解决了这个问题,我很想听听你是怎么做到的。
2条答案
按热度按时间taor4pac1#
max_tokens
参数在提示符和完成符之间共享。提示符和完成符的令牌加在一起不应超过特定GPT-3模型的令牌限制。如官方OpenAI article中所述:
根据所使用的模型,请求最多可以使用在prompt和completion之间共享的
4097
令牌。如果您的prompt是4000
令牌,则您的completion最多可以是97
令牌。这个限制目前是一个技术限制,但在这个限制范围内,往往有一些创造性的方法来解决问题,比如压缩你的提示,把文本分成更小的片段等等。
GPT-3 models:
xghobddn2#
这个问题由Reddit用户'bortlip'解决。
max_tokens
参数定义响应令牌。来自OpenAI:
https://platform.openai.com/docs/api-reference/completions/create#completions/create-max_tokens
提示符的标记计数加上max_tokens不能超过模型的上下文长度。
因此,为了解决这个问题,我从
max_tokens
中减去提示符的令牌计数,它工作得很好。