如何用GPT-4批量翻译TXT文件?OpenAI SDK 1.0+报错求助
解决OpenAI SDK 1.0+版本的文本翻译脚本兼容问题
错误原因
OpenAI SDK 1.0.0及以上版本重构了API调用逻辑,废弃了旧版直接通过openai.ChatCompletion调用的模式,改为基于Client类的实例化调用,同时响应内容的访问方式也有调整。
修复步骤
- 升级OpenAI包(确保使用最新兼容版本)
pip install --upgrade openai
- 适配新版SDK的脚本代码
以下是完整的修复后脚本:
import os from openai import Client # 初始化OpenAI客户端(推荐通过环境变量OPENAI_API_KEY设置密钥,也可直接传入api_key参数) client = Client( # api_key="your-api-key-here" # 未设置环境变量时可取消注释并填入密钥 ) folder_path = "你的源文件夹路径" folder_translated_path = "你的目标文件夹路径" # 确保目标文件夹存在,避免写入失败 os.makedirs(folder_translated_path, exist_ok=True) for file_name in os.listdir(folder_path): if file_name.endswith('.txt'): file_path = os.path.join(folder_path, file_name) try: with open(file_path, 'r', encoding='utf-8') as file: text = file.read() # 调用新版OpenAI聊天完成API response = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "你是专业翻译人员,需将英文文本准确翻译为西班牙语。"}, {"role": "user", "content": f"Translate this English text to Spanish: '{text}'"} ] ) # 新版API通过属性访问响应内容 translated_text = response.choices[0].message.content.strip() translated_file_path = os.path.join(folder_translated_path, file_name) with open(translated_file_path, 'w', encoding='utf-8') as translated_file: translated_file.write(translated_text) print(f"翻译完成:{file_name}") except Exception as e: print(f"处理文件{file_name}出错:{str(e)}")
核心修改点
- 导入
openai.Client并实例化客户端对象,替代旧版直接调用模块属性的方式 - 将
openai.ChatCompletion.create替换为client.chat.completions.create,符合新版API命名规范 - 响应内容从字典索引
response['choices'][0]['message']['content']改为属性访问response.choices[0].message.content - 添加
encoding='utf-8'指定文件编码,避免特殊字符乱码 - 增加异常捕获逻辑,便于排查文件读写或API调用问题
- 自动创建目标文件夹,避免路径不存在导致的写入失败
内容的提问来源于stack exchange,提问作者eera5607
相关产品推荐
相关产品推荐

