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

Python3.9.12上传jsonl至OpenAI微调GPT-3.5-turbo-1106遇编码错误

问题解决:上传jsonl到OpenAI时触发UnicodeEncodeError

错误原因

报错中的\u201c是智能左引号(“),属于非ASCII字符。httpx库处理请求头时默认尝试用ASCII编码,遇到该字符后触发编码失败。结合你的代码和场景,主要触发点包括:

  • 代码中错误地将文件路径变量名写成了字符串常量,导致加载错误文件或路径解析异常
  • 系统默认编码非UTF-8,导致请求头编码逻辑出错
  • jsonl文件中包含智能引号等非ASCII字符,或文件编码不是UTF-8

修复步骤

1. 修正代码中的基础错误

首先修复代码里的两个明显问题:

from openai import OpenAI
import os

# 强制设置Python IO编码为UTF-8
os.environ["PYTHONIOENCODING"] = "utf-8"

# 修正客户端实例化方式(已导入OpenAI,无需加openai前缀)
client = OpenAI()
training_data_path = "fine_tuneGPT_test.jsonl"

# 用with语句安全打开文件,使用变量而非字符串常量作为路径
with open(training_data_path, "rb") as f:
    response = client.files.create(
        file=f,
        purpose="fine-tune"
    )

print(response)

2. 检查并修复jsonl文件

  • 确保文件中所有引号都是普通双引号("),替换掉智能引号(“”)这类非ASCII字符
  • 将文件保存为UTF-8编码(可通过记事本/VS Code等工具的编码选项设置)

3. 进阶:自定义httpx客户端强制编码

如果上述步骤仍未解决,可通过自定义httpx客户端强制指定UTF-8编码:

from openai import OpenAI
import httpx
import os

os.environ["PYTHONIOENCODING"] = "utf-8"

# 创建自定义httpx客户端,强制UTF-8编码
httpx_client = httpx.Client(
    default_encoding="utf-8",
    headers={"Content-Type": "application/json; charset=utf-8"}
)

client = OpenAI(http_client=httpx_client)
training_data_path = "fine_tuneGPT_test.jsonl"

with open(training_data_path, "rb") as f:
    response = client.files.create(
        file=f,
        purpose="fine-tune"
    )

print(response)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:11:18