You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenAI ChatCompletion迁移问题求助:已尝试官方方案仍未解决

解决OpenAI API版本1.0.0+的ChatCompletion兼容性问题

问题根源

openai-python库1.0.0及以上版本重构了API架构,原有的openai.ChatCompletion.create调用方式已被移除,必须采用新的客户端实例模式调用接口。

解决方案一:适配新版本API(推荐)

修改app.py中的OpenAI客户端初始化逻辑与API调用代码,具体改动如下:

  1. 替换导入与客户端初始化
    将直接导入openai并设置密钥的方式,改为创建OpenAI客户端实例:
# 替换原 import openai
from openai import OpenAI
# 替换原 openai.api_key = ...
client = OpenAI(api_key=config['OpenAI']['api_key'])
  1. 调整API调用与响应解析
    将openai.ChatCompletion.create替换为client.chat.completions.create,同时修改响应读取逻辑(新版本返回对象而非字典):
# 替换原API调用代码
response = client.chat.completions.create(
    model=config['LanguageModel']['model'],
    messages=conversation
)
# 替换原响应解析代码
bot_response = response.choices[0].message.content

修改后的完整代码

from flask import Flask, render_template, request, jsonify
from openai import OpenAI  # 调整导入方式
import configparser

# Read configurations from config.ini
config = configparser.ConfigParser()
config.read('config.ini')

# Check if the required OpenAI API key is present in the configuration
if 'OpenAI' not in config or 'api_key' not in config['OpenAI']:
    raise ValueError("OpenAI API key not found in config.ini")

# Initialize the OpenAI client - 调整客户端初始化
client = OpenAI(api_key=config['OpenAI']['api_key'])

app = Flask(__name__)
app.static_folder = 'static'

@app.route('/')
def home():
    return render_template('chat.html')

@app.route('/send', methods=['POST'])
def send_message():
    user_message = request.json.get('message', '')

    character_info = {
        "name": "Unknown Character",
        "appearance": {
            "body_type": "Unknown",
            "complexion": "Unknown"
        },
        "bio": {
            "House_of_Ashes": "Unknown",
            "accident": "Unknown"
        },
        "traits": "Unknown"
    }

    prompt = config['Prompt']['prompt'].format(
        name=character_info['name'],
        traits=character_info['traits'],
        appearance=character_info['appearance'],
        bio=character_info['bio'],
        conversation_summary=''
    )

    conversation = [
        {"role": "system", "content": f"You are {character_info['name']}, and you are talking to {user_message}."},
        {"role": "user", "content": user_message}
    ]

    try:
        print("Sending conversation to OpenAI API:", conversation)

        # 调整API调用方式
        response = client.chat.completions.create(
            model=config['LanguageModel']['model'],
            messages=conversation
        )

        print("Received response from OpenAI API:", response)

        # 调整响应解析逻辑
        bot_response = response.choices[0].message.content
    except Exception as e:
        print("Error:", str(e))
        return jsonify(response="OpenAI API error: " + str(e))

    prompt = prompt.replace('{conversation_summary}', f'Player: {user_message}\nCharacter: {bot_response}\n')

    return jsonify(response=bot_response)

if __name__ == '__main__':
    app.run(debug=True)

解决方案二:降级到旧版本库

若暂时不想修改代码,可执行以下命令将openai库降级至兼容版本:

pip install openai==0.28

注意:旧版本库后续不再接收安全更新与功能迭代,仅作为临时过渡方案。

内容的提问来源于stack exchange,提问作者Akhanta Nightshade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 01:12:13