我目前正在开发一个聊天机器人,由于我使用的是 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)
这是完整的错误:
... 您尝试访问 openai.ChatCompletion,但 openai>=1.0.0 不再支持此功能 - 请参阅自述文件 https://github.com/openai/openai-python 了解 API。| ||您可以运行
来自动升级您的代码库以使用 1.0.0 界面。
openai migrate
或者,您可以将安装固定到旧版本,例如<pip install openai==0.28>详细的迁移指南可以在这里找到:
https://github.com/openai/openai-python/discussions/742 我尝试通过 pip 升级和降级。
I tried both upgrading and downgrading through pip.
是对的,
openai.ChatCompletion
在 openai 库版本 1.0.0 中不再可用。需要使用
openai.ChatCompletion.create()
的
openai.Completion.create()
。
以下是修改后的代码:
import openai
openai.api_key = "private"
def chat_gpt(prompt):
response = openai.Completion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].text.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)
Here's a breakdown of the changes:
-
openai.Completion.create()
instead ofopenai.ChatCompletion.create()
: This is the main change in the new version of the library. -
response.choices[0].text.strip()
instead ofresponse.choices[0].message['content'].strip()
: The structure of the response object has changed slightly. We now access the generated text usingresponse.choices[0].text
.
即使遇到升级或降级问题,此代码也应该可以与合适的
openai
库版本一起使用。 如果在更新库时遇到问题,请考虑创建一个新的虚拟环境并安装所需的版本。