在Prompt工程领域,角色扮演提示是否能够有效提高大型语言模型(LLM)的性能一直是一个备受关注的话题。为了验证这一假设,写《The prompt report》的研究者(重磅 | 最新最系统的Prompt调查,谁再打着提示词大师的旗号蒙你,把这篇甩给他)进行了大量实证测试,包括使用“天才”和“白痴”两种截然不同的角色进行实验,结果出乎意料。尽管我们常常以为赋予模型一个“天才”的角色设定可以显著提升其表现,但实验表明,事实却恰恰相反。在测试中,设计为“白痴”的prompt竟然比“天才”得分高出2.2个百分点。这样的结果表明,角色扮演提示可能对模型的实际推理能力并没有预期中的积极作用,甚至可能产生负面影响。最近的研究也表明角色提示不但没用,可能会导致LLM性能下降。
本文将详细介绍由多所大学和AI研究机构独立完成的研究,通过对其研究过程、方法、实验结果的剖析,帮助大家了解:什么样的角色提示真正能够有效地提升LLM的表现,以及如何避免无效甚至有害的角色提示设计。
来自卡梅隆和斯坦福的研究者认为,在ChatGPT的系统提示中使用 “You are a helpful assistant” 的做法,是目前商业AI系统普遍在系统提示中定义LLM角色的一个典型案例。这种角色设定的初衷在于期望通过赋予模型一个明确的任务和身份,进而提升其回答的准确性、相关性和用户体验。
然而,近期的多项研究表明,这些看似合理的角色设定对模型性能的提升作用其实是非常有限的,甚至在某些情况下会适得其反,导致模型的表现恶化。研究者们的研究重点是探究在系统提示中添加人物设定是否会对LLM的客观任务表现产生影响。
为了验证这一做法的效果,研究者们构建了一个包含162个角色的列表,涵盖了6种人际关系类型和8个专业领域。他们使用4个流行的LLM系列和2410个事实性问题进行实验,结果表明:与不添加任何角色设定的控制组相比,在系统提示中添加人物设定并不能提高模型在各种问题上的表现。
研究人员为他们的所有实验设计了两种类型的提示:
特定于对话者的提示:为模型分配角色的提示。“你是一名医生”
特定于受众的提示:指定对话受众的 Prompt。“你在和医生说话。”
如上图所示,提示模板非常简单:
然而,进一步的分析表明,人物设定的性别、类型和领域都会影响最终的预测准确率。研究者还实验了各种人物设定搜索策略,发现虽然汇总每个问题最佳人物设定的结果可以显著提高预测准确率,但自动识别最佳人物设定仍然具有挑战性,其预测结果通常不比随机选择好。
这些研究结果表明,虽然在某些情况下添加人物设定可能会带来性能提升,但每个人物设定的效果在很大程度上是随机的。
当前,大型语言模型 (LLM) 的角色扮演能力正吸引着 AI 和 NLP 社区的广泛关注。人们普遍认为,赋予 LLM 特定角色可以增强其在推理任务中的表现。例如,有研究者发现,通过设计一个两阶段框架,在第一阶段利用 LLM 构建特定于任务的角色扮演提示,并在第二阶段引导模型生成符合预设角色的答案,可以显著提高模型在 12 个推理基准测试中的准确率。
这一研究展示了角色扮演提示的潜力,通过特定的任务角色指导模型推理,提高了它的表现。但与此同时,我们也需要注意到另一项研究中的发现,即在系统提示中添加人物设定,例如ChatGPT中常用的“你是一个有帮助的助手”,并不能提高模型在各种问题上的表现。这一发现挑战了人们对角色扮演提示的普遍认知。
进一步的分析表明,人物设定的性别、类型和领域都会影响最终的预测准确率,但人物设定对模型性能的影响在很大程度上是随机的。不同角色对模型表现的影响并不总是稳定的,甚至有时候表现得相当不可预测。例如,在执行医学相关任务时,即便模型被提示“你是一个医生”,它的回答质量和信息准确性与无角色设定时没有显著差异。这表明角色身份的设定并不会让模型在该领域的任务中自动具备更高的专业性。
一个令人意外的发现是,模型对不同角色提示的反应有时会因微小的提示变化而发生显著变化。研究者们指出,人物设定的随机性可能是由模型对输入提示过度敏感所致,因此,对同一任务的不同表达方式会导致模型输出的显著差异,这也反映了LLM在提示敏感性上的固有缺陷。
角色扮演提示是一把双刃剑。虽然角色扮演提示在某些情况下可以提高模型的推理能力,但在另一些情况下却会导致模型给出错误答案。例如,当模型被提示为某些情绪化角色(例如“愤怒的评论员”或“悲伤的观察者”)时,其推理能力明显受到影响,模型的生成内容往往会偏向角色的情绪特征,而忽视了任务本身的客观性。这一发现表明,角色扮演提示有时不仅没有帮助,甚至会对任务的准确性产生不良影响。
更有甚者,某些特定角色的赋予可能会导致模型产生偏见或歧视性的回答。研究者们发现,当模型扮演某些社会角色(如“领导者”或“审判者”)时,输出的内容可能不自觉地带有偏向特定立场的偏见,这对AI在公平性和道德性上的应用提出了巨大挑战。
为了解决角色扮演提示带来的负面影响,浦项科技大学和首尔国立大学的研究者们提出了一个名为Jekyll & Hyde 的新框架。该框架通过整合角色扮演提示和中性提示的输出结果,并利用LLM评估器进行选择,从而缓解角色扮演提示的负面影响,提高模型的推理能力。
Jekyll & Hyde 框架的工作流程如下:
1.角色生成器: 根据输入的问题,自动生成一个合适的角色扮演提示。
2.求解器: 包括两个求解器:
3.评估器: 比较两个求解器的答案,并判断哪个答案更优。
Jekyll & Hyde 框架的优势在于:
与手动设置角色相比,使用 LLM 自动生成角色的优势:
看看 GPT-4 的“Persona”和“Base”之间的差距有多小:
这篇论文表明,即使使用像Jekyll & Hyde这样的框架,角色提示也会降低模型的性能。此外,这项研究使用了较新的模型,如 GPT-4,并表明 “Base ”提示和 “Persona” 提示之间的差距很小。
这强化了上一篇文章中的观点,即“典型的”角色提示(“You are a lawyer”)不会提高基于准确性的任务的性能,尤其是对于较新的模型。
使用像Jekyll & Hyde这样的框架进一步推动角色提示可能有助于提高性能,但由于框架中有多个组件,很难确定收益是由于角色本身还是其他元素(集合或评估者)造成的。
虽然角色设定并未显著提升模型的客观任务性能,但研究者们也对角色设定对用户体验的影响进行了调查分析。研究结果表明,在对话生成和情感支持类任务中,某些角色设定可以提高用户的主观满意度。这表明,角色设定虽然对任务性能没有帮助,但在某些交互场景中,仍然能对用户的体验产生积极的影响。
然而,正如前文所述,这种提升往往伴随着在任务准确性上的妥协。
例如,当用户需要情感上的支持时,赋予模型“同情的朋友”这一角色能够让对话更加感性和贴心,但这也可能导致模型生成不够理性的建议。在这样的场景下,如何平衡用户的情感需求与AI输出的准确性成为了Prompt工程师需要深思的问题。
与其花费大量精力在为模型设定特定角色上,Prompt工程师应更关注如何通过更精确的任务描述和指令来指导模型完成特定任务。对于那些强调准确性和高效性的应用场景,简洁明确的指令往往更有效。角色扮演只是辅助,不能成为核心驱动力。
这项研究为Prompt工程师们提供了一个非常有价值的启示:传统上认为通过赋予模型“角色”能够显著改善其表现的观点并不完全正确,甚至可能具有误导性。在设计系统提示时,更应关注提示本身的清晰度和对任务的指导性,而不是单纯依赖角色设定。
例如,在需要模型进行逻辑推理或事实性回答的场景中,应当尽量使用具体明确的问题描述,而不是泛泛地赋予模型某个身份。研究表明,这种方法对于提高模型的回答准确性和可靠性更为有效。
研究者们的实验还显示,角色提示在很多任务中并没有显著优势,这意味着Prompt工程师应当更加依赖实验数据和评估指标,而不是经验或直觉来设计提示。通过A/B测试等方式不断迭代提示的设计,以找到最能有效指导模型完成任务的方式,而不是拘泥于表面的人性化设定。
本研究为Prompt工程师提供了许多有意义的参考,但仍然有一些问题有待进一步研究。例如,尽管在大多数任务中角色设定未能显著提升性能,但是否存在特定类型的任务或特定设计方式可以真正利用角色来提高模型性能?此外,如何结合用户的个性化需求,在不牺牲性能的前提下最大化用户的体验也是未来的一个重要挑战。
对于Prompt工程师而言,未来的工作方向可能包括:
1.针对性任务的提示优化:针对特定领域或复杂任务,探索更为细化和定制化的提示方式,而不仅仅是单一的角色赋予。
2.用户体验与模型能力的平衡:在优化用户体验的同时,确保提示不会误导模型或让其产生错误的高置信度输出。
3.跨模型的提示泛化:研究如何设计具有良好泛化能力的提示,使其能够在不同类型的语言模型之间保持一致的效果。
通过对角色设定在大型语言模型中的作用进行系统的评估,这项研究明确指出,角色设定并非是提升模型性能的灵丹妙药。Prompt工程师在设计提示时,应以任务目标为核心,通过数据驱动的方式不断优化提示,以实现性能与用户体验的平衡。
角色设定在某些情感交互场景中确实能够增强用户的主观体验,但对于强调准确性、逻辑性和效率的任务,简洁明确的提示显然更加有效。希望本文的详细分析能够为Prompt工程师们提供一些有价值的思考方向,帮助大家在开发AI产品的过程中少走弯路,并设计出更加高效且用户友好的系统提示。你也可以根据这篇文章写一个关于角色自动生成的系统提示以提高你的角色提示的准确性。对于自动化角色生成,我也有一些发现,如果您对此有兴趣,也可以加我的群和我详聊。
文章来自于微信公众号“AI修猫Prompt”,作者“AI修猫Prompt”
【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。
项目地址:https://github.com/n8n-io/n8n
在线使用:https://n8n.io/(付费)
【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。
项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file
【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。
项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file
在线使用:https://vectorvein.ai/(付费)
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0