OpenAI ChatGPT API 错误:“InvalidRequestError:提供了无法识别的请求参数:消息”

cor*_*ght 36 python openai-api chatgpt-api

我目前正在尝试使用 OpenAI 的最新模型:gpt-3.5-turbo. 我正在遵循一个非常基本的教程

我正在使用 Google Collab 笔记本进行工作。我必须对提示列表中的每个提示发出请求,为了简单起见,该请求如下所示:

prompts = ['What are your functionalities?', 'what is the best name for an ice-cream shop?', 'who won the premier league last year?']
Run Code Online (Sandbox Code Playgroud)

我定义了一个函数来执行此操作:

import openai

# Load your API key from an environment variable or secret management service
openai.api_key = 'my_API'

def get_response(prompts: list, model = "gpt-3.5-turbo"):
  responses = []

  
  restart_sequence = "\n"

  for item in prompts:

      response = openai.Completion.create(
      model=model,
      messages=[{"role": "user", "content": prompt}],
      temperature=0,
      max_tokens=20,
      top_p=1,
      frequency_penalty=0,
      presence_penalty=0
    )

      responses.append(response['choices'][0]['message']['content'])

  return responses
Run Code Online (Sandbox Code Playgroud)

但是,当我打电话时responses = get_response(prompts=prompts[0:3]),出现以下错误:

InvalidRequestError: Unrecognized request argument supplied: messages
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

messages参数替换为prompt会导致以下错误:

InvalidRequestError: [{'role': 'user', 'content': 'What are your functionalities?'}] is valid under each of {'type': 'array', 'minItems': 1, 'items': {'oneOf': [{'type': 'integer'}, {'type': 'object', 'properties': {'buffer': {'type': 'string', 'description': 'A serialized numpy buffer'}, 'shape': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Array shape'}, 'dtype': {'type': 'string', 'description': 'Stringified dtype'}, 'token': {'type': 'string'}}}]}, 'example': '[1, 1313, 451, {"buffer": "abcdefgh", "shape": [1024], "dtype": "float16"}]'}, {'type': 'array', 'minItems': 1, 'maxItems': 2048, 'items': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'buffer': {'type': 'string', 'description': 'A serialized numpy buffer'}, 'shape': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Array shape'}, 'dtype': {'type': 'string', 'description': 'Stringified dtype'}, 'token': {'type': 'string'}}}], 'default': '', 'example': 'This is a test.', 'nullable': False}} - 'prompt'
Run Code Online (Sandbox Code Playgroud)

Rok*_*nko 53

问题

\n

您使用了错误的方法名称来完成。使用OpenAI SDK(Python或Node.js)时,需要使用正确的方法名称。

\n

哪一个方法名称是正确的?这取决于您要使用的 OpenAI 模型。

\n

解决方案

\n

下表将帮助您找出适合给定 OpenAI 模型的方法名称。

\n

首先,在下表中查找哪个 API 端点与您要使用的 OpenAI 模型兼容。

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n
API端点模型组型号名称
/v1/聊天/完成\xe2\x80\xa2 GPT-4
\xe2\x80\xa2 GPT-3.5
\xe2\x80\xa2gpt-4和注明日期的型号版本
\xe2\x80\xa2gpt-4-32k和注明日期的型号版本
\xe2\x80\xa2 gpt-4-1106-preview
\xe2\x80\xa2 gpt-4-vision-preview
\xe2\x80\xa2gpt-3.5-turbo和注明日期的型号版本
\xe2\x80\xa2gpt-3.5-turbo-16k和注明日期模型发布了
\xe2\x80\xa2 的微调版本gpt-3.5-turbo
/v1/完成(旧版)\xe2\x80\xa2 GPT-3.5
\xe2\x80\xa2 GPT 基础
\xe2\x80\xa2 gpt-3.5-turbo-instruct
\xe2\x80\xa2 babbage-002
\xe2\x80\xa2davinci-002
/v1/助手除受支持之外的所有型号gpt-3.5-turbo-0301
检索工具需要gpt-4-1106-previewgpt-3.5-turbo-1106
/v1/音频/转录耳语\xe2\x80\xa2whisper-1
/v1/音频/翻译耳语\xe2\x80\xa2whisper-1
/v1/音频/语音语音合成\xe2\x80\xa2 tts-1
\xe2\x80\xa2tts-1-hd
/v1/fine_tuning/工作\xe2\x80\xa2 GPT-3.5
\xe2\x80\xa2 GPT 基础
\xe2\x80\xa2 gpt-3.5-turbo
\xe2\x80\xa2 babbage-002
\xe2\x80\xa2davinci-002
/v1/嵌入嵌入\xe2\x80\xa2text-embedding-ada-002
/v1/节制节制\xe2\x80\xa2 text-moderation-stable
\xe2\x80\xa2text-moderation-latest
\n
\n

其次,在下表中找到您需要使用的方法名称。

\n

注意:请注意,您必须使用与您的 OpenAI SDK 版本兼容的方法名称。

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n
API端点Python SDK <v1
方法名称
Python SDKv1
方法名称
Node.js SDKv3
方法名称
Node.js SDKv4
方法名称
/v1/聊天/完成openai.ChatCompletion.createopenai.chat.completions.createopenai.createChatCompletionopenai.chat.completions.create
/v1/完成(旧版)openai.Completion.createopenai.completions.createopenai.createCompletionopenai.completions.create
/v1/助手/openai.beta.assistants.create/openai.beta.assistants.create
/v1/音频/转录openai.Audio.transcribeopenai.audio.transcriptions.createopenai.createTranscriptionopenai.audio.transcriptions.create
/v1/音频/翻译openai.Audio.translateopenai.audio.translations.createopenai.createTranslationopenai.audio.translations.create
/v1/音频/语音/openai.audio.speech.create/openai.audio.speech.create
/v1/fine_tuning/工作/openai.fine_tuning.jobs.create/openai.fineTuning.jobs.create
/v1/嵌入openai.Embedding.createopenai.embeddings.createopenai.createEmbeddingopenai.embeddings.create
/v1/节制openai.Moderation.createopenai.moderations.createopenai.createModerationopenai.moderations.create
\n

v1该模型的Python SDK工作示例gpt-3.5-turbo(即聊天完成 API

\n

如果运行test.py,OpenAI API 将返回以下完成信息:

\n
\n

你好呀!今天我能为您提供什么帮助?

\n
\n

测试.py

\n
import os\nfrom openai import OpenAI\nclient = OpenAI()\nOpenAI.api_key = os.getenv(\'OPENAI_API_KEY\')\n\ncompletion = client.chat.completions.create(\n  model = \'gpt-3.5-turbo\',\n  messages = [\n    {\'role\': \'user\', \'content\': \'Hello!\'}\n  ],\n  temperature = 0  \n)\n\nprint(completion.choices[0].message.content)\n
Run Code Online (Sandbox Code Playgroud)\n
\n

v4该模型的Node.js SDK工作示例gpt-3.5-turbo(即聊天完成 API

\n

如果运行test.js,OpenAI API 将返回以下完成信息:

\n
\n

你好呀!今天我能为您提供什么帮助?

\n
\n

测试.js

\n
const OpenAI = require("openai");\nconst client = new OpenAI({\n  apiKey: process.env.OPENAI_API_KEY,\n});\n    \nasync function main() {\n  const completion = await client.chat.completions.create({\n    model: \'gpt-3.5-turbo\',\n    messages: [\n      { role: \'user\', content: \'Hello!\' }\n    ],\n    temperature: 0,\n  });\n\n  console.log(completion.choices[0].message.content);\n}\n\nmain();\n
Run Code Online (Sandbox Code Playgroud)\n