gpt4 book ai didi

javascript - 使用fetch调用OpenAi API抛出错误400 "you must provide a model parameter"

转载 作者:行者123 更新时间:2023-12-02 05:47:01 32 4
gpt4 key购买 nike

遵循 OpenAI API 文档,但此 POST 请求有问题...我收到“您必须提供模型参数”错误...请求正文有什么问题?

try {
const response = await fetch(
`https://api.openai.com/v1/completions`,
{
body: JSON.stringify({"model": "text-davinci-003", "prompt": "Say this is a test", "temperature": 0, "max_tokens": 7}),
method: "POST",
headers: {
Accept: "application/json",
Authorization: "Bearer [API-KEY]",
},
}
).then((response) => {
if (response.ok) {
response.json().then((json) => {
terminal.echo(json);
});
}
});

console.log("Completed!");
} catch (err) { console.error(`Error: ${err}`) }
}```

最佳答案

根据 API Reference一个有效的请求看起来像这样:

curl https://api.openai.com/v1/completions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"model": "text-davinci-003",
"prompt": "Say this is a test",
"max_tokens": 7,
"temperature": 0
}'

我们可以看到 model 在请求正文中作为属性传递。请求正文必须是 JSON 字符串。此外,API 需要两个请求 header :content-typeauthorization

您的示例中共享的请求正文是正确的。 authorization 请求 header 也在那里。但是,您的示例中缺少 content-type header ,因为它 - 显然并且可能是错误的 - 被 accept header 替换。

由于缺少 content-type header ,API 不知道请求正文的内容类型(可能是 json、yaml、xml 等)。因此,API 无法处理请求正文,并以缺少模型参数这一事实作为响应。

以下示例适用于 Chrome:

    await fetch(
`https://api.openai.com/v1/completions`,
{
body: JSON.stringify({"model": "text-davinci-003", "prompt": "Say this is a test", "temperature": 0, "max_tokens": 7}),
method: "POST",
headers: {
"content-type": "application/json",
Authorization: "Bearer API_KEY_HERE",
},
}
).then((response) => {
if (response.ok) {
response.json().then((json) => {
terminal.echo(json);
});
}
});

关于javascript - 使用fetch调用OpenAi API抛出错误400 "you must provide a model parameter",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74944407/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com