Chrome扩展与聊天GPT-3.5 -“你必须提供一个模型参数”

tnkciper  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(383)

我正在做一个chrome扩展,它使用聊天GPT 3.5,并编写了一个简单的提示,使用openai api发送到API,并在控制台中返回一个值。
我有我的代码下面,并不断得到这个错误...

error: 
    code: null
    message: "you must provide a model parameter"
    param: null
    type: "invalid_request_error"

虽然我有一个模型参数。

// Define the API key
const API_KEY = "API KEY";

// Define the endpoint URL
const endpointUrl = "https://api.openai.com/v1/chat/completions";

// Define the headers
const headers = {
  "Content-Type": "application/json",
  Authorization: `Bearer ${API_KEY}`,
};

// Define the maximum number of completions to return
const maxCompletions = 1;

// Define the prompt to send to the API
const prompt = {
   model: "gpt-3.5-turbo",
   prompt: "Hello, world!",
   temperature: 0.5,
};

// Send a POST request to the endpoint with the prompt and headers
fetch(endpointUrl, {
  method: "POST",
  headers,
  body: JSON.stringify({
    prompt,
    max_completions: maxCompletions,
}),
})
  .then((response) => response.json())
  .then((data) => {
    // Log the response data to the console
    console.log(data);
  })
  .catch((error) => {
    console.error(error);
  });
rvpgvaaj

rvpgvaaj1#

我使用了你的代码,并经历了同样的错误。我调查了网络请求,发现有效载荷格式错误:

{
   prompt: {
      model: "gpt-3.5-turbo", 
      prompt: "Hello, world!", 
      temperature: 0.5}, 
   max_completions: 1
}

因此,就ChatGPT的API而言,您只发送promptmax_completions。您请求以这种方式形成的原因是因为您正在将填充有其他对象的对象传递到JSON.stringify()中。
此外,我不确定您从哪里获得max_completions属性,因为它不在API文档中,所以我省略了它。以下是您需要做出的改变:

// in your fetch call:
fetch(endpointUrl, {
  method: "POST",
  headers,
  body: JSON.stringify(prompt), // prompt is an object, so no need to wrap it in another object.
}).then...

另一个问题是,您正在调用create chat completion端点,但发送的属性不正确。您需要发送:

*型号:字符串
*留言:[{role:string,content:字符串

所以,你也需要在这里进行编辑:

// in your prompt variable:
const prompt = {
   model: "gpt-3.5-turbo",
   messages: [{role: "user", content: "Hello, World!"}], // change prompt to messages array
   temperature: 0.5,
};

干杯!

相关问题