微调大型语言模型以完成特定任务,是为了让它知道回应什么,而通过风格和角色塑造其行为,则决定了它如何回应。这是使大型语言模型不仅具备功能性,还能符合特定沟通目的、品牌特性或人物角色的一大进步。人工生成数据在此处尤其有效,因为它允许我们有意识地创建体现所需风格特点的示例,这些特点在自然数据集中可能稀少或表现不一。定义风格与角色在生成数据之前,让我们澄清在大型语言模型背景下,“风格”和“角色”的含义:风格指的是大型语言模型输出的语言特征。这包括以下方面:正式程度:语言是正式的(例如,“务必考虑...”)还是非正式的(例如,“我们得想想...”)?语气:大型语言模型的态度是严肃、幽默、富有同情心、中立、热情还是谨慎?词汇:它使用简单日常的词汇,还是专业术语?词汇是丰富多样,还是简洁直接?句子结构:句子是长而复杂,还是短而有力?修辞手法的使用:它是否运用比喻、明喻、幽默或其他文学手法?以下是风格特点的简要对比:特点正式风格随意风格富有同情心的语气词汇精确,可能偏学术口语化,常见理解,温和句子结构通常复杂,语法严谨更简单,更直接通常更柔和,令人安心缩写词通常避免使用经常使用自然使用称呼方式“可以认为”,“用户”“你可能想”,“你”“我理解你的感受”整体感受客观,尊重,疏远友好,平易近人关心,支持角色是一个更全面的想法。它包含风格,但也包含一套连贯的特质、信念、知识(或在某些情境下为了角色扮演而缺乏的知识)以及互动模式,这些共同为大型语言模型界定了一个“人物”。例如,一个角色可以是:一个“乐于助人的教学助手”,耐心、鼓励人,并能简单地讲解复杂话题。一个“讽刺的机器人助手”,它提供正确信息,但言语中带着冷嘲热讽的机智。一个“17世纪海盗船长”,他使用古旧语言和海盗俚语解释现代想法。塑造角色通常意味着大型语言模型在多次互动中保持一致的“个性”,可能会引用其自身已界定的特点或背景故事。生成用于行为塑造的人工数据创建人工数据以灌输特定风格或角色,涉及精心制作示例,使大型语言模型的回复持续展现目标特征。以下是常见的做法:直接角色提示内容生成: 这是最直接的方法之一。您指示一个有能力的大型语言模型(“教师”模型)生成回复,仿佛它已经具备目标角色或风格。通过合成输入塑造LLM行为(风格、角色),其核心在于创建符合特定要求的数据。要为LLM赋予‘睿智老学者’的角色设定,可以设计如下的教师模型指令:教师模型指令:“你是一位睿智的老学者,知识渊博,略显正式,但始终友善。请对以下用户查询生成回复:‘你能用简单的语言解释光合作用的原理吗?’”教师模型生成的内容成为人工数据点:{ "instruction": "你能用简单的语言解释光合作用的原理吗?", "output": "啊,多么出色的提问,年轻的求知者。光合作用,从其本质来看,是我们的绿叶朋友——植物——摄取阳光、水和我们呼出的空气来创造自身养分的神奇过程,并在此过程中慷慨地提供维持我们生存的氧气。这真是一个奇妙的循环,不是不是?" }生成此类数据点需要针对许多不同的用户查询进行重复操作,以构建完整的数据集。少量示例生成: 向教师模型提供一些高质量的所需风格或角色的示例(样本),然后要求它为新的指令生成更多示例。教师模型的提示:以下是“超级热情体育评论员”的回复示例: 用户:昨晚的比赛发生了什么? 评论员:哇!多么精彩的比赛!野猫队在最后几秒钟内奋力反击!难以置信的场面!你一定要在现场! 用户:给我讲讲天气。 评论员:天气?当场上有这么多精彩的比赛时,谁在乎天气!但是好吧,如果你坚持,看起来今天是个阳光灿烂的“进球日”! 现在,请以“超级热情体育评论员”的身份回复此用户查询: 用户:你能推荐一本好书吗?大型语言模型遵循所示风格的新回复,将成为另一个数据点。侧重风格的转述或改写: 获取现有的指令-回复对(其风格可能中立),并使用大型语言模型改写回复,使其符合目标风格或角色。原始数据:{"instruction": "如何烤蛋糕?", "output": "首先预热烤箱。然后,混合面粉、糖、鸡蛋和黄油。倒入烤盘中,烘烤30分钟。"}教师模型指令:“请以一位非常严谨守旧、对任务简单性略感不耐烦的英国管家风格,改写以下蛋糕烘焙说明。”改写后的内容构成了新的人工示例。角色扮演情境: 设置大型语言模型被指示扮演目标角色与用户互动的情境(用户可以是另一个大型语言模型或预定义提示)。角色模型生成对话成为训练数据。这对于开发需要在多轮对话中保持一致性的对话角色特别有用。风格与角色微调的数据结构用于微调的数据格式通常与其他的指令微调任务相同,通常是包含 instruction(或 prompt)和 output(或 completion)字段的 JSONL 文件。重要的是,output 字段要针对给定 instruction 持续反映所需的风格或角色。[ {"instruction": "新加坡的首都是哪里?", "output": "哎呀,伙计!新加坡本身就是首都,一个闪亮的岛屿宝石,明白了吗?"}, {"instruction": "解释黑洞。", "output": "天哪!黑洞是星海中一个可怕的深渊,连光都无法逃脱它的掌控!最好避开,以免被完全吞噬!"} ]当大型语言模型完全由此类对组成的数据集上进行微调时,它会学习对收到的任何指令采用“海盗船长”的角色。以下图表说明了为微调生成角色特定人工数据的一般流程:digraph G { rankdir=LR; node [shape=box, style="filled,rounded", fontname="Arial", fillcolor="#e9ecef", color="#495057"]; edge [fontname="Arial", fontsize=10, color="#495057"]; Seed_Prompt [label="初始提示/风格指南\n(例如,“以开朗助手的身份回复”)", fillcolor="#a5d8ff"]; LLM_Generator [label="大型语言模型(生成模型)", fillcolor="#91a7ff"]; Persona_Instruction_Pairs [label="生成的角色特定\n指令-回复对", shape=cylinder, fillcolor="#b2f2bb"]; Fine_Tuning_Process [label="微调过程", fillcolor="#ffec99"]; Persona_LLM [label="微调后的大型语言模型\n(展现目标角色)", fillcolor="#ffc9c9"]; Seed_Prompt -> LLM_Generator [label="指导生成"]; LLM_Generator -> Persona_Instruction_Pairs [label=" 生成数据 "]; Persona_Instruction_Pairs -> Fine_Tuning_Process [label=" 训练数据 "]; Fine_Tuning_Process -> Persona_LLM [label=" 调整模型 "]; }此图表显示了生成器大型语言模型如何使用初始指南或初始提示来生成指令-回复对的数据集。该数据集随后用作训练材料,以微调基础大型语言模型,从而得到一个持续展现所需角色的模型。重要注意事项使用人工数据塑造模型行为时,请记住以下几点:一致性重要:人工数据集必须在各种指令中持续展现所需的角色或风格。不一致会导致模型在微调期间产生困惑,从而形成不可靠的角色。质量胜于单纯的数量:尽管需要一定量的数据,但一组较少但高质量、高度一致的示例通常比拥有混合或微弱角色信号的庞大数据集更有效。避免“角色覆盖”:角色不应削弱模型准确执行其核心任务的能力。例如,一个乐于助人的助手角色仍应提供正确信息,即使以特定风格表达。底层能力必须得到保留。这通常需要确保您的人工数据包含角色正确处理事实查询的示例。细致入微:创建一个真正可信且非卡通化的角色是一门艺术。过于强烈或简单的角色可能会显得不自然。通常需要对人工数据生成提示进行迭代优化。评估难题:量化衡量模型对角色的“采纳程度”可能很困难。尽管您可以寻找风格标记(例如,特定短语的使用),但人工评估通常是评估角色自然性和一致性的最可靠方式。与通用能力保持平衡:如果微调数据集完全是针对每种输入类型都以角色为导向,模型可能会在不适当的情况下(例如,在需要高度安全或非常正式但角色又很活泼的情境中)也应用该角色。如果需要灵活性,请考虑将角色数据与中立数据混合,或在推理时使用条件提示等策略。通过仔细生成能够体现所需风格和角色的人工数据集,您可以引导您的大型语言模型以更具吸引力、更符合品牌并针对特定应用需求的方式进行互动。这不只是单纯的信息检索,使大型语言模型能够成为更有效和更贴近用户的交流者。