ChatGPT Fine-tuning 实战 电脑版发表于:2025/8/17 14:18  >#ChatGPT Fine-tuning 实战 [TOC] Fine-tuning简介 ------------ tn2>微调通过喂给大模型更多的样本数据来改进模型的表现,使其在一些特定的任务上输出更好的结果。 使用场景 ------------ tn2>? 要求输出特定的风格和格式等 ? 提高输出的可靠性 ? 纠正无法遵循复杂提示语的问题 ? 执行一项难以用语言表达的新技能或任务 Fine-tuning 日志分析专家 ------------ tn2>使用真实的已标注数据进行 Fine-tuning,使模型具备判断日志故障优先级的能力   tn2>Fine-tuning 数据格式:jsonl 包含systemprompt、user、assistant 每行代表一条日志标注数据 ### 准备微调数据 tn2>这里我准备了一些日志数据,列的描述分别是日志与优先级:  ### 上传微调文件 tn2>接下来我们创建一个`finetune.py`用于上传微调数据,并创建一个微调任务输出它们的id。 ```python from openai import OpenAI client = OpenAI(api_key="你的ChatGPT API Key") # 上传微调数据 file_name = client.files.create(file=open("log.jsonl", "rb"), purpose="fine-tune") file_id = file_name.id print("file_id is: ", file_id) # 创建微调任务 finetune_job = client.fine_tuning.jobs.create( training_file=file_id, model="gpt-4o-mini-2024-07-18" ) job_id = finetune_job.id print("job_id is: ", job_id) ``` tn2>运行一下 ```python python finetune.py ```  tn2>接着我们创建一个`get_finetune_status.py`文件用于查询微调模型是否已经创建好了。 ```python from openai import OpenAI client = OpenAI( api_key="你的API Key", ) job_id = "ftjob-BXQ0NTUCeJkeKEGwEcOu9xHO" status = client.fine_tuning.jobs.retrieve(job_id) print("\n", status) print("\nfinetune status is: ", status.status) print("\nfinetune model id is: ", status.fine_tuned_model) ``` tn>注意:微调时间取决于微调数据量大小,耗时较长。可微调模型包括:`gpt-4o-mini-2024-07-18`、`gpt-3.5-turbo-0125`等 tn2>等了十几分钟,我们的模型总算训练好了。  ### 推理模型 tn2>创建一个`chat.py`,用于推理模型。 ```python from openai import OpenAI client = OpenAI( api_key="你的 API Key", ) model_id = "ft:gpt-4o-mini-2024-07-18:personal::C5QcrId1" completion = client.chat.completions.create( model=model_id, messages=[ { "role": "system", "content": "你现在是一个日志告警专家,请根据日志内容去识别紧急程度,直接输出 P1 P2 或 P3,输出:", }, {"role": "user", "content": "Disk I/O error"}, ], ) print("ChatGPT resp: ", completion.choices[0].message.content) ``` 