运行Python OpenAI机器人遇API废弃报错,求最新版适配方案
基于最新版OpenAI SDK修复代码
最新版OpenAI SDK(v1.x及以上)完全重构了API接口,旧的openai.Completion、openai.Image.create等同步类调用已被移除,这是你报错的核心原因。以下是适配最新版的完整修复代码,同时替换了已退役的text-davinci-003模型:
# 导入最新版SDK的客户端类 from openai import OpenAI import requests from PIL import Image from io import BytesIO # 创建客户端实例,传入API密钥 client = OpenAI(api_key='my_api_key') def get_response(prompt): # 替换为最新的聊天补全接口,使用替代text-davinci-003的gpt-3.5-turbo-instruct模型 response = client.chat.completions.create( model="gpt-3.5-turbo-instruct", prompt=prompt, temperature=0.5, max_tokens=100 ) # 调整响应结果的获取路径 return response.choices[0].text.strip() def generate_image(text): # 替换为最新的图片生成接口 response = client.images.generate( prompt=text, n=4, size="256x256" ) # 调整图片URL的获取路径 for i, data in enumerate(response.data): image_url = data.url # 下载图片逻辑保持不变 image_data = requests.get(image_url).content image = Image.open(BytesIO(image_data)) image.save(f"generated_image_{i}.png") image.show() print("Images saved") # 主聊天循环逻辑保持不变 while True: user_input = input("User: ") if user_input == 'quit': break elif user_input.lower().startswith('generate image'): image_text = user_input.lower().replace('generate image', '').strip() generate_image(image_text) else: response = get_response(user_input) print("ChatBot: ", response)
关键修改说明
- SDK初始化:改用
OpenAI客户端实例替代全局openai.api_key设置,这是新版SDK的标准用法 - 文本补全接口:
- 移除已弃用的
openai.Completion.create,改用client.chat.completions.create - 替换已退役的
text-davinci-003模型为gpt-3.5-turbo-instruct(该模型支持旧版补全式prompt,逻辑与原代码一致)
- 移除已弃用的
- 图片生成接口:
- 移除已弃用的
openai.Image.create,改用client.images.generate - 响应结果的获取路径从
response['data']改为response.data(新版SDK返回对象而非字典)
- 移除已弃用的
- 依赖更新:确保安装最新版SDK,执行命令:
pip install --upgrade openai
内容的提问来源于stack exchange,提问作者Adisht_Jaglan
相关产品推荐
相关产品推荐

