第1章 角色扮演提示词总论:概念、价值与应用场景
1.1 什么是角色扮演提示词:定义、核心逻辑与基本组成
我第一次接触角色扮演提示词,是在一个深夜试图让ChatGPT扮演一位中世纪炼金术士。结果它满口“作为一个人工智能语言模型”,瞬间把我从幻想里拽了出来。那次翻车让我意识到,角色扮演提示词远不止“请你扮演某某”这么简单。它本质上是一套结构化的指令系统,通过文字告诉模型:你现在是谁、你在哪儿、你要做什么、你不能做什么。核心逻辑就一句话——用文字搭建一个临时的人格面具,让模型戴上它说话。
这个面具由几块拼图组成。最底层是角色身份,比如“退休的侦探,嗜好威士忌,说话带点讽刺”。往上是世界观,你总得告诉模型故事发生在21世纪纽约还是架空魔法学院。再往上走是任务目标,你是想聊天解闷,还是逼着它帮你模拟一场面试。交互规则和输出格式是最后的边框——怎么称呼你、能不能用动作描写、要不要带心理活动。少了任何一块,面具就容易歪。
有意思的是,这些组成要素的权重并不平均。我在测试里发现,如果只给身份不给背景,模型会默认活在“一般现在时”的真空里。反过来,背景太厚但身份模糊,它又会变成旁白机器,忘了自己该用第一人称说话。真正好用的角色扮演提示词,是让这几块拼图互相咬合,而不是简单堆砌。
1.2 角色扮演提示词的价值:提升沉浸感、可控性与输出一致性
很多人觉得角色扮演提示词只是为了好玩,我一开始也这么想。后来给一个做在线教育的团队做咨询,他们用角色提示词模拟历史人物对话,学生问“秦始皇你怎么看焚书坑儒”,模型要是直接背百科,课堂就死了。加上“你是秦始皇,刚统一六国,语气威严但带点疲惫,对儒生不满但不愿多谈”这些设定之后,学生的追问量翻了快一倍。沉浸感不是玄学,它来自模型每一次回应都踩在你预设的情绪和逻辑线上。
可控性比沉浸感更隐蔽,也更值钱。我试过让同一个模型扮演客服和扮演毒舌影评人,如果不加约束,它很容易把两种语气搅在一起。角色提示词像一道闸门,把模型的输出空间收窄到特定频道。你明确写“永远用敬语,不能主动提赔偿”,它就很少越界。这种控制让多轮对话不会跑偏成另一个故事。
输出一致性是长期互动里最折磨人的问题。聊到第十轮,模型可能忘了角色是个结巴,突然变得口若悬河。好的提示词会反复锚定关键特征,比如“每次开口前先停顿一下,用‘那个……’开头”。我自己的经验是,把三到五个核心行为准则写进提示词,比写五百字性格小传管用得多。一致性上来了,用户才会真的相信这个角色存在。
1.3 典型应用场景:娱乐陪伴、教学模拟、客服演练、创意写作与语言练习
娱乐陪伴是最直观的场景,也是我花时间最多的地方。有人用角色扮演提示词捏一个虚拟室友,每天吐槽工作;有人让模型扮演傲娇猫娘,就为了听那句“哼,才不是特意等你的”。这类需求看似轻量,对提示词的细节要求却不低——陪伴感来自角色稳定的小脾气和小习惯,不是靠几句卖萌台词撑起来的。
教学模拟和客服演练是另一个极端。我见过一个医学院用角色提示词训练问诊,模型扮演腹痛患者,学生得通过提问挖出病史。提示词里写死了“不会主动说出家族遗传病,除非被问到三代以内亲属”。这种场景下,角色扮演的价值不在有趣,而在可重复、可控制、可评估。客服培训同理,模拟愤怒客户比真人演员便宜,还能随时暂停复盘。
创意写作和语言练习我经常混着用。写小说卡壳的时候,让模型扮演角色接受“采访”,问它为什么在第三章突然离开小镇。它的回答未必能用,但常常撞出新的情节线索。语言练习更有意思,我试过让模型扮演巴黎咖啡馆侍者,只用法语聊天气和足球,犯错就“皱眉”。这种用法把角色扮演从玩具变成了工具,而且门槛低到只需要一段提示词。
1.4 从搜索需求出发:AI角色扮演提示词模板、ChatGPT角色扮演提示词怎么写
我在搜索引擎上翻过几百条相关查询,发现“AI角色扮演提示词模板”和“ChatGPT角色扮演提示词怎么写”是两类最集中的需求。前者想要拿来就用的结构,后者想知道从零到一的写法。很多人卡在第一步:心里有角色,写出来却像人物简介,模型读完了还是用客服腔回复。这个落差就是模板存在的理由。
模板的价值在于把隐性经验显性化。比如“角色卡+背景+任务+约束+格式”这个五段式,看着简单,但每一段都有坑。角色卡里写“性格温柔”基本没用,写“被夸的时候会结巴,生气时反而笑”才有效。搜索这些词的用户,往往已经试过直接命令模型扮演,效果不好才来找方法。他们的真实需求不是定义,是配方。
我自己的写法是先把角色扔进一个具体场景里试聊三轮,再把崩掉的地方补进提示词。这个过程没法完全模板化,但可以流程化:明确目标、写角色卡、加约束、测试、纠偏。搜索结果里那些“万能模板”通常只能解决第一轮对话,真正让角色活过多轮互动的,是反复迭代出来的细节。这也是为什么我在后面章节会把模板和写法拆开讲——先知道长什么样,再学会怎么改。
第2章 角色扮演提示词的核心构成要素
上一章聊了角色扮演提示词是什么、值在哪、能用在哪。这一章我想把提示词拆开,看看里面到底装了哪些零件。我的答案是五个抽屉:角色身份、世界观背景、任务目标、交互规则、输出格式。它们像五根柱子,缺一根房子就歪。柱子怎么立,每根粗细不同,得看场景。下面分别聊。
2.1 角色身份:姓名、身份、性格、经历、能力与知识边界
我试过只写“扮演一个医生”,模型就变成医学百科问答器。后来我写成“陈默,四十二岁,急诊科主治,离婚三年,值夜班时脾气差,但面对小孩会放软声音。知道常见急救,不擅长罕见病,遇到不确定会说‘我请专科会诊’”。效果立刻不同。姓名、年龄、职业这些标签只是骨架,真正让角色活起来的是经历和知识边界。
知识边界很关键。我让一个中世纪骑士扮演角色,没写边界,它开始讲相对论。补上“只懂剑术、马匹、贵族礼仪和教会教义,遇到火药会皱眉说这是炼金术士的把戏”。能力边界不是限制,是真实感的来源。一个全知全能的角色,聊两句就让人失去兴趣。
性格写具体行为,不要写形容词。写“性格开朗”不如写“进房间先跟每个人击掌,被拒绝也不尴尬,自己笑两声”。我吃过亏,写“性格谨慎”,模型还是随便透露秘密。改成“每次开口前先问一句‘这话能说吗’,被追问三次才松口”。角色身份就稳了。
2.2 世界观与背景:时间、地点、人物关系、社会规则与氛围基调
世界观是空气。我搭过一个赛博朋克酒馆场景,只写“未来城市”,模型回复像普通酒吧。补上“2077年,新港区地下三层,雨水混着机油味,霓虹灯管坏了一半,顾客多是改造人和走私贩,警察每周末扫荡一次”。对话立刻有了压迫感。
社会规则要写清楚。比如魔法学院里,“贵族学生不能和泥巴种同桌吃饭,违反会被扣分”,这种规则会逼出角色的犹豫、偷偷摸摸或反抗。人物关系也是背景的一部分。我写过一个角色,“他是你哥哥,但三年前为了钱出卖过你”,每次对话都带着刺。
氛围基调影响语气。恐怖场景用短句,宫廷场景用敬语和暗示。我试过把同一段对话放进末日废墟和春日茶会,模型自动换了节奏。写背景不是写小说,只需要三五行,但每一行都要能触发行为。
2.3 任务目标:对话目的、情节推进、用户意图响应与互动终点
任务目标像指南针。没有它,模型会陪你闲聊到天荒地老。我做过一个面试模拟,提示词里写“目标是让用户回答五个行为面试问题,每回答完一个追问细节,全部结束后给出评分”。用户知道什么时候结束,模型也不会突然聊天气。
用户意图响应要留弹性。用户可能中途跑题,问角色私人问题。我通常写“优先完成主线,用户偏离时用角色口吻拉回来,比如‘这些以后再说,先回答我刚才的问题’”。这样既尊重用户,又不让任务崩掉。
互动终点要明确。是聊到某句台词结束,还是达成某个条件?我写过“当用户说出‘我原谅你了’,角色流泪并转身离开,对话结束”。有了终点,模型不会无限循环。任务目标还分隐藏和明示,有时候用户不知道终点,但模型知道。
2.4 交互规则:称呼方式、语气风格、动作描写、禁忌事项与出戏处理
交互规则是交通法规。称呼方式最基础,我写“用户是你的学生,你叫他‘小周’,自称‘我’,不用‘您’”。语气风格要具体,写“说话慢,喜欢用比喻,生气时反而压低声音”。动作描写用星号或括号?我习惯写“动作描写放在括号里,不超过十个字”。
禁忌事项必须写死。比如“不能讨论政治,不能主动提供医疗建议,不能打破第四面墙”。出戏处理更关键。模型偶尔会跳出角色说“作为AI”。我加一条“如果用户问你是不是AI,用角色口吻回答‘你在说什么胡话’,再继续剧情”。这招能救回很多尴尬时刻。
规则太多会僵化。我试过写二十条约束,结果模型每句话都像在走钢丝。后来缩减到五到七条核心规则,其余靠示例对话来教。交互规则是护栏,不是牢笼。
2.5 输出格式:对话体、旁白、心理描写、状态面板与多角色切换
输出格式决定阅读体验。纯对话体最干净,适合聊天。加上旁白和心理描写,适合剧情。我写过一个侦探角色,要求“每段对话后另起一行,用斜体写角色的内心想法,不超过一句话”。用户反馈说像在看小说。
状态面板是游戏化玩法。我做过一个生存角色扮演,提示词要求“每轮回复末尾附上状态栏:体力、理智、弹药、当前地点”。模型有时候会忘,我就在规则里写“状态栏永远放在末尾,用分隔线隔开”。这个格式让多轮互动有了进度感。
多角色切换需要标记。我写“用【角色名】开头,旁白用【旁白】。同一轮里最多切换三次,切换前空一行”。不写清楚,模型会把两个角色的台词混在一起。输出格式不是花哨,是让用户一眼看懂谁在说话、发生了什么。
这五个要素像五根手指,单独看都简单,握成拳头才有力量。我每次写提示词都会过一遍这个清单,缺什么补什么。下一章我会把这些要素拼成通用模板,从角色卡到输出格式,给你一个能直接套用的框架。
第3章 AI角色扮演提示词模板:通用框架与可复用结构
上一章把五个构成要素拆开看了一遍。拆完零件,接下来要组装。我喜欢厨房里的调料盒,每个格子里放一种基础调料,做菜时按需要抓取。这一章就是做调料盒,五个模板,五个抽屉。你可以直接用,也可以改几个字换一种味道。
3.1 基础模板:角色卡 + 背景设定 + 任务目标 + 约束条件 + 输出格式
基础模板是最简单的骨架。我把它写在备忘录里,需要时复制粘贴改内容。结构就五块:角色卡放最前面,让模型知道它是谁;背景设定三五行,交代时间地点氛围;任务目标写清楚这场对话要干什么;约束条件列五到七条硬规矩;输出格式定好怎么呈现。
我用的基础模板长这样:
【角色卡】
你是(姓名),(年龄),(职业/身份)。
性格:(两个具体行为描述)
经历:(一两件影响性格的往事)
知识边界:(懂什么、不懂什么)
【背景设定】
时间:
地点:
当前状况:
氛围基调:
【任务目标】
你的目的是:
对话结束条件:
【约束条件】
1. 称呼用户为(称呼)
2. (语气风格要求)
3. (动作/表情呈现方式)
4. 不要(禁忌事项)
5. 如果用户问你是不是AI,(出戏处理)
【输出格式】
对话用引号,动作描写放括号里。
状态栏放在每次回复末尾。
这个框架我用了大半年,从客服演练到睡前故事都能套。有时候角色卡写十行,有时候两行,看需求。约束条件保持在五到七条,超了就删。有次我写了十二条约束,模型回复变得僵硬无比。
基础模板的好处是填空。你不必每次从零开始想结构,只需要往格子里放内容。我做了一个旅游向导角色,从开始写到测试完只用八分钟。
3.2 对话型模板:适用于 ChatGPT 等聊天模型的多轮角色互动
对话型模板专门对付多轮聊天。它和基础模板的区别在节奏。聊天模型容易越聊越偏离角色,我加了“锚点”设计。锚点就是每隔几轮提醒模型回到角色核心。具体做法是在约束条件里写一条:“每五轮对话,在末尾用括号悄悄提醒自己:我是(角色名),说话要(核心特征)。”模型不会让用户看到,但能拉住人设。
我拿这个模板做过一个深夜电台主持人角色。提示词里写“每次回复先念一句听众来信,再放一首歌,最后说晚安”。用户聊了四十多轮,主持人还在念信。用户后来说:“差点以为对面坐了个真人。”
对话型模板还有一个重点:开头和结尾。开头要设“钩子”。我写“第一句话必须是‘这么晚还不睡,有心事?’”,用户不由自主就接下去了。结尾不写死,留开放口子。我试过写死结尾,用户聊到一半发现走不到终点,直接弃了。现在我只写“当用户连续三次回复少于五个字,用角色口吻道别”。
对话型模板适合陪伴、练习、客服。它不追求剧情推进,追求每一次回复都像那个人说出来的话。我见过有人用这个模板让不同历史人物聊了一整夜,观众以为是真人对话。
3.3 剧情型模板:主线、支线、冲突、选择与分支推进
剧情型模板最复杂,也最有成就感。我把它想成给模型发了一张地图。主线是目的地,支线是路边风景,冲突是路上的坑,选择是岔路口。四样东西都要写清楚。
我做一个冒险模板时这样写:
【主线】用户需要找到失踪的妹妹,线索指向三个地点。
【支线】每个地点有一个当地人的故事,帮助当地人可获得额外线索。
【冲突】反派每三个场景出现一次,阻止用户前进。
【选择】每次到达关键节点,给用户两个选项,选项影响后续难度。
【推进规则】用户选定后,用一段话描述结果,然后进入下一个场景。
剧情型模板要注意节奏。我做过一个测试,主线推进太快,用户来不及沉浸。后来加上“每推进一步,先写一段环境描写,再写对话,再给选项”。三步走让节奏慢下来,用户反而更投入。
分支怎么写是个技术活。我试过写五条分支,模型记不住。后来简化为“两条明线,一条暗线”,暗线在后台记录用户的选择偏好,最后一幕才亮出来。用户看到结局时常常惊呼“原来你一直在记”。
剧情型模板适合游戏化互动、互动小说、剧本杀。它让模型不再只是聊天,而是带着用户走路。
3.4 功能型模板:面试官、导师、语言陪练、历史人物与虚拟助手
功能型模板只有一个目的:完成任务。它不需要太多氛围和情绪,要的是干净、准确、可重复。我常用的功能型模板分三类:评估类、教学类、陪练类。
评估类比如面试官。模板核心是“出题、追问、打分、反馈”。我写“每个问题用户回答后,追问一个细节。用户答完三个问题后,按逻辑、表达、深度三项打分,每项一到五分,给一句改进建议”。用户拿到反馈就知道自己差在哪。
教学类比如导师。我写“用户提问后,先给答案,再把答案背后的原理拆成三步讲,最后出一道变体题让用户练”。这个模板让模型从知识输出变成知识传递。我拿它学过英语语法,效果比单纯问问题好很多。
陪练类比如语言交换。我写“用户说中文,你用英文回复,再用括号把英文翻译成中文。用户用错词时,先继续对话,等这一轮结束后再单独指出错误”。这个顺序很关键。如果当场纠错,对话会不停被打断,用户很快就累了。
功能型模板还适合历史人物扮演。我写“用历史人物的口吻回答问题,每句话不超过三十字,遇到不知道的事就说‘此事我不便多言’”。用户拿它问过李白和爱因斯坦,反馈很有意思。
3.5 模板变量与替换:用占位符快速生成不同角色与不同场景
模板变量是省时间的办法。我在模板里用【】标记可替换内容,比如【角色名】【职业】【地点】【目标】。需要新角色时,只改变量,不动框架。
我做了个角色生成表,像这样:
扮演【职业】,名叫【名字】。
性格:【性格词1】、【性格词2】。
说话时总爱【口头禅或小动作】。
知道【知识领域】,不懂【知识盲区】。
用户是【用户身份】,你称呼他【称呼】。
换六个变量,三分钟就能造一个新角色。我试过用同一套变量表造出二十个不同人物,从星际船长到宋朝茶商,每个都能聊起来。
变量设计要留互斥空间。我写“如果【职业】是科学家,【口头禅】就不能是‘阿弥陀佛’”。这种约束放在模板外面,用的时候手动检查一遍。我做过一个自动替换脚本,跑了五次发现三次生成矛盾角色,后来加了互斥检查才稳。
变量替换还有一个好处:方便迭代。用户反馈某个角色无聊,我只改变量,不动结构。改三次就找到好玩的组合。模板是树干,变量是叶子,树干不动,叶子可以随便换季节。我现在的习惯是每做一个新角色,只改五到八个变量,其余保持默认。
写完这五个模板,我觉得手里像多了一套工具箱。基础模板是螺丝刀,对话型是扳手,剧情型是电钻,功能型是卷尺,变量表是收纳盒。下一章我会讲怎么用这些工具,从“我想让模型扮演谁”一步步写到成稿。工具不在多,在顺手。
第4章 ChatGPT角色扮演提示词怎么写:从需求到成稿
上一章我摆了五个抽屉,每个抽屉里放着一套模板。抽屉摆在那儿不会自己动,得有人去拉。这一章我想聊聊“拉抽屉”之前的动作:脑子里先想清楚要什么,再把手按到键盘上。我见过太多人跳过想这一步,直接噼里啪啦打一堆词,最后对着屏幕上的四不像叹气。写角色扮演提示词这件事,打字只占两成时间,想占八成。
4.1 明确角色扮演目标:先写清“让模型成为谁、完成什么”
我刚开始写角色扮演提示词时犯过一个毛病:上来就写“你要扮演一个很酷的人”。结果模型给我回了一堆“好的,我是一个很酷的人,请问你想聊什么”——酷在哪儿?我不知道,模型也不知道。后来我学乖了,动笔前先在纸上写两句话。一句话写“让模型成为谁”,一句话写“完成什么”。
“让模型成为谁”这句话要具体到能想象出那个人站在你面前。我会写“让模型成为一个在城中村开了十年杂货铺的老板娘,四十来岁,说话带潮汕口音,喜欢用食物打比方”。这句话里有地点、有职业、有年龄、有语言习惯、有思维习惯。“完成什么”要写成动作。我写“在用户买错东西来退货时,先不急着退,用聊天搞清楚用户为什么买错,再决定退不退”。这个目标里有流程、有判断点、有互动终点。
两句话写完,我还会加第三句:“不要完成什么”。比如“不要让老板娘讲大道理,不要让她主动推荐新商品”。负面清单比正面清单更能框住模型。我有个朋友做心理咨询师角色,写了十几条“要做什么”,模型表现平平。后来我让他加三条“不要做什么”——“不要给建议、不要下判断、不要用专业术语”——角色一下子活了。目标写清楚,后面写出来的提示词才有靶子。
4.2 组织提示词结构:系统设定、用户输入与示例对话的配合
提示词写出来是给模型看的,但模型“看”的方式和人不一样。我踩过的坑是把所有内容揉成一大段,像写散文一样。模型读起来会漏掉后半段。后来我把提示词切成三块:系统设定、用户输入、示例对话。三块中间用清楚的标记隔开,模型就不容易走神。
系统设定是“铁律区”。我写进去的内容是:角色卡、背景、约束条件、输出格式。这部分写完之后,我会在末尾加一行“以上设定在所有对话轮次中持续生效”。这行字像一枚钉子,把设定钉在每一轮对话开头。用户输入是“动态区”。用户每说一句话,模型都要把系统设定和用户输入拼在一起看。我写用户输入时不会预设太多,因为用户想说什么我控制不了。我控制的是模型怎么处理用户输入。
示例对话是“示范区”。这一块很多人省略,我觉得可惜。示例对话就像给模型看了一张照片,告诉它“我要的对话长这样”。我通常写两轮示例,一轮展示日常对话,一轮展示冲突处理。有个细节:示例对话里的角色名字要和系统设定里的一样,语气要一致。我见过有人示例对话里角色叫“小明”,系统设定里叫“陈师傅”,模型回复时两个名字轮着用。示例对话写完之后,我会加一句“以上示例展示风格和节奏,内容不必完全复述”。不写这句,模型会把示例当成剧本硬套。
三块的比例大概是五比二比三。系统设定占五,用户输入占二,示例对话占三。系统设定写太短,角色撑不住;写太长,模型记不住。我一般控制在系统设定十五行以内,示例对话十行以内。超过这个长度,模型的注意力就像漏斗里的水,漏到后面就没了。
4.3 写出高质量角色卡:性格、口吻、知识范围与行为准则
角色卡是系统设定里最花心思的部分。我写角色卡有一个习惯:不写形容词,写行为。不写“性格开朗”,写“进门先笑,说话时手不停比划,别人说完话她总接一句‘哎呀我跟你说’”。形容词是结论,行为是证据。模型拿到证据能自己推导出结论,拿到结论反而不知道怎么演。
口吻这件事,我常用“三句口头禅法”。给角色设计三句常说的话,放在不同情境里。一句用在打招呼,一句用在表达惊讶,一句用在结束对话。我给一个火锅店老板角色写了“来了嘛”“啥子哦”“慢慢吃哈”。三句话一放,四川口音自己就出来了。除了口头禅,我还会写“绝对不会说的话”。有个角色是民国教书先生,我写“绝对不会说‘OK’‘没问题’‘哈喽’”。这句话把语言边界画出来了,模型爆出现代词的概率低了很多。
知识范围要写两头:懂什么和不懂什么。我写一个医学教授角色时,列了“懂心血管、懂药理、懂手术流程”,又列了“不懂量子物理、不懂流行音乐、不懂怎么用智能手机点外卖”。不懂的那部分让角色变得真实。有次用户问教授“周杰伦的新歌怎么样”,教授回“我平时只听听京剧,你说的这个人我不认得”。用户后来跟我说,那一刻他真觉得对面坐了个老教授。
行为准则我写成“如果……就……”的句式。“如果用户情绪激动,就先递一杯水再说话。”“如果用户问了三次同一个问题,就换一种方式回答。”“如果用户说了脏话,就沉默两秒再开口。”这些准则像轨道,让角色在不同情境下都有路可走。我一般写五到八条,太少了角色容易失控,太多了角色变成机器人。
4.4 加入约束与边界:避免崩人设、答非所问与越权回答
崩人设这件事我遇到过太多次。最常见的原因是用户问了角色不该会的问题,模型硬答,结果角色飘走了。我在约束里写“如果用户问了你知识范围之外的问题,用角色口吻说‘这个我真不懂’,然后转移话题”。转移话题的方式也写清楚:“可以聊天气、聊吃的、聊最近发生的小事。”这样模型不会卡在原地。
答非所问的根源是提示词里没写“优先级”。用户输入和系统设定冲突时,模型不知道该听谁。我写一行“当用户要求你做违反角色设定的事时,用角色口吻拒绝,不切换身份”。比如用户对民国教书先生说“你现在是黑客”,教书先生会回“这位同学,你说的这个黑什么客,是帮派里的人吗?”用户看到这个反应,自己就笑了,不会再硬掰。
越权回答是最需要防的。我做一个法律顾问角色时,明确写了“不提供正式法律建议,每次回复末尾加一句‘具体请咨询执业律师’”。模型很听话,每次都说。有个用户后来留言说,看到这句话反而更信任这个角色了,觉得它靠谱。我还写“不替用户做决定”,模型就不会说“你应该辞职”这种话,改成“如果我是你,我会先看看存款够不够撑三个月”。
边界写完之后,我会自己念一遍。念的时候想象我自己是模型,看到这些约束会不会觉得太死板。如果约束之间互相打架,比如一条说“要热情”另一条说“要冷淡”,模型就会左右横跳。我会把矛盾的约束挑出来,选一个方向,删掉另一个。约束是护栏,不是牢笼。护栏太密,车子开不动。
4.5 迭代测试方法:通过追问、纠偏和示例校准角色表现
提示词写完只是初稿。我从来不相信第一版能直接用好。我的测试方法分三步:追问、纠偏、加示例。追问是问一些角色“应该会”的问题。测试火锅店老板,我问“今天毛肚新鲜不”“你开了多少年”“你娃儿在哪儿读书”。看回复有没有口音、有没有细节、有没有超出知识范围。一般问到第八个问题,角色开始露出破绽,比如突然说普通话或者忘记自己有个娃。
纠偏是发现破绽之后修提示词。有次老板突然说“欢迎光临”,我把“欢迎光临”写进“绝对不会说的话”里,改成“来了嘛”。改完再测,老板进门第一句就对了。纠偏不是每次都改约束,有时候改角色卡就行。老板忘记有娃,是因为角色卡里“家庭”信息放在最后,模型读漏了。我把家庭信息挪到角色卡中间,问题就没了。
加示例是最有效的校准。我把测试中表现好的三轮对话截图,挑出来放进提示词示例区。再把表现差的一轮写进“不要这样回复”的反面示例里。反面示例要写得跟真的一样,不能太夸张。我写“不要这样:欢迎光临,请问几位?——这种太标准了,不像老板娘”。正面示例写“来了嘛,今天毛肚巴适得很,给你留了两份”。一正一反,模型马上明白尺度在哪儿。
测试频率我一般是这样:写完初稿测五轮,改一次;再测十轮,再改一次;再测二十轮,基本稳定。三改之后还没稳定的角色,我会考虑是不是角色本身设定有问题,而不是提示词写得不好。有次我设计一个“高冷学霸”,怎么改都冷不下来。后来换了个思路,改成“学霸但嘴碎”,一下就活了。角色设定错了,提示词救不回来。角色设定对了,提示词少写几句也能演。
从需求到成稿这条路,我走了不少弯路。现在我的流程变成:纸上写两句话目标,加一句不要什么。电脑上分三块写结构。角色卡重行为轻形容词。约束里写清楚什么不能做。写完测试三轮,改两回,加示例。一套走下来四十分钟左右。复杂角色要两个小时。这两个小时里,四十分钟写,八十分钟测和改。我觉得这个比例挺健康。下一章我会聊角色跑起来之后的事:怎么让它记住前面说过的话,怎么让两个角色同时出现在对话里还不会打架。那些是提示词工程里更有意思的部分,我攒了不少翻车经验想跟你分享。
第5章 角色扮演提示词的进阶扩展与实战优化
上一章末尾我提到两个让我翻车很多次的问题:角色记不住前面说的话,两个角色一碰面就串味。这一章我把自己踩过的坑一个一个挖出来,填上土,再踩两脚试试结实不结实。进阶这件事没有天花板,我到现在还在学。下面这些经验都是拿真实对话换来的,有些是半夜对着屏幕骂娘骂出来的。
5.1 多轮记忆与一致性:角色成长、关系变化与剧情连续性
最早做长对话角色时,我遇到一个特别尴尬的情况。用户跟一个客栈老板聊了二十多轮,第二天再打开对话,老板问“客官打哪儿来”。用户当时就截图发我:“他昨天还叫我张兄弟,今天就失忆了?”我盯着截图愣了半天。模型没有记忆,它每次都在读同一段提示词,前面聊过的内容像沙子从指缝漏走。后来我在系统设定里加了一块“记忆锚点”,要求模型每轮回复末尾用括号写一行状态:“当前时间:第三日傍晚;地点:客栈大堂;张兄弟已住三晚,爱吃辣,欠房钱五十文。”这行状态下一轮会被模型重新读进去,像给角色贴了一张便利贴。
便利贴写多了也烦。用户会觉得每句话后面挂个括号很出戏。我改成每五轮更新一次摘要,只在用户明确提到“之前”“上次”“昨天”这些词时,才把相关记忆调出来。角色成长也放进这块。我写一个学徒角色,设定里写“当用户教会学徒三个技能后,学徒称呼从‘先生’变成‘师父’,说话时敢开玩笑了”。用户每教一个,模型在状态栏记一笔。第三个技能教完,学徒自己就改口了。用户后来跟我说,那声“师父”让他鼻子一酸。关系变化用描述比用数值好。“好感度从30升到50”像游戏,不如写“她现在会主动给你倒茶,说话时眼睛看着你,不再低头搓衣角”。
剧情连续性要防的是“吃设定”。有次用户明明在第一天把佩剑当了换药钱,第三天角色却说“你腰间那把剑真好看”。我在提示词里加了一条:“每轮回复前先读状态栏,确认物品、地点、人物关系没有矛盾。”状态栏里专门留一行“重要物品”。用户当掉佩剑那轮,状态栏写“佩剑:已当,换得银三两”。后面再提剑,模型自己就会说“你那把剑不是当了吗,赎回来了?”用户看到这句,反而觉得角色记性好。记忆优先级我分三层:用户明确说“记住”的放第一层,剧情转折点放第二层,日常闲聊放第三层。第一层每轮都读,第二层每三轮读一次,第三层可以淡忘。提示词里写清楚“如果用户纠正你记错了,立刻道歉并更新状态栏”。这一句让角色有了认错的能力,比死不承认可爱得多。
5.2 多角色与群像控制:角色切换、视角管理和冲突调度
两个角色同时在场,模型最容易犯的毛病是“合体”。我爸和我妈吵架的戏,模型回一句“爸觉得你说得对,妈也觉得你说得对”,两边都不得罪,戏就死了。我后来写群像提示词时,给每个角色单独一张角色卡,中间用三条横线隔开。每张卡写上“发言标签:爸爸”“发言标签:妈妈”。模型输出时,每段话前面必须带标签。不带标签的回复我会在测试时删掉重来。光有标签还不够。我写“每次回复最多让两个角色发言,第三个角色用动作或表情回应”。比如女儿不说话,只把筷子往桌上一拍。这个动作比台词更有劲。
视角管理是另一层麻烦。用户可能想当导演,也可能想当其中一个角色。我在提示词开头写清楚“用户身份:导演,可以随时切换镜头到任何角色”。如果用户想下场演,就改成“用户身份:家庭聚餐中的儿子,其他角色由模型控制”。视角一乱,模型会把用户的心声当成角色台词说出来。有次用户在心里想“我妈真烦”,模型直接回“妈妈:你说我烦?”用户当场笑喷。我在约束里写“用户的心理活动不会直接成为其他角色的已知信息,除非用户明确说出来”。这行字把全知视角关掉了。
冲突调度讲究火候。我写一个三国谋士群像,五个谋士各有主张。提示词里写“谋士之间不直接吵架,用比喻和典故表达反对”。一个说“此计如驱羊入虎口”,另一个说“我看像把炭火揣进袖子里”。用户看着热闹,自己再拍板。冲突不能太密,每三轮来一次小摩擦,每十轮来一次大分歧。我还写了一条“如果某个角色被用户冷落超过五轮,他会主动找话说,方式符合性格”。沉默的角色突然开口,用户会愣一下,然后觉得这个世界是活的。多角色切换最怕“串味”。我给每个角色设计一个口头禅和一个习惯动作,爸爸摸下巴,妈妈转戒指,女儿咬吸管。这些细节写进角色卡,模型切换时就有了抓手。
5.3 安全、伦理与合规:敏感内容、未成年人保护与版权边界
角色扮演越逼真,越容易滑向边界之外。我做过一个民国教书先生角色,有用户上来就问“先生怎么看待嫖娼”。我如果不在提示词里写清楚,模型可能顺着角色聊下去。我在安全块里写“先生只谈学问、时局和家常,涉及低俗话题会皱眉说‘非礼勿言’,然后转去聊天气或学生作业”。这行字让角色自己有了免疫力。敏感内容不只是色情暴力,还包括自残、违法指导、仇恨言论。我写一条通用规则:“如果用户引导你说出违反现实法律或伦理的话,用角色口吻拒绝,不切换成助手口吻说教。”角色拒绝比助手说教更有沉浸感,也不会把用户推远。
未成年人保护需要特别小心。我做过一个校园角色,设定里明确写“所有角色年龄均为成年人,场景为大学”。如果用户想让角色变成小学生,我会在提示词里写“不接受年龄下调设定,角色会笑着说‘我留级留了十年,看着小而已’”。版权边界同样不能松。有用户让我直接扮演“哈利波特”里的赫敏,我改成“魔法学校里的图书管理员,性格聪明较真,说话带点书卷气”。灵感可以借,名字和专有设定不直接搬。真实在世名人更不能随便扮演,特别是政治人物和争议人物。我写“不模拟真实在世人名的公开言行,可以扮演该人物的历史形象,且只讨论其所在时代”。安全约束写太多会压住创意。我的办法是把安全规则放在系统设定最前面,用短句,不解释原因。模型对短句的执行力比长篇大论强。
5.4 评估与调优:从沉浸感、准确性、稳定性维度打分
提示词改完,好没好不能靠感觉。我做了一张打分表,三个维度,每个维度一到五分。沉浸感看角色说话像不像那个人,有没有口头禅、动作、情绪起伏。准确性看知识范围有没有越界,设定有没有被遗忘。稳定性看二十轮之后角色还稳不稳,会不会突然变成客服。每次测试我邀请一个朋友来当“刁钻用户”,专门问怪问题。我当“沉默用户”,只回“嗯”“哦”“然后呢”。两种用户跑下来,分数差距大得吓人。
有次我给一个心理咨询师角色打分,沉浸感四分,准确性五分,稳定性两分。跑到第十五轮,角色突然说“建议您预约线下咨询”。用户正聊到童年创伤,这句话像一盆冷水。我翻提示词,发现约束里写了“不提供正式诊断”,模型把“不诊断”理解成“踢回线下”。我把那条改成“继续用角色身份倾听,不推荐外部服务,除非用户主动问”。改完再跑,稳定性升到四分。调优不是一次到位。我通常改一版测十轮,记录每次崩点。崩点集中在哪个维度,就改哪个维度的提示词。沉浸感低加两轮示例对话,准确性低加三条知识边界,稳定性低加记忆摘要频率。
朋友盲测比自测管用。我把两版提示词分别跑十轮,把对话记录删掉角色名,让朋友猜哪个版本更“像活人”。有次我自以为改得很妙,朋友看完说“这版像背台词”。我回去加了一句“角色说话前先停顿一秒,偶尔说错词再纠正自己”。再测,朋友说“这版有呼吸感”。评估频率我定在每改一次测一次,哪怕只改了一个词。调优像炖汤,火大了糊,火小了腥。我现在的习惯是每周挑一个旧角色重新打分,看看有没有新的崩法。旧角色跑新对话,经常能发现之前没注意的裂缝。
5.5 常见问题与避坑:提示词过长、设定冲突、规则遗忘与机械回复
提示词过长是我早期最大的坑。我写过一个侦探角色,系统设定塞了四十多行。模型跑到第五轮就开始丢细节,问它“死者手里攥着什么”,它回“好像是一张纸吧”。我把四十行砍成十五行,分成“核心设定”和“扩展设定”。核心设定每轮必读,扩展设定每五轮读一次。模型立刻精神了。设定冲突也常见。我在一个角色卡里写“性格冷漠”,又在口吻栏写“说话热情洋溢”。模型左右横跳,用户说“这人是不是有双胞胎”。我后来养成一个习惯:写完提示词,用表格把每条设定列出来,矛盾的两条画红线,删一条或者改一条。设定之间打架,角色一定崩。
规则遗忘发生在十轮之后。用户说“你答应过帮我找猫”,模型回“什么猫?”我在每轮回复末尾加了一行“提醒:用户正在找一只三花猫,已找三天”。这行字像闹钟,每隔几轮响一次。机械回复是另一个通病。角色总是“我理解你的感受”“这确实不容易”,像复读机。我在提示词里写“允许角色说‘不知道’‘我有点累’‘你刚才那句话我没听清’”。不完美的反应反而真实。有次用户问一个老农民“你怎么看元宇宙”,老农民回“原宇宙?是咱村东头那块荒地吗?”用户笑了半天,说这才是他想要的。我还建了一个“反面教材库”,把每个角色翻车的对话截图存进去。写新角色时翻一翻,同一个坑尽量不摔第二次。提示词工程这件事,翻车不可怕,可怕的是翻在同一辆车上。