OpenAI API 错误:“您尝试访问 openai.ChatCompletion,但 openai>=1.0.0 不再支持此功能”

Pet*_*utz 8 python artificial-intelligence pip openai-api chatgpt-api

我目前正在开发一个聊天机器人,由于我使用的是 Windows 11,它不允许我迁移到较新的 OpenAI 库或降级它。ChatCompletion我可以用其他功能替换该功能以在我的版本上使用吗?

这是代码:

import openai

openai.api_key = "private"

def chat_gpt(prompt):
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message['content'].strip()

if __name__ == "__main__":
    while True:
        user_input = input("You: ")
        if user_input.lower() in ["quit", "exit", "bye"]:
            break
        response = chat_gpt(user_input)
        print("Bot:", response)
Run Code Online (Sandbox Code Playgroud)

这是完整的错误:

...您尝试访问 openai.ChatCompletion,但 openai>=1.0.0 不再支持此功能 - 请参阅https://github.com/openai/openai-python上的API 了解自述文件。

您可以运行openai migrate自动升级您的代码库以使用 1.0.0 界面。

或者,您可以将安装固定到旧版本,例如 <pip install openai==0.28>

此处提供了详细的迁移指南:https ://github.com/openai/openai-python/discussions/742

我尝试通过 pip 进行升级和降级。

Spa*_*att 10

尝试更新到最新版本并使用:

from openai import OpenAI

client = OpenAI(
    # defaults to os.environ.get("OPENAI_API_KEY")
    api_key="private",
)

def chat_gpt(prompt):
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message.content.strip()
Run Code Online (Sandbox Code Playgroud)

关联

编辑:message.['content']->message.content在此函数的返回上,因为message object is not subscriptable使用时会引发错误message.['content']。另外,将指向README(可能会更改)的链接更新为特定于此代码的迁移指南。


Rok*_*nko 5

问题

您尝试使用的方法名称不适用于 OpenAI Python SDK 版本1.0.0或更高版本。

旧的 SDK(即 version 0.28)使用以下方法名称:

client.ChatCompletion.create
Run Code Online (Sandbox Code Playgroud)

新的 SDK(即版本1.0.0或更新版本)使用以下方法名称:

client.chat.completions.create
Run Code Online (Sandbox Code Playgroud)

注意:请小心,因为 API 区分大小写(即client.Chat.Completions.create不适用于新的 SDK 版本)。

解决方案

尝试这个:

import os
from openai import OpenAI
client = OpenAI()
OpenAI.api_key = os.getenv('OPENAI_API_KEY')

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ]
)

print(completion.choices[0].message.content)
Run Code Online (Sandbox Code Playgroud)