Llama Factory数据预处理:高质量训练集构建实战方法

Llama Factory数据预处理:高质量训练集构建实战方法

如果你正在尝试用Llama Factory微调自己的大模型,可能会发现一个有趣的现象:同样的模型、同样的训练参数,不同人训练出来的效果天差地别。有人训练出的模型对答如流、专业精准,有人训练出的模型却答非所问、逻辑混乱。

这背后的关键差异,往往不是训练技巧有多高明,而是数据预处理的质量

数据预处理就像做饭前的食材准备——再好的厨师,用烂食材也做不出美味佳肴。在Llama Factory这个“零代码”微调平台上,数据预处理更是决定了你最终模型效果的上限。

今天,我就带你深入Llama Factory的数据预处理环节,分享一套经过实战验证的高质量训练集构建方法。无论你是想训练客服助手、代码生成器,还是专业领域问答模型,这套方法都能帮你构建出真正有效的训练数据。

1. 为什么数据预处理如此重要?

在开始具体操作之前,我们先搞清楚一个核心问题:为什么在Llama Factory这样的可视化平台上,数据预处理依然如此关键?

1.1 数据质量决定模型上限

大模型微调的本质,是让模型“学习”你提供的数据中的模式和规律。如果数据本身质量不高、格式混乱、内容矛盾,模型学到的就是混乱和矛盾。

举个例子:如果你想让模型学会礼貌的客服回复,但训练数据中既有礼貌回复,又有生硬回复,模型就会困惑——到底该学哪一种?最终可能生成一个时而礼貌、时而生硬的“精神分裂”模型。

1.2 Llama Factory的数据处理特点

Llama Factory虽然提供了可视化界面,但它对数据格式有明确要求。如果你直接扔进去一堆乱七八糟的文本文件,系统要么报错,要么“勉强”处理,但训练效果会大打折扣。

平台支持的主流数据格式包括:

  • JSON格式:最常用,结构清晰,便于处理
  • CSV格式:表格数据,适合结构化信息
  • 文本对话格式:一问一答的对话数据

无论哪种格式,都需要遵循特定的结构,否则Llama Factory无法正确解析。

1.3 常见的数据预处理误区

在我接触过的很多微调项目中,看到过这些典型的数据问题:

  1. 数据量迷信:认为数据越多越好,收集了10万条数据,但90%都是低质量内容
  2. 格式混乱:同一个字段在不同数据中命名不一致,比如有的用“question”,有的用“query”
  3. 标注不一致:多人标注时标准不统一,同样的问题有不同的“标准答案”
  4. 数据泄露:训练数据中混入了测试数据,导致评估结果虚高

这些问题不会在训练时直接报错,但会悄无声息地毁掉你的模型效果。

2. 数据预处理全流程实战

现在,我们进入实战环节。我将用一个具体的案例——构建“IT技术支持问答模型”的训练集,带你走完数据预处理的完整流程。

2.1 第一步:明确训练目标

在收集任何数据之前,先回答这几个问题:

  1. 模型要解决什么具体问题?
    • 案例:回答员工常见的IT问题,比如“密码重置”、“软件安装”、“网络连接”等
  2. 目标用户是谁?
    • 案例:公司内部非技术员工
  3. 期望的回答风格是什么?
    • 案例:专业但友好,步骤清晰,避免技术黑话
  4. 需要覆盖哪些场景?
    • 案例:账号问题、硬件问题、软件问题、网络问题、权限问题

把这些答案写下来,作为数据收集的“指南针”。没有明确目标的数据收集,就像没有图纸的建房——盖到哪算哪。

2.2 第二步:数据收集与清洗

2.2.1 数据来源选择

对于IT技术支持场景,数据可以来自:

  • 历史工单记录:最真实的用户问题和解决方案
  • 知识库文章:结构化的解决方案文档
  • 模拟对话:根据常见问题人工编写的问答对
  • 公开数据集:如相关领域的问答数据

重要提示:如果使用公司内部数据,务必做好脱敏处理,移除所有个人信息、敏感信息。

2.2.2 数据清洗实战代码

假设我们有一些原始的工单数据,格式混乱,需要清洗。下面是一个Python清洗脚本示例:

import json import re from typing import List, Dict def clean_text(text: str) -> str: """清洗单条文本""" if not text or not isinstance(text, str): return "" # 移除多余空白字符 text = re.sub(r'\s+', ' ', text) # 移除特殊字符(保留基本标点) text = re.sub(r'[^\w\s.,!?;:\-\'\"()]', '', text) # 标准化引号 text = text.replace('“', '"').replace('”', '"') text = text.replace('‘', "'").replace('’', "'") # 移除首尾空白 text = text.strip() return text def validate_qa_pair(question: str, answer: str) -> bool: """验证问答对是否有效""" # 问题或答案为空 if not question or not answer: return False # 问题太短(小于3个字符) if len(question.strip()) < 3: return False # 答案太短(小于5个字符) if len(answer.strip()) < 5: return False # 问题只是简单词语(如“谢谢”、“好的”) simple_patterns = ['谢谢', '感谢', '好的', 'ok', 'okay', '知道了'] if any(pattern in question.lower() for pattern in simple_patterns): return False return True def process_raw_data(raw_data: List[Dict]) -> List[Dict]: """处理原始数据""" cleaned_data = [] for item in raw_data: # 提取问题和答案字段(适应不同字段名) question = item.get('question') or item.get('query') or item.get('problem') or '' answer = item.get('answer') or item.get('response') or item.get('solution') or '' # 清洗文本 question = clean_text(question) answer = clean_text(answer) # 验证并格式化 if validate_qa_pair(question, answer): cleaned_data.append({ "instruction": question, # Llama Factory标准字段 "input": "", # 如果没有额外输入,留空 "output": answer # Llama Factory标准字段 }) return cleaned_data # 示例:加载和清洗数据 with open('raw_tickets.json', 'r', encoding='utf-8') as f: raw_data = json.load(f) cleaned_data = process_raw_data(raw_data) print(f"原始数据量: {len(raw_data)}") print(f"清洗后数据量: {len(cleaned_data)}") print(f"过滤比例: {(len(raw_data)-len(cleaned_data))/len(raw_data)*100:.1f}%") # 保存清洗后的数据 with open('cleaned_data.json', 'w', encoding='utf-8') as f: json.dump(cleaned_data, f, ensure_ascii=False, indent=2) 

这个脚本做了几件重要的事:

  1. 文本清洗:标准化格式,移除噪音
  2. 字段统一:无论原始数据用什么字段名,都统一到Llama Factory的标准字段
  3. 质量过滤:移除无效的短文本、无意义对话
  4. 格式转换:转换为Llama Factory可识别的JSON格式

2.3 第三步:数据标注与增强

清洗后的数据可能还不够,我们需要进行标注和增强。

2.3.1 人工标注指南

如果需要人工编写或标注数据,提供明确的指南:

# 标注指南(实际使用时是文档,这里用代码展示结构) annotation_guidelines = { "问题要求": [ "基于真实场景,不要编造", "问题要具体,避免模糊表述", "使用目标用户的自然语言", "涵盖不同难度级别(简单、中等、复杂)" ], "答案要求": [ "答案必须准确、完整", "步骤清晰,可操作", "使用友好、专业的语气", "如果涉及多步骤,使用编号或项目符号", "避免使用用户可能不懂的技术术语" ], "格式要求": [ "每个问答对独立成条", "问题以问号结尾(如果是疑问句)", "答案以完整句子结束", "特殊术语首次出现时可简单解释" ] } 
2.3.2 数据增强技巧

当数据量不足时,可以使用这些增强技巧:

import random from typing import List def augment_question(question: str) -> List[str]: """通过同义替换增强问题多样性""" synonyms = { '怎么': ['如何', '怎样', '怎么操作'], '问题': ['故障', '异常', '状况'], '解决': ['处理', '修复', '排除'], '电脑': ['计算机', '台式机', '笔记本'], '网络': ['WiFi', '无线网络', '有线网络'] } augmented = [question] # 同义替换增强 for original, replacements in synonyms.items(): if original in question: for replacement in replacements[:2]: # 每种替换取前两个 new_question = question.replace(original, replacement) if new_question != question: augmented.append(new_question) # 语序变换(简单实现) words = question.split() if len(words) > 4 and '?' in question: # 简单调整语序(实际应用需要更复杂的NLP处理) if words[0] in ['请问', '我想问', '麻烦问一下']: variations = [ ' '.join(words[1:] + [words[0]]), ' '.join([words[-1]] + words[:-1]) ] augmented.extend(variations) return list(set(augmented)) # 去重 def augment_dataset(data: List[Dict], augmentation_factor: float = 0.3) -> List[Dict]: """增强整个数据集""" augmented_data = data.copy() # 随机选择部分数据进行增强 num_to_augment = int(len(data) * augmentation_factor) indices_to_augment = random.sample(range(len(data)), num_to_augment) for idx in indices_to_augment: item = data[idx] question = item['instruction'] # 生成增强后的问题 augmented_questions = augment_question(question) # 为每个增强后的问题创建新数据项 for aug_question in augmented_questions[1:]: # 跳过原始问题 new_item = item.copy() new_item['instruction'] = aug_question augmented_data.append(new_item) return augmented_data # 使用示例 with open('cleaned_data.json', 'r', encoding='utf-8') as f: cleaned_data = json.load(f) augmented_data = augment_dataset(cleaned_data, augmentation_factor=0.2) print(f"增强前: {len(cleaned_data)} 条") print(f"增强后: {len(augmented_data)} 条") 

注意:数据增强要适度,过度增强可能引入噪音。建议增强比例控制在20-30%之间。

2.4 第四步:格式转换与验证

现在,我们需要将数据转换为Llama Factory支持的格式。

2.4.1 Llama Factory数据格式详解

Llama Factory主要支持两种格式:

格式一:对话格式(推荐)

[ { "conversations": [ { "role": "human", "content": "我的电脑无法连接WiFi怎么办?" }, { "role": "assistant", "content": "请尝试以下步骤:1. 检查WiFi开关是否打开;2. 重启路由器;3. 更新无线网卡驱动。" } ] } ] 

格式二:指令格式

[ { "instruction": "我的电脑无法连接WiFi怎么办?", "input": "", "output": "请尝试以下步骤:1. 检查WiFi开关是否打开;2. 重启路由器;3. 更新无线网卡驱动。" } ] 

对于问答场景,我推荐使用对话格式,因为它更符合大模型的训练方式。

2.4.2 格式转换脚本
def convert_to_conversation_format(data: List[Dict]) -> List[Dict]: """转换为对话格式""" conversations = [] for item in data: conversation = { "conversations": [ { "role": "human", "content": item["instruction"] }, { "role": "assistant", "content": item["output"] } ] } conversations.append(conversation) return conversations def validate_conversation_format(data: List[Dict]) -> List[str]: """验证对话格式数据""" errors = [] for i, item in enumerate(data): # 检查必需字段 if "conversations" not in item: errors.append(f"第{i}条数据缺少'conversations'字段") continue conversations = item["conversations"] # 检查对话轮次 if len(conversations) < 2: errors.append(f"第{i}条数据对话轮次不足") continue # 检查角色和内容 for j, turn in enumerate(conversations): if "role" not in turn: errors.append(f"第{i}条数据第{j}轮缺少'role'字段") if "content" not in turn: errors.append(f"第{i}条数据第{j}轮缺少'content'字段") elif not turn["content"].strip(): errors.append(f"第{i}条数据第{j}轮内容为空") return errors # 转换格式 conversation_data = convert_to_conversation_format(augmented_data) # 验证格式 errors = validate_conversation_format(conversation_data) if errors: print(f"发现{len(errors)}个格式错误:") for error in errors[:5]: # 只显示前5个错误 print(f" - {error}") else: print("所有数据格式验证通过!") # 保存为Llama Factory可用的格式 with open('train_data.json', 'w', encoding='utf-8') as f: json.dump(conversation_data, f, ensure_ascii=False, indent=2) print(f"最终训练数据已保存: train_data.json") print(f"数据量: {len(conversation_data)} 条对话") 

2.5 第五步:数据拆分与评估

最后一步,将数据拆分为训练集、验证集和测试集。

import random from sklearn.model_selection import train_test_split def split_dataset(data: List[Dict], test_size: float = 0.1, val_size: float = 0.1): """拆分数据集""" # 先拆分出测试集 train_val_data, test_data = train_test_split( data, test_size=test_size, random_state=42 ) # 再从剩余数据中拆分出验证集 train_data, val_data = train_test_split( train_val_data, test_size=val_size/(1-test_size), # 调整比例 random_state=42 ) return train_data, val_data, test_data def analyze_dataset(data: List[Dict], name: str): """分析数据集统计信息""" total_samples = len(data) # 统计对话轮次 turn_counts = [len(item["conversations"]) for item in data] avg_turns = sum(turn_counts) / len(turn_counts) # 统计文本长度 content_lengths = [] for item in data: for turn in item["conversations"]: content_lengths.append(len(turn["content"])) avg_length = sum(content_lengths) / len(content_lengths) print(f"\n{name}数据集分析:") print(f" 样本数量: {total_samples}") print(f" 平均对话轮次: {avg_turns:.1f}") print(f" 平均文本长度: {avg_length:.1f} 字符") print(f" 总对话轮次: {sum(turn_counts)}") return { "samples": total_samples, "avg_turns": avg_turns, "avg_length": avg_length } # 拆分数据集 train_data, val_data, test_data = split_dataset( conversation_data, test_size=0.1, val_size=0.1 ) # 保存拆分后的数据 datasets = { "train": train_data, "validation": val_data, "test": test_data } for name, data in datasets.items(): with open(f'{name}_data.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2) # 分析数据集 analyze_dataset(data, name.capitalize()) print("\n数据集拆分完成!") print("建议的数据集比例:") print(" 训练集: 80% (用于模型训练)") print(" 验证集: 10% (用于训练过程中调整超参数)") print(" 测试集: 10% (用于最终评估模型效果)") 

3. 在Llama Factory中加载训练数据

数据准备好后,我们来看看如何在Llama Factory中加载和使用。

3.1 通过Web界面加载数据

  1. 登录Llama Factory:访问部署好的Llama Factory Web界面
  2. 进入训练页面:点击左侧菜单的“训练”选项
  3. 选择数据集
    • 在“数据集”部分,点击“选择数据集”
    • 如果你的数据文件已经上传到服务器,可以直接选择
    • 如果没有,点击“上传数据集”按钮
  4. 上传数据文件
    • 选择我们刚才生成的 train_data.json
    • 系统会自动验证格式,如果格式正确会显示“验证成功”
    • 同样方式上传 validation_data.json 作为验证集

配置数据参数

# 关键参数说明 数据预处理: - 最大长度: 根据你的数据平均长度设置,一般设为平均长度的1.5倍 - 填充方式: 通常选择“右填充” - 文本模板: 选择适合你模型的对话模板 训练参数: - 批次大小: 根据GPU内存调整,一般从8开始尝试 - 学习率: 通常使用2e-5到5e-5 - 训练轮次: 根据数据量调整,一般3-10轮 

3.2 数据加载的常见问题与解决

问题1:数据格式错误

错误信息: Invalid dataset format 解决方案: 使用我们上面的验证脚本检查格式,确保是标准的对话格式 

问题2:数据量太大导致内存不足

错误信息: Out of memory 解决方案: 1. 减少批次大小 2. 使用梯度累积 3. 先使用部分数据测试 

问题3:训练过程中损失不下降

可能原因: 1. 学习率设置不当 - 尝试调整学习率 2. 数据质量太差 - 重新检查数据清洗步骤 3. 模型与任务不匹配 - 尝试不同的基础模型 

3.3 监控训练过程

在Llama Factory的训练界面,你可以实时监控:

  1. 损失曲线:训练损失和验证损失应该逐渐下降
  2. 评估指标:如准确率、BLEU分数等
  3. 生成示例:随机查看模型在当前训练阶段的生成效果

如果发现验证损失开始上升(过拟合),可以提前停止训练。

4. 高质量训练集的最佳实践

基于多年的实战经验,我总结出这些构建高质量训练集的最佳实践:

4.1 数据质量优先于数据数量

不要盲目追求大数据量。1000条高质量数据,远胜于10000条垃圾数据。

高质量数据的特征:

  • 准确性:答案必须正确无误
  • 一致性:相似问题有相似答案
  • 完整性:答案完整解决用户问题
  • 专业性:使用恰当的专业术语
  • 友好性:语气友好,易于理解

4.2 数据多样性很重要

确保训练数据覆盖所有目标场景:

# 检查数据多样性的简单方法 def check_diversity(data: List[Dict]) -> Dict: """检查数据多样性""" categories = { "账号问题": ["密码", "登录", "账号", "注册", "解锁"], "硬件问题": ["电脑", "打印机", "键盘", "鼠标", "显示器"], "软件问题": ["安装", "卸载", "更新", "崩溃", "打不开"], "网络问题": ["WiFi", "网络", "连接", "断网", "慢"], "权限问题": ["权限", "访问", "拒绝", "管理员", "共享"] } category_counts = {cat: 0 for cat in categories.keys()} for item in data: content = item["conversations"][0]["content"].lower() for category, keywords in categories.items(): if any(keyword in content for keyword in keywords): category_counts[category] += 1 break # 一个对话只属于一个类别 total = len(data) print("\n数据类别分布:") for category, count in category_counts.items(): percentage = count / total * 100 print(f" {category}: {count}条 ({percentage:.1f}%)") return category_counts # 运行检查 category_distribution = check_diversity(train_data) 

如果某个类别数据过少(比如低于10%),需要针对性补充。

4.3 平衡正负样本

对于某些任务,需要正负样本平衡:

  • 正样本:正确的问答对
  • 负样本:错误的回答(用于让模型学习什么是不该说的)
def create_negative_samples(positive_data: List[Dict], ratio: float = 0.1) -> List[Dict]: """创建负样本""" negative_data = [] num_negative = int(len(positive_data) * ratio) for _ in range(num_negative): # 随机选择一个正样本 sample = random.choice(positive_data).copy() question = sample["conversations"][0]["content"] # 创建错误的回答类型 error_types = [ "答非所问型", # 回答与问题无关 "不完整型", # 回答不完整 "错误信息型", # 包含错误信息 "不专业型", # 语气不专业 ] error_type = random.choice(error_types) if error_type == "答非所问型": wrong_answer = "感谢您的提问。我们公司成立于2010年,主要业务是软件开发。" elif error_type == "不完整型": wrong_answer = "您可以尝试重启设备。" elif error_type == "错误信息型": wrong_answer = "请按Ctrl+Alt+F12键解决这个问题。" else: # 不专业型 wrong_answer = "这个很简单啊,你自己不会弄吗?重启一下就好了。" # 修改回答 sample["conversations"][1]["content"] = wrong_answer negative_data.append(sample) return negative_data # 创建负样本(谨慎使用,比例不宜过高) negative_samples = create_negative_samples(train_data, ratio=0.05) print(f"创建了 {len(negative_samples)} 条负样本") 

注意:负样本要谨慎使用,比例一般不超过5-10%。

4.4 持续迭代优化

数据预处理不是一次性的工作:

  1. 训练后分析:查看模型在验证集上的错误案例
  2. 补充数据:针对错误类型补充训练数据
  3. 重新训练:用增强后的数据重新训练
  4. 评估效果:对比优化前后的效果

建立这样一个迭代循环,持续提升数据质量。

5. 总结

通过今天的内容,我们完整走了一遍Llama Factory数据预处理的实战流程。让我总结几个最关键的点:

5.1 核心要点回顾

  1. 数据质量大于数量:1000条高质量数据胜过10000条垃圾数据
  2. 格式必须正确:Llama Factory对数据格式有严格要求,务必先验证再使用
  3. 多样性很重要:确保数据覆盖所有目标场景,避免偏差
  4. 持续迭代优化:数据预处理是一个持续改进的过程

5.2 避坑指南

  • 不要跳过数据清洗:原始数据往往包含大量噪音
  • 不要忽视格式验证:格式错误会导致训练失败或效果差
  • 不要一次性用所有数据:保留验证集和测试集用于评估
  • 不要过度增强数据:增强比例控制在20-30%以内

5.3 下一步建议

  1. 从小数据开始:先用100-200条高质量数据测试整个流程
  2. 监控训练过程:密切关注损失曲线和生成效果
  3. 人工评估效果:自动指标重要,但人工评估更可靠
  4. 建立数据流水线:将数据预处理流程脚本化、自动化

数据预处理可能是大模型微调中最“枯燥”的环节,但它决定了你模型效果的“天花板”。花时间把数据处理好,后面的训练会顺利得多。

记住:好的数据是成功的一半。在Llama Factory这样的可视化平台上,数据质量更是决定性的因素。现在,你已经掌握了构建高质量训练集的完整方法,接下来就是动手实践了。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 ZEEKLOG星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Read more

网络安全:零暴露公网IP访问本地AI服务的一些方法分享,保障数据隐私!

网络安全:零暴露公网IP访问本地AI服务的一些方法分享,保障数据隐私!

如果我们选择本地部署AI模型(如LLaMA、Stable Diffusion)的核心动机之一是对数据隐私的绝对控制! 但当我们需要从外部网络访问这些服务时,就面临两难选择:要么牺牲便利性(只能在内网使用),要么牺牲安全性(将服务暴露至公网)。我这边介绍一种折中的解决方案,实现无需公网IP、零端口暴露的远程安全访问。 公网暴露的潜在威胁 将本地服务的端口通过路由器映射到公网(Port Forwarding),是常见的“暴力”解决方案。但这带来了显著风险: 1. 端口扫描与暴力破解:你的服务IP和端口会暴露在互联网的自动化扫描工具下,可能遭遇持续的登录尝试或漏洞利用攻击。 2. 服务漏洞利用:如果AI服务的Web界面或API存在未修复的漏洞,攻击者可以直接利用。 3. 家庭网络边界被突破:一旦攻击者通过该服务入侵成功,可能进一步渗透到家庭网络中的其他设备。 怎么解决:基于加密隧道的网络隐身 思路是:不让本地服务在公网“露面”,而是让外部访问者通过一条加密的“专属通道”直接进入内网。这可以通过基于零信任网络的P2P VPN工具实现。 具体实现:以Tailscale/Z

10大主流AI写作痕迹修正工具全解析

10大主流AI写作痕迹修正工具全解析

10大主流AI写作痕迹修正工具全解析 从学术论文到日常写作,轻松去除AI写作痕迹,适配知网、Turnitin等主流检测系统 我帮大家整理了当前主流的10款AI写作痕迹修正工具,涵盖国内学术向、国外专业向和通用全能型三大类别。这些工具能够有效去除AI生成的文本痕迹,帮助学生、研究人员和内容创作者通过知网、Turnitin、维普等主流检测系统。 一、国内学术向AI写作痕迹修正工具 中文,适配知网/维普等 零感 AI - 专业的论文降重与AI痕迹去除平台 零感AI是一个专注于论文降重和去除AI写作痕迹的专业平台,主要服务高校学生和科研工作者。该平台针对知网、维普、格子达等国内主流查重和AI检测系统进行了深度优化,能够有效降低AI生成文本的检测率。 降重+去AI二合一中英文处理保留Word格式知网检测优化 官网地址 https://linggantext.com 笔灵 AI - 学术场景的AI痕迹去除

学术合规优化:paperzz 降重 / 降 AIGC 智能适配知网维普全攻略

学术合规优化:paperzz 降重 / 降 AIGC 智能适配知网维普全攻略

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿paperzz - 降重/降AIGChttps://www.paperzz.cc/weight 在学术写作与成果发表的全流程中,“重复率超标” 与 “AI 生成痕迹检测” 已成为两大核心关卡。随着知网、维普等平台不断升级 AIGC 检测机制(如知网 2.13 严苛版、维普 2.26 严苛版),如何在保证学术表达专业性的前提下,有效降低重复率与 AI 疑似度,成为广大学子与科研人员的迫切需求。paperzz 降重 / 降 AIGC 功能,凭借智能语义优化、深度文本重构、多平台精准适配的核心优势,成为合规学术优化的高效工具。本文将以合规 SEO 视角,结合平台界面设计,全面拆解功能亮点、实操流程与场景价值,为用户提供安全、

Chat took too long to get ready.Please ensure...<VSCode\Copilot>

Chat took too long to get ready.Please ensure...<VSCode\Copilot>

在VScode里面,应用Copilot提问,无法解决问题,该怎么解决呢? 1、在vscode里面,按键  ctrl + shift + p,输入setting,即看到setting.json文件 2、在setting.json文件中添加下面两行   "github.copilot.nextEditSuggestions.enabled": true,   "chat.extensionUnification.enabled":false, 参考图片25、26行 3、保存,重启vscode 4、重启后,点击vscode左下角人头像,查看是否有让授权Copilot的,如果有点击一下授权,解决!!! 如果这样无法解决,建议检查账号是不是不能使用Copilot功能了