OpenAI Moderation报错求助:版本兼容及Windows环境解决方案
解决OpenAI API版本兼容问题
问题根源
报错提示openai.Moderation在openai>=1.0.0版本中已废弃,你的代码采用了旧版API调用逻辑,而安装0.28版本未生效大概率是虚拟环境未正确激活或安装流程有误。
方案一:升级代码适配openai 1.x版本
修改代码中OpenAI相关调用逻辑,适配1.x版本的新接口规范:
- 调整导入与客户端初始化
替换原有OpenAI导入及API密钥配置代码:
from openai import OpenAI # 其他导入语句保持不变 load_dotenv() # 初始化OpenAI客户端 client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
- 更新聊天补全接口调用
修改get_response函数中的ChatCompletion调用方式,并调整返回结果的访问路径:
def get_response(instructions, previous_questions_and_answers, new_question): # 消息构建逻辑保持不变 completion = client.chat.completions.create( model="gpt-3.5-turbo", messages=messages, temperature=TEMPERATURE, max_tokens=MAX_TOKENS, top_p=1, frequency_penalty=FREQUENCY_PENALTY, presence_penalty=PRESENCE_PENALTY, ) return completion.choices[0].message.content
- 更新内容审核接口调用
修改get_moderation函数中的Moderation调用方式,适配1.x版本的返回结构(返回对象而非字典):
def get_moderation(question): # errors字典保持不变 response = client.moderations.create(input=question) if response.results[0].flagged: result = [] categories = response.results[0].categories # 逐一检查分类标记状态 if categories.hate: result.append(errors["hate"]) if categories.hate_threatening: result.append(errors["hate/threatening"]) if categories.self_harm: result.append(errors["self-harm"]) if categories.sexual: result.append(errors["sexual"]) if categories.sexual_minors: result.append(errors["sexual/minors"]) if categories.violence: result.append(errors["violence"]) if categories.violence_graphic: result.append(errors["violence/graphic"]) return result return None
方案二:确保正确安装openai 0.28版本
若想继续使用旧版代码,需严格按以下步骤操作:
- 激活虚拟环境
Windows系统下,进入虚拟环境的Scripts目录,执行:
activate
Linux/macOS系统执行:
source venv/bin/activate
- 卸载现有openai版本
pip uninstall -y openai
- 安装指定版本
pip install openai==0.28
- 验证安装结果
执行以下命令确认版本:
pip show openai
确保输出的Version字段为0.28.x
内容的提问来源于stack exchange,提问作者Hamouchou
相关产品推荐
相关产品推荐

