假设,已经标注的训练数据集df包含了提示词、输入和输出三列。
构建微调SFT的数据集代码如下:
data = []
for x in df.values:prompt = x[1]user_content = x[2]assistant_content = x[3]data.append({"messages": [{"role": "system", "content": prompt}, {"role": "user", "content": user_content},{"role": "assistant", "content": assistant_content}]})
data[0]import json# 将数据写入.jsonl文件
with open('sft_train.jsonl', 'w') as f:for item in data:json.dump(item, f)f.write('\n') # 每行一个JSON对象
假设,已经标注的强化学习数据集df包含用户输入、首选输出、次选输出三列。
构建强化学习DPO的数据集代码如下:
dpo_data = []
for x in sft_df.values:user_content = x[1]preferred_output = x[2]non_preferred_output = x[3]dpo_data.append({"input": {"messages": [{"role": "user", "content": user_content}],"tools": [], "parallel_tool_calls": True }, "preferred_output": [{"role": "assistant", "content": preferred_output}], "non_preferred_output": [{"role": "assistant", "content": non_preferred_output}]})
dpo_data[0]import json
with open('dpo_train.jsonl', 'w') as f:for item in dpo_data:json.dump(item, f)f.write('\n') # 每行一个JSON对象