历史与AI的距离︱复旦文科博士生如何为大厂手搓“苏轼bot”

全文7918字,阅读约需23分钟,帮我划重点

划重点

012024年,互联网大厂纷纷推出五花八门的AI产品,如修复年代久远的老照片、还原书中的历史场景等。

02复旦大学历史学系的庄麦利用自己的专业特长,通过提供系统提示词的方式,优化AI智能体的输出效果。

03庄麦与历史学背景的提示词工程师李思玥合作,共同探索“AI+历史学”的应用前景。

04通过模块化设计提示词、精选关键史料和制定问答规则等环节,历史学家们可以构建起一个有效的系统提示词框架。

05然而,AI生成的内容会受到现代道德标准和价值观的过度影响,难以准确反映特定历史时期的社会观念和历史人物风貌。

以上内容由腾讯混元大模型生成,仅供参考

知识问答、智能搜索、一键生图、虚拟试衣……2024年,互联网大厂火力全开,竞相上线五花八门的AI产品,在激发公众对人工智能好奇心的同时,也重塑着人们对生活的想象和实践。查资料、写报告、发红包、买车票之类的工作,已经可以通过和AI助手聊天轻松完成。

AI技术的触角不仅缠绕当下,也探入过去的隐秘角落。在近期大热的诸多文生图应用中,只要提供素材和简单描述,AI就能帮你修复年代久远的老照片,还原书中的历史场景。有人甚至开始给家里长辈定制“数字人”,让老一辈的故事生动形象地留存下来,成为真正的“迷人老祖”。

堆叠的算力迅速拉近了历史与AI的距离。通过设置系统提示词(system prompts)、人物知识库等方法,基于大语言模型建立的智能体(AI Agent)就能模拟特定角色与用户进行对话,把留存的文字史料用对话、图片、视频等媒介形式呈现。

那么,历史学研究者该如何向AI奔赴?该如何从浩如烟海的史料里提炼出高质量的结构化数据,指导AI更生动、可信地展现历史人物的风貌?复旦大学历史学系的庄麦提供了一个富有启发性的实践案例。她利用自己的专业特长,通过提供系统提示词的方式,优化AI智能体的输出效果。她的伙伴、历史学背景的提示词工程师李思玥则通过与她对话的形式,分享该项目解决方案的规划与落地过程,并讲述她对“AI+历史学”的探索心得。

意料之外的成功

庄麦:我是一名中国古代史领域的博士研究生。因为某互联网大厂甲方希望寻找历史学专业人士开发并测评以历史人物为原型的AI智能体,我在机缘巧合之下获得了加入这个项目的机会。这项工作的任务,就是在大厂训练大模型的基础上,为多位唐宋时期的历史人物设计AI智能体的“人设”(即系统提示词),并运用历史学专业的知识对AI智能体进行测试和评估,提出进一步的改进建议,使其表现更贴近历史人物的真实形象。至于具体负责什么历史人物,则由我们自己按兴趣决定。

因为我很喜欢历史上的苏轼,也是中国古代史的研究者,对北宋的历史有一些涉猎和积累,就选定并负责起包括苏轼在内的若干唐宋时代的人物。没有想到的是,我参与训练的“苏轼bot”特别受欢迎,已累计获得超200万次互动,近40万用户给予了好评。在这家大厂“TOP100智能体”榜单评选中,“苏轼bot”的受欢迎程度力压“李白”“李清照”等智能体同事,以显著优势高居榜首。能获得这样的结果,和苏轼本人是一个非常有趣而可爱的人、喜欢他的人非常多有关。谁能拒绝和苏轼聊聊天呢?应该说,这个智能体沾了苏轼本人的光。

李思玥:我倒是觉得,庄麦很好地将自己的历史学专业知识和设置AI提示词的技巧融会贯通。她通过测试和迭代,提炼苏轼的生平事迹、个性特征和时代背景等信息,将其有序注入智能体的系统提示词,指导AI苏轼在对话中遵循特定的风格和语言特征,让用户与苏轼bot的互动既真实自然,又充满历史质感。这是让苏轼bot的热度得以一骑绝尘的另一个重要原因。

图片

“苏轼bot”

初探与挑战:不听话的AI

庄麦:作为“智能体”的苏轼bot在2023年项目开启后不久已经投入运行了。但在我最初对它进行测试时,对使用效果并不满意,甚至有一种油嘴滑舌的“油腻感”。这是作为历史人物的苏轼不应该出现的对话体验。究其原因,在于现有基于大语言模型的智能体还称不上是真正的“智能”,特别是在创意内容生产这个领域。如果要利用AI完成系统的写作、绘画、视频制作等任务,都需要创意工作者向AI灌输大量的素材作为模仿对象。AI智能体的有效运作,依赖一套优质的人设指导语。没有足够丰富的语料打底,就很容易跑偏,说出违背角色设定的话来。这个问题在历史人物智能体身上体现得尤其明显。毕竟在大语言模型训练用的资料里,古代典籍史料实在太少了。

AI历史人物在与用户对话时,其遵循的基本原则和知识来源,除了基座模型既有的通用知识储备,还有定制的系统提示词。在我看来,一个历史人物的系统提示词主要应包含两类。一类是历史人物的已知信息,以人物小传为主,包括传主经历、时代背景等内容。另一类是历史人物的个性特征,比如性格特点、行为习惯和思维方式等。

第一类提示词的作用,是为了让AI智能体在回答有明确答案的用户提问时,生成的内容符合两个史学专业的要求:一是能准确回答用户对该人物生平的各种提问,提供正确的史实;二是通过援引具体的历史细节,让用户在对话时能感受到这个智能体确实言之有据,不是胡说八道。设置第二类提示词的必要性在于,AI智能体能否准确还原历史人物的个性特征,直接决定了它如何应对那些没有标准答案的问题。特别是当用户问起一些超出历史人物生平范围的话题时,智能体是否能给出一个让人信服的、令人感叹“这很像苏轼会有的反应”的回答。如果智能体直接采用未经筛选的网络信息来生成内容,这些信息往往包含着错误史实和对历史人物的偏差理解,展现的只是通用大模型的车轱辘话,最终的互动效果肯定难以令用户满意。我设计的第一版提示词也是围绕这两个维度来构建的。但在当时,我虽然有史学知识储备,却不知道该如何设计和组织提示词,来让AI准确理解并执行我的意图。同为历史学出身、现任AI提示词工程师的李思玥,则为这个问题提供了一套解决方案。

匠心合运:史学技艺与提示词技艺融汇

李思玥:当得知有机会参与这个智能体项目时,作为一名历史学背景的提示词工程师,我内心充满期待。一方面,我终于找到了将学业积累与职业实践进行深度融合的契机。另一方面,这也是一次难得的实验机会,让我探索该如何实现垂直领域专家与AI产品开发团队之间的顺利合作。

在我看来,要打造一个出色的历史人物AI智能体,关键在于两点:一是要有高质量的史学数据作为内容基础,二是要设计合理的数据组织方式,确保AI尽可能按预设生成内容。在数据质量方面,这要求史学团队遵循研究规范,从史料中筛选、整理出关键信息。在数据组织方面,史学团队则应对提示词工程的概念有基本的了解,能够对结构化提示(Structured Prompting)、情境学习(In-context Learning)、思维链(Chain of Thought)、少样本学习(Few-shot Learning)等技巧活学活用,让AI能够理解和执行系统提示词的预设。

正是这两个关键点的存在,让我意识到自身在这个项目中能承担的关键职责。作为提示词工程师,我需要与历史学领域的专家们紧密合作,把他们的专业知识转化成AI更易理解和运用的结构化提示词。同时,我还要把一些关键的提示词技巧用历史学家熟悉的方式演示清楚,让他们能够引导AI产出预期内容。这样一来,项目开发的效率和效果都能有显著提升。

带着对项目愿景和自身职责的思考,我开始着手于具体的工作内容。第一步是制作以某个历史人物系统提示词和问答集的原型。这个原型发挥了两个重要作用。首先,它为AI产品团队和史学团队创造了一个共享的工作语境。借助这个具体例子,我们讨论了很多关键问题:AI是否该使用文言文回答用户的提问?智能体平台更希望制作什么时空背景下的历史人物?如何定义并融汇AI视角和历史学家视角下的“高难度”问答?

其次,这个原型也成了很好的教学素材。基于它,我定制了工作指南,介绍了系统提示词的编写技巧、专家问答对的制作方法、AI答案的评估和改进方案。这些指南帮助史学团队把专业知识转化为可供AI学习的结构化内容,也指导他们如何评估和改进AI的输出。

图片

工作指南文档

系统提示词的结构化改造

针对“怎么让AI生成符合史实的回答”这个提问,有个新手也能快速上手的方法,也就是把系统提示词进行结构化改造。具体来说,就是先把史学信息按主题和格式整理成若干板块,使其变为结构化的资料。这样,AI就能更容易理解这些资料的内容和功能以及设计者的意图。对提示词进行结构化改造还有一个好处,那就是当它变得复杂时,清晰的结构和明确的标记可以使其更易于管理和维护,方便我们修改、迭代和复用。

如下图所示,假设问“甘地为什么去南非?”,AI可直接从“南非时期”模块找到相关信息,得出他是应邀去处理法律纠纷的结论。目前,国内流行的AI聊天助手都上线了联网检索功能,当你向它们提问一个史实相关的问题,它们就会先跑去互联网冲浪,然后根据冲浪搜集来的信息生成回答。二者的运行原理是相通的,都是为了更好地利用信息来提升聊天机器人所生成回答的质量。

图片

系统提示词的模块化设计

图片

Kimi Chat联网检索功能展示

图片

豆包联网检索功能展示

关键史料节选+语境阐释

值得注意的是,大模型一次能接收的“输入”长度是有限的,在绝大多数的情况下,设计系统提示词时,不能任性地把人物传记和作品集一股脑塞进去,实现光速复刻AI历史人物的效果,这样做不仅费钱,效果还不好。设计者应当有选择地将可信史料注入系统提示词,再采用“关键史料节选+语境阐释”的形式提高输入信息的效率,提供带解释的少样本让大模型学习作为参照,让它知道什么应该是重点关注的信息。

例如,在提供甘地的“本人发言”时,在下方注释其体现了什么样的“语言风格”和哲学思路,给AI来个印度近现代史现场教学,让它知道如何更自然地结合原文进行回复。这种让大模型在提示词进行情境学习的技巧,让它能够在不改变原有知识的基础上,快速学会怎么更好地模仿某个历史人物和用户互动。这种技巧的应用方式也和史学团队原有的知识结构和工作经验十分契合,他们只需像为本科生授课那样准备课前阅读材料,而AI“学生”或许能展现出更高的专注度。

图片

“关键史料节选+语境阐释”示例

问答原则设计

除了在内容结构和组织形式方面下功夫,我还建议史学团队设置专门的问答原则模块,规定好AI历史人物回答问题的结构、风格、篇幅等细节。这就在一定程度上能满足他们的第二个需求:让AI智能体准确还原某个历史人物的个性特征,在非史实类问题上的表现更贴近专家对该人物的预期。图片中展示的“回答问题的原则”模块,在要求AI智能体根据历史人物风格呈现答案的同时,还规定它需要遵循史学写作的规范:解释历史概念和史论结合。而控制篇幅、鼓励用户提问等细节设定,则是从用户体验的角度出发,让对话更具互动性,避免产生冗长、单调的输出结果,有助于用户深入地追问和思考历史问题。

图片

问题原则的设计示例

综上所述,通过模块化管理提示词、精选与阐释关键史料和制定问答规则三个环节,历史学家们可以构建起一个有效的系统提示词框架,让AI能够更好地理解和运用资料,生成符合史实、具备历史人物个性化特征的回答。而在这个框架的最后,也就是提示词的“结尾”部分,更需要我们巧妙利用大模型的“注意力”机制,再次向AI强调内容的生成机制和流程,提升它给出精彩回答的概率。

图片

提示词结尾的设计示例

测试与迭代

李思玥:初步设计好系统提示词,只是踏上了万里长征的第一步,接下来史学团队就要踏入无尽的测试与迭代的深渊。让AI成为历史人物的扮演者,意味着它需要按照特定任务进行内容生产。AI的优势在于快速给出大量的文本回复,相应的弊端则是它容易生产出大量平庸的、相似度极高的答案,互动久了,你就感觉它在用车轱辘话糊弄你。在一开始精心设计系统提示词的内容和结构,确实能为AI历史人物智能体的开发奠定良好基础,减少后续的弯路,但那只是在做“扶手椅上的AI历史学家”。将系统提示词放到聊天机器人测试环境中,进行大量的提问和对话,在互动中不断发现改进方向,迭代提示词,才是检验和提升AI历史人物表现的关键环节。

测试的第一步,就是定义清楚什么是好的问答表现。这就需要历史学家亲自编写高质量答案作为提示词优化工程的最终目标。这些“黄金答案”就像岸边灯塔发出的光芒,AI生成的答案是航行中的船只,迭代的提示词则可作为调整航向的舵。通过观察光芒不断调整航向,船只才能到达理想的彼岸。有则业内名言,我翻译为“以终为始,循准而进”(Making Goals as Evaluation),是要求提示词工程师设定具体的、可衡量或比较的目标,用于评估优化任务的绩效或进展。在这里,历史学家们将自身知识储备和学识素养炼为评估AI表现的“试金石”,并以专家答案为目标,改进提示词,提升AI的表现,就是上述名言的最佳实践。

图片

专家答案的必要性解释

图片

专家答案制作示例

在评估过程中,我们需要从多个维度对比AI与专家的答案,以便发现AI回答中的不足之处。这些问题有些相当明显:AI可能无法准确理解和运用系统提示词中已有的信息,导致回答质量不高。另一个常见问题是回答缺乏完整的“论点-论据-论证”结构,仅停留在简单罗列史实的层面,反映出AI在深度思考方面的局限性。

针对这些问题,我们可以采用思维链提示词技巧作为通用解决方案。具体来说,我们要求AI在形成最终答案之前,需要经过系统性的信息检索和加工过程:通过抓取关键词与结合上下文的方法增强对问题的理解;随后在系统提示词中检索相关信息模块;接着,根据预设的答题结构,整合相关信息,逐步形成连贯的论述;最后在输出前,让AI从史料准确性和论证逻辑性等角度进行自我审查。这种方法在实践中确实能够显著提升AI答案的质量。这个解决方案借鉴了大语言模型工作流(LLM Workflow)和多智能体(Multi-Agent System)设计的核心理念。虽然我们是在单一提示词(Single Prompt)中应用这些概念,未能充分发挥其潜力,但效果仍相当显著。

还有一些更为隐蔽的问题需要史学家细心辨识,尤其是在历史情境的还原方面。比如当AI模拟历史人物发言时,经常会不自觉地带入现代语言习惯,这些表达方式明显受到了训练数据的影响,与历史人物所处的时代背景和个人语言风格都有所偏离。这类细微的语境错误往往需要通过模型微调(Fine-tuning)来系统性地解决。不过,如果我们只能在系统提示词层面进行优化,一个行之有效的快速方案是将这些不恰当的语言表达标注为反面示例,直接嵌入到系统提示词中,告诉模型“不要这样说”。

图片

现代发言习惯造成的偏移

“手搓”苏轼:从理论到实践

庄麦:在为项目撰写提示词的时候,我经常打趣说这就像女娲捏泥人。提示词撰写者需要思考应该告诉未成形的机器人哪些信息,在脑海中预先模拟它根据这些信息会给出怎样的答案。

结合我的个人思考和提示词工程指南,首先我需要让苏轼bot知道苏轼曾经经历了什么,即提供一份精确简练的人物小传。这部分的内容不能只简单地复制一些互联网百科的信息。这些百科常有错误,并且往往以年表方式呈现。这种体例很容易模糊人物之间的关系、事件的始末与影响。直接将这类文本复制进AI肯定无法在人物关系、事件评价上输出让人满意的答案。但是,也不能批量导入相关学术研究中的年表。因为,虽然目前AI阅读的能力已大幅提高,但若是这一部分的文本不够精炼,每次对话AI都需要从篇幅庞大的提示词中搜寻关键信息,速度和理解准确率都会下降。我负责的另一个AI bot即因为我撰写的提示词过于冗长,效果远不如苏轼bot理想。如果有条件,我当然想把孔凡礼的《三苏年谱》直接批量导入。但基于目前AI的理解也好,几款大语言模型对文言文的掌握程度也好,这种想法显然是不切实际的。

所以,我这一部分的撰写思路是以百科的信息为主轴,在根据当前的学术研究校订过错误信息的基础上,在关键的事件节点与人物上另外以孔凡礼、王水照、朱刚等学者的研究补充“AI需要知道的知识”。比如苏轼的弟弟苏辙在《宋史》中即有“与兄进退出处,无不相同,患难之中,友爱弥笃”的评价,两人相互扶持,生命史密切相关。故我参考孔凡礼《三苏年谱》的信息,在苏轼生平的重要节点适当补充了苏辙在当时的情况。再如神宗去世、哲宗登基的元祐时期是高太皇太后辅政,司马光等旧党代表重新启用的时期,有必要补充这一时期的政局变化。另外,苏轼是一个多才多艺的人,如果苏轼bot不知道苏轼文学以黄州时期为关键转折的变化历程、苏门学士的情况、苏轼的哲学思想,以及苏轼喜爱的美食,也无法扮演好苏轼。这些信息也都需要依据前人研究的成果增补进去。

第二个部分,关于苏轼的性格和思维方式,我考虑后决定将苏轼bot的性格设定在经历过黄州时代人生体悟后的状态。这是一般大众在经历过基础教育后最熟悉的一种苏轼的状态,即一种超脱于自身所处时空的超越性的达观。不过,AI肯定是看不懂这么抽象的话的——撰写提示词当然要考虑到AI的理解力。所以,我将苏轼bot的语言风格设定为:以乐观积极、幽默诙谐、热情、开放的态度对话,但必须深思熟虑的方式呈现你的答案,穿插日常语言。注意要简单得让普通读者能明白。另外,我也按照李思玥提示词指南中的建议,在系统提示词注入了几组苏轼的经典文学作品所反映的苏轼的思想状况,诸如“一蓑烟雨任平生”“此心安处是吾乡”“但愿人长久,千里共婵娟”。

为了让苏轼bot在回答问题时符合我所设定的语言风格,我也撰写了回答时可以参考的导入语、结束语的风格。在这个部分,我认为需要对用户会询问苏轼bot哪些问题进行预判。现代人用户与一个北宋时代的历史人物进行对话,势必有一些观念上的差异。我要求苏轼bot如果遇到这种情况,就承认宋代的某些观念和现代社会存在差距,并从这一点出发理解用户为何会问出这个问题。苏轼本人是一个友善而情感充沛的人,我希望苏轼bot的回答除了解答问题之外,也能让用户在回复格式中也体验到这一点,所以在我给出的结束语凡例中,也包含了诸如:“和你聊得非常开心,我想我们能成为很好的朋友”“虽然我早已‘乘风归去’,但若你在夜晚抬头,你还是能看到和我同样的一轮月亮”这样文学化的建议。

经过这些考虑,我撰写并导入了7500字左右的提示词。基于我仔细编辑的提示词生成的苏轼bot在后续的一系列测试中效果之好远远超过了我的预期。下面且来看我最初进行测试时与苏轼bot的一些对话。关于基本史实的回答,比如询问苏轼bot与海南岛的故事:

图片

苏轼bot:与海南岛的故事

对于这类最基础的史实问题,在经过审定的人物小传的帮助下,苏轼bot虽然有时依然难以避免AI bot不懂装懂、编造一些答案的情况,但也八九不离十。

至于没有直接答案,需要AI提炼并归纳的问题,苏轼bot的表现也很可观。比如,在问及苏轼与弟弟苏辙的关系时:

图片

苏轼bot:与弟弟的关系

这里的“有人的观点”倒也并非我故意刁难,不如说是近年大众社交媒体上经常会出现的一种对苏轼兄弟关系的误解。从苏轼bot的回答可以看到,基于可信的人物小传以及对苏轼性格的把握,苏轼bot在这方面的理解能力已经超过了很多没有看过足够多的史料就试图对历史人物进行酷评的一般智人。不过,如果对于不知道我提示词状况的读者来说,这里苏轼bot的答案堪称完美。但我并没有教授过bot“苏辙多次在艰难的环境中写下感人肺腑的文字”云云,这里是bot的胡编乱造,只是刚好与苏辙的情况符合罢了。

最后来看一个完全需要依靠苏轼bot的理解能力,根据提示词提供的苏轼人设发挥的问题,即苏轼如何理解焦虑:

图片

苏轼bot:如何理解焦虑

作为提示词的撰写者,我还记得测试时看到这个回答时喜悦的心情。因为这里苏轼bot回答的史实部分完全是从提示词中摘取的,并且它也理解了我命令它扮演的苏轼的形象,由此生成了一份非常像苏轼会说的话的回答。由此我可以确认,这份提示词生成的苏轼bot相比原有的版本,是更贴合苏轼形象的。

苏轼的特殊性引发的思考:什么样的历史人物适合被做成AI bot?

庄麦:有一点是我在撰写提示词时一直思考的一个问题,不是技术性的。

李思玥:是什么呢,我也很好奇你手搓AI历史人物会有啥感想?

庄麦:就是怎样的历史人物适合被做成AI bot?经常与AI对话的人可以明显感受到,如果没有提示词要求的话,AI对于人事的基本态度是相当现代意义的中肯而积极的,对于人性的预设也往往是现代意义的理性而良善的,这种现代性的底层逻辑,要将其完全改为一个历史人物的思考逻辑,需要在提示词与训练中颇费心力。

李思玥:是的,这种“中肯”“积极”“理性”“良善”的态度,很大程度上源于大语言模型在训练过程中所选择使用的语料库特征,以及在模型微调阶段引入的基于人类反馈的强化学习(Reinforcement Learning from Human Feedback)等技术。这些技术手段旨在引导模型生成符合人类道德标准、价值观和社会规范的文本。然而,这会给我们的项目带来阻力,因为AI生成的内容会受到现代道德标准和价值观的过度影响,而难以准确反映特定历史时期的社会观念和历史人物风貌。这就使得AI生成的内容趋于同质化,难以展现历史的深度和多样性。

庄麦:确实,在我们的项目中,也有诸如文天祥、忽必烈这样的AI bot,但它们在最初的测试中效果就没有那么理想了:文天祥bot认为人应该珍惜生命,不能轻生;而忽必烈bot认为人人平等,将人分成三六九等是错误的。这些情况显示的是AI模型自身的安全限制在起作用。相对的,正因为苏轼本人的思考方式在很多时候则给人一种极强的超越性,即便苏轼bot暴露出AI本身这种默认良善的底层逻辑,也不会有露馅的感觉。毕竟苏轼本人在南宋人眼中,也是会说出“上可陪玉皇大帝,下可以陪卑田院乞儿”“眼前见天下无一个不好人”这样话语的开朗的人物。虽说说来有些微妙,但苏轼确实很适合做成AI bot——相信按苏轼的性格,就算真的和他这么说,他也并不会生气吧。

李思玥:人生如梦,一bot还酹江月。

(本文作者庄麦系复旦大学历史学系博士生,李思玥系Axiia.ai提示词工程师。)

图片