自定义数据集微调Azure OpenAI Davinci模型遇API密钥错误求助
解决OpenAI微调时的API密钥错误问题
你遇到的问题是Python代码中设置的OpenAI密钥无法被subprocess调用的命令行工具读取——因为subprocess启动的是独立进程,不会继承Python代码里的openai模块配置。以下是两种可行的修复方案:
方案一:命令行直接传入API密钥
修改subprocess调用的命令,添加--api-key参数,把你的密钥直接传入:
# 数据预处理命令 subprocess.run([ 'openai', 'tools', 'fine_tunes.prepare_data', '--file', 'prepared_openai_data.csv', '--quiet', '--api-key', config.API_KEY ]) # 启动微调命令 subprocess.run([ 'openai', 'api', 'fine_tunes.create', '--training_file', 'prepared_data_prepared.jsonl', '--model', 'davinci', '--suffix', 'SuperHero', '--api-key', config.API_KEY ])
方案二:通过环境变量传递密钥
在执行subprocess前,把API密钥设置为环境变量,命令行工具会自动读取OPENAI_API_KEY:
# 复制当前环境变量,避免覆盖系统原有变量 env = os.environ.copy() env['OPENAI_API_KEY'] = config.API_KEY # 数据预处理命令 subprocess.run( 'openai tools fine_tunes.prepare_data --file prepared_openai_data.csv --quiet'.split(), env=env ) # 启动微调命令 subprocess.run( 'openai api fine_tunes.create --training_file prepared_data_prepared.jsonl --model davinci --suffix "SuperHero"'.split(), env=env )
额外注意事项
- Windows下用字符串
split()处理带引号的参数可能出问题,比如--suffix "SuperHero"会被拆成['--suffix', '"SuperHero"'],建议用列表形式编写命令参数(如方案一),避免引号解析错误。 - 确保你的
config.API_KEY是有效的OpenAI密钥,没有空格或拼写错误。
内容的提问来源于stack exchange,提问作者Vanshika
相关产品推荐
相关产品推荐

