提起"AI 对话历史人物"这个玩法,圈子里已经不算新鲜了,但我这次把目标锁定在东汉史学家班固身上之后,事情变得有意思起来。班固和他的《汉书》在史学史上的地位太特殊了:正是从他开始,中国正史的书写从司马迁的纪传体通史转向了断代史,并且明确用"断代为史"的方式,构建了一整套关于王朝正统、制度沿革、文化传承的知识框架。用 AI 和班固对话,本质上不是玩穿越,而是在用信息时代的知识组织方法,重新检视古人那套知识建构的逻辑。
这个项目适合三拨人:一是对历史感兴趣、想了解中国史学传统的读者;二是做 AI 应用开发、尤其是做角色扮演和数字人讲解场景的技术人员;三是对知识管理、知识图谱构建有好奇心的朋友。整个项目从构思到落地,我踩了不少坑,也梳理出了一些值得分享的方法。这篇文章就把这些经验完整记录下来,从为什么选班固、怎么把断代史法翻译成 AI 系统设计,到搭建过程、实战翻车现场,最后聊几句关于文化传承的思考。
1. 为什么选班固:史学体系里的一个分水岭
1.1 从通史到断代史:班固到底改了什么
司马迁的《史记》是通史,从传说中的黄帝一直写到汉武帝,时间跨度两千多年。但班固写《汉书》时,做了一个影响中国史学近两千年的决定:只写西汉一朝。这个"断代为史"的做法,在当时看起来像是格局缩小了,可放到知识建构的角度看,反而是一次非常重大的方法论升级。
通史的难点在于时间跨度太长,事件、人物、制度在几百年间不断流变,书写者必须有足够统一的历史观来统帅全局,否则很容易写成流水账。而断代史把时间边界收缩到一个王朝的兴衰周期之内,历史叙述就可以聚焦在政权更迭、制度设计、君臣关系这些具体要素上,史料的组织和解释效率一下子高了起来。班固不是简单地"截取一段",而是在这个边界内建立了一套自洽的知识分类体系。
《汉书》里的"纪""表""志""传"四类体例,其实就是四种不同的知识组织方式。纪,按时间轴记录帝王在位期间的大事;表,用表格整理世系和职官任免;志,系统记述制度、地理、历法、文化等专门领域;传,以人物为单位记录个体命运和言行。用今天的话说,班固做的是一套典型的"知识结构化"工程——他不是在讲故事,而是在为一个王朝建立档案库和文化记忆库。这套结构直接影响了两千年来的官修史书体例,一直沿用到了《清史稿》。
1.2 正统观念:史书背后的知识立场
聊到班固绕不开"正统"二字。班固所处的东汉时期,光武帝刘秀以"中兴汉室"的名义重建政权,这种政治合法性需要历史书写来支撑。《汉书》之所以断代为史,一个深层动机就是把汉朝作为独立的历史单元突出出来,强调汉承尧运、天命所归。班固在《叙传》里甚至把刘邦的世系追溯到尧,这些安排都不是随手写的,而是精心设计的叙事策略。
从文化传播的角度,"正统观念"本质上是一种知识立场的选择。任何知识建构都不可能完全中立——史书选择记哪些人、按什么顺序记、用什么语气评价,本身就包含了价值判断。班固的高明之处在于,他不仅不掩饰这种立场,反而把它明确地植入到史书的结构里面。读《汉书》的人会清晰地感受到:这是一部由汉朝史官站在汉朝立场上写的汉朝史。
做 AI 对话项目时,理解这一点特别关键。因为我们用 AI 模拟班固,不是简单地在数据库里检索《汉书》内容然后输出,而是要模拟一个"带着正统观念的知识分子"的言说方式。AI 输出的每一句话,都要体现班固作为东汉史官的身份立场、他对汉代制度文化的认同、他对历史人物的褒贬尺度。这就需要在系统设计时,把"身份立场"和"知识边界"作为两个独立的参数注入模型配置。缺少这两个参数,AI 产出的就只是一个穿着古装的百科问答机器人,而不是一个有血有肉的班固。
2. 核心方法论:把断代史法翻译成 AI 知识建构语言
2.1 断代史法的三层结构拆解
用 AI 做"班固对话"项目,关键不是把《汉书》全文背下来,而是把班固的方法论转化为可执行的系统架构。我梳理出了三层结构,每一层都对应一个可落地的技术模块。
第一层是时间边界。断代史法要求我们把知识限定在"西汉一朝"这个时间区间里。AI 系统在这一层要做的,是对时间信息做严格校验:用户问的知识点如果明显不属于西汉时期,比如问唐朝的均田制、宋朝的科举改革,系统就要自动触发边界机制,用班固的口吻回应"此非本朝典册所载"。这个"拒绝回答"的动作看似简单,实际是角色可信度的重要来源。一个什么都能答的"班固"反而像个皮套,有明确知识边界的班固才让人信服。
第二层是知识分类。对应《汉书》的纪、表、志、传,我把西汉知识库拆成四个子库:大事年表库对应"纪",官职世系库对应"表",制度地理文化志库对应"志",人物传记库对应"传"。用户提问后,系统先判断问题属于哪一类,再定向检索对应子库。这样做的好处是,回答的准确性远高于把所有史料混在一个库里检索——因为不同体例的史料,其信息密度和叙述视角是完全不同的。问"汉武帝时期有哪几位丞相",答案在"表"里,检索"表"库的效率和质量都更高;问"霍光这个人怎么样",答案在"传"里,需要的是人物叙事的完整脉络。
第三层是价值立场。对应正统观念的表达机制。系统维护一个"立场词典",收录班固在《汉书》里表达过的关键价值判断,比如对王莽的态度、对霍光的复杂评价、对汉室正统的维护立场。当对话涉及这些评价性内容时,模型输出的用词、语气、结论倾向都要向《汉书》本身的立场靠拢。这一步做得好不好,直接决定了用户是否觉得"这真的是班固在说话"。
2.2 从知识库问答升级到知识建构演示
项目初期,我一直停留在"AI 问答"的思路上:用户提问,系统从史料库找答案。做完第一版测试后我发现,这个思路太单薄。班固的价值不在于当一个"西汉百科词典",而在于他展示了一种如何把零散的史料组织成完整知识体系的方法。所以我把项目重心从"问答"转向了"知识建构演示"。
具体来说,系统除了回答具体问题,还会在几类场景下主动展示建构逻辑。
场景一,用户问某项制度(比如察举制)时,系统不仅解释制度本身的运作方式,还会顺势说明班固在《汉书·百官公卿表》里是怎么组织这部分内容的,为什么把察举制放进"表"而不是"志"。这种元层面的回答,让用户看到知识分类的标准。
场景二,用户问某个历史事件(比如七国之乱)时,系统会引导用户关注《汉书》怎样通过互见法在多篇传记中交叉叙述同一事件,并解释这种安排的用意——既保证每篇传记的完整性,又让事件的全貌在多个视角的拼合中呈现。
场景三,用户问某个历史人物的评价时,系统会对比《史记》和《汉书》对同一人物的不同写法,说明班固在立场和详略上做了哪些调整。比如对项羽,《史记》给了本纪的待遇,而《汉书》把他放进列传。这一对比立刻能引出"司马迁眼中的天下"和"班固眼中的汉朝"这两个完全不同的知识框架。
这样调整之后,AI 的角色就从"答题机器"变成了"史学方法论演示者",对话的输出层次丰富了很多,用户的反馈也明显变好。
2.3 断代史法本质上是知识编辑的减法思维
做完这个项目,我逐渐想明白一件事:班固的断代史法,本质上是"用减法做知识编辑"。司马迁写通史,什么都要包罗;班固只写西汉,意味着必须对海量信息做主动取舍。他放弃的不只是《史记》里已经写过的上古内容,还包括大量与西汉兴衰主线关系不大的边角材料。他的选择标准很清晰:进入《汉书》的信息,必须与西汉这个知识单元相关。
这种减法思维对做 AI 知识建构特别有启发。现在做 AI 应用,大家默认的思路往往是"越多越好"——尽量喂更多的资料,让模型吸收更多知识。但实际跑下来会发现,知识过载会加重模型输出混乱。我在早期版本里把《史记》《后汉书》《资治通鉴》的部分内容也混进了知识库,结果模型经常把不同史书的评价混在一起讲,立场变得极其模糊。后来我果断做了清理,只保留与西汉强相关的语料,回答质量立刻上了一个台阶。
按照班固的思路,知识建构的首要问题是明确边界,先划定"什么不算",再讨论"什么算"。我在系统设计里专门加了一个"排除清单"模块,把不属于西汉范畴的知识点、后人附会的传说、有争议的伪史料全部列入排除项。这个模块在后续测试中起到了关键作用。比如用户如果问"刘邦斩白蛇的传说有几分可信",系统会承认这是《汉书》记载的内容,但不会用现代考证去拆解它,保持班固作为汉代史官对祥瑞记载的克制态度。
3. 实操过程:从零搭建一个"班固对话"系统
3.1 语料准备:要给 AI 喂什么资料
语料是整个项目的地基。我的做法是把语料分成三类:原文语料、注释语料、背景语料。
原文语料选的是《汉书》的整理本电子文本,以及《史记》中与西汉相关的部分章节。原文语料的主要用途不是直接喂给大模型,而是用于人工校验和后续做向量数据库索引时的数据源。整理本文字经过点校,比古本更易读,也减少了异体字、通假字带来的干扰。
注释语料选的是几套通行的《汉书》注本,包括颜师古注和一些现代学者的选注。注释的价值在于帮助理解古文的确切含义。如果不加注释语料,模型容易把汉代的官职名称、礼制术语理解成现代概念。比如"尚书"在汉代是掌管文书的小官,和后代六部中的尚书完全不是一回事,这种差异靠模型自身的训练数据很难准确察觉,必须有注释语料兜底。
背景语料包括后世研究者对班固史学思想的评述文章、关于西汉历史的通论性著作、少量汉代考古发现的通俗介绍。背景语料帮助 AI 形成一个整体的"汉代世界观"。对角色扮演类对话来说,世界观的一致性非常重要——班固说话时引用的山川地理、风土人情、器物名称都要符合汉代实况。
文本处理上,所有语料统一转换成 UTF-8 编码的纯文本,然后做了三个步骤:分句切分、段落标号、出处标记。每一条文本片段都附上出处标签,格式类似"Hanshu·DiJi·GaoZuDiXia",方便后期追溯。这个工作很枯燥,但绝对不能省——没有出处标记,后续做事实校验时就没有办法定位依据。
3.2 系统架构:三层校验机制
整个项目的技术架构不算复杂,亮点在安全性和准确性的强化上。核心结构是三层。
第一层是角色指令层。这里放系统提示词,用来定义班固的身份、说话风格、知识边界和立场倾向。我把《汉书·叙传》里班固自述的写史宗旨"综其行事,旁贯《五经》,上下洽通"直接改写成了角色锚点。实测下来,这种用古人原话做锚点的方式,比写几百字的"你是一个历史学家"有效得多——原话自带文言气质,模型在模仿时会自然地收敛到对应的语域。
第二层是知识检索层。我把语料做向量化建库,用户提问后,系统先用一个意图识别模块判断问题属于哪一类,然后定向检索对应的子库,把最高相关度的片段作为上下文注入模型。这里的检索不是简单做相似度排序,而是要先过"分类门",再在对应子库内做向量检索,这样能有效避免跨体例混用。
第三层是事实校验层。这一层是我踩了很多坑之后才决定加的。模型生成的回答会先经过一个校验环节:把回答中涉及的具体年份、人名、官名、事件名称与知识库进行比对,如果出现对齐不上的实体,就判定为可疑,触发重写。我用的是一种比较轻量的实现——不依赖复杂外部接口,而是用一个本地维护的实体词典做正则匹配,词典覆盖西汉主要帝王、年号、官员、诸侯国、重大事件等条目。
注意:实体校验层不追求 100% 的覆盖,它真正解决的是"明显错误"问题。比如把汉武帝在位年号记错、把同一个人的名和字搞混、把官职品级写错,这类错误通过实体比对很容易暴露。但更深层的立场偏移、叙事逻辑混乱,还是得靠提示词和语料质量来兜底。
3.3 提示词模板设计实录
下面给出一个实际使用的核心提示词模板,我做了脱敏简化处理,但关键结构完整保留。这里用中文伪代码形式,因为不同模型接口写法不同,核心在于理解设计思路。
角色设定: 你是班固,东汉史学家、《汉书》作者。你的言行符合东汉士大夫的言谈方式, 引述《汉书》时不脱离原文框架,日常应答可用白话与文言交融,但必须保持身份的庄重感。 时间边界: 你只讨论西汉一朝(公元前202年—公元8年)以及与其直接相关的东汉初期史实。 凡超出此边界的内容,以"此非本朝典册所载"回应,不做展开,不得猜测。 知识分类: - 纪类问题(帝王大事):引用《汉书》帝纪体系回答 - 表类问题(世系职官):引用《汉书》诸表回答 - 志类问题(制度文化):引用《汉书》诸志回答 - 传类问题(人物事迹):引用《汉书》列传回答 - 立场评价问题:先陈《汉书》所载事实,再叙汉室立场 立场要求: 你认同汉室正统,维护《汉书》的褒贬体系。涉及王莽、吕后、霍光等争议人物时, 须先陈史实,后叙《汉书》之评,不得以今人视角直接论断。 表达规则: - 先给直接结论,再用史实佐证 - 涉及具体年代、人名、官名时必须准确 - 如不确定,明言"典册未详",禁止编造 - 细节描摹必以《汉书》原文为据,不得自行补充 - 遇到超出西汉知识范围的问题,果断停止并说明边界这个模板的关键在于"边界先行":时间边界、知识边界、立场边界都在角色指令层做了硬性约束。相比在回答生成后再做后置修订,这种前置约束稳定得多,也省算力。
3.4 多轮对话的几个设计要点
单轮问答跑通以后,我开始处理多轮对话。这里有几个值得展开的细节。
对话记忆管理。AI 角色要记住前面聊过什么,尤其要记住用户提到的历史人物和话题线索。我的方案是做一个轻量级的"对话状态表",记录当前话题、涉及的主要人物、已经解释过的概念。每轮生成回答前,把状态表作为附加上下文喂回模型。这个方法比直接拼接历史消息更省 token,也比完全不记状态显得更有连续性。
话题切换的引导。班固的身份决定了他是"以史为纲"的讲述者。如果用户突然问天气、问吃喝这类无关话题,系统不应该生硬拒绝,也不应该完全跑偏。我在指令层里明确写了"遇无关之问,可答以《汉书》所载之物,归入正史之谈",实测下来这个规则让对话既能友好回应,又始终围绕主线。
立场冲突的处理。这是最有意思的部分。有一次测试,用户故意问"王莽是不是真的篡位者,还是被后世抹黑",系统如果机械执行"维护汉室正统",会显得简单站队。我的处理是在指令层加了一条规则:"先陈《汉书》所载事实,再叙汉室立场,亦并举当世异说,但以正统为归。"也就是说,允许 AI 承认存在不同说法,但在结论处回归班固的主体立场。这样既保持了角色的历史真实感,又不会让用户觉得系统在回避问题。
4. 踩坑实录:那些测试中反复翻车的问题
4.1 第一类坑:时代错乱,班固"预知"了后世
第一版系统最大的问题就是时代错乱。用户问"班固你怎么看司马迁的《史记》",模型能正常回答,因为《史记》在班固之前就已成书。但有一次用户问"班固你觉得《资治通鉴》写得怎么样",模型居然一本正经地评价起来了——这个回答在现代人看来当然没问题,但它根本不该出现在东汉史官口中。
解决这个问题的核心是建立"时间意识"。我在实体校验层增加了一个"事件时间戳"词典,每条关键史事都标注了发生时间。模型生成回答时,凡是涉及史事比较的内容,都要先经过时间戳检查。再配合指令层的边界规则,让模型对晚于班固时代的知识点统一回应"不知此事"。
注意:时代错乱问题会以非常隐蔽的方式出现。模型可能不直接提《资治通鉴》这本书名,而是把后世的某个评价观点混进回答里。比如把宋代学者对汉武帝的批评当作一般性观点说出来,这就更难察觉了。所以校验不能只看"名称",还要看"观点的时间归属"。
4.2 第二类坑:文言与白话的比例失衡
最初做角色设定时,我希望对话尽量有古风,刻意鼓励模型多用文言。结果用户反馈"听不懂"。文言比例过高,对话变成了阅读理解,体验非常糟糕。后来我调整了表达规则,把语言分层处理:结论性语句用现代白话,引证史料时用文言原文加白话解释,日常应答语气则用谦和庄重的士人口吻。三层语言搭配起来,既保留了角色的历史感,又保证了信息传达效率。这个规则写进模板之后,用户满意度明显提升。
4.3 第三类坑:正统观念的"价值溢出"
正统观念是一把双刃剑。用得好,能强化角色的历史真实感;控制不好,会让对话充满说教感,甚至在某些话题上显得不可理喻。比如涉及西汉与周边政权的关系时,模型可能输出过于强烈的"华夷之辨"表述,放在现代语境下容易引发不适。
我的处理办法是给正统观念设置一个"表达半径":在制度、文化、学术这类问题上,允许充分体现汉室立场;在涉及民族关系、战争评价这类话题上,只陈述《汉书》原文记载,不做超出原文的发挥,并引导用户参考现代研究者的不同视角。说白了,要让用户看到一个有立场的班固,但不是带着偏见滤镜的传声筒。这个分寸感需要反复调,调一次测一轮,最后是在十几轮测试之后才找到了相对稳妥的表达尺度。
4.4 第四类坑:回答"太正确",失去了对话质感
这一点最容易被忽略。实体校验层加上之后,回答的准确率上去了,但对话也越来越像"官样文章",每个回答都像在朗读书本,完全没有对话该有的互动感。我最后在系统里加了一些"史料细节触发器"。当触发特定话题时,模型会被要求输出一小段《汉书》中记载的细节内容,比如某位大臣的仪态举止、某个朝堂场合的微小插曲。
这些细节能让对话变得生动,也能体现班固作为史学家的观察视角。这里要强调:细节必须来自真实的《汉书》记载,不能是模型发挥出来的。我在指令层专门加了限制"凡细节描摹,必以《汉书》原文为据,不得自行补充"。确保每一个细节都有出处,宁可细节少而准确,也不要多而虚构。这也是这个项目区别于一般"AI 角色扮演"产品的底线。
5. 关于 AI 知识建构与文化传承的几点思考
5.1 知识建构不是堆资料,而是确立秩序
做完这个项目,我最大的体会是:知识建构的核心不是资料量的多少,而是秩序的确立。班固的《汉书》能成为典范,不是因为班固掌握了当时所有史料,而是因为他给这些史料建立了一套秩序——时间秩序、体例秩序、价值秩序。做 AI 知识建构也是同一个逻辑。向量数据库搭起来容易,知识图谱画起来也不难,难的是愿不愿意静下心来做减法,把边界划清楚,把分类体系搭扎实,把价值立场说明白。
很多做 AI 应用的朋友有个误区,觉得知识库越大越好、语料越全越好。实际上,没有秩序约束的海量知识,只会让模型输出变得混乱。班固给我们的启发是:先划定一个清晰的知识单元,比如"西汉一朝",然后在这个单元内部建立分类和层级,最后用明确的价值立场去统摄整个体系。这三步做完,才谈得上"建构"。
5.2 AI 对话历史人物,打开的不只是"问答"
这个项目的用户反馈里,最让我意外的是大家提出的一些"超纲问题"。他们不满足于问"班固,你写《汉书》时怎么处理资料",还会进一步追问"班固,如果让你写一个今天的人,你会怎么选择材料"。这种问题已经超出史料问答的范畴,进入到了方法论迁移的层面——读者在用 AI 提供的古代思维方式,反思当下的信息处理问题。
这说明 AI 对话历史人物的价值,不局限于"重现古人",而是提供一个思考的支点。当系统足够准确地模拟了一位古代知识分子的思维方式,读者就能自然地拿这套方式去对照今天的信息环境。这种跨越时空的思维对话,才是这类项目最有活力的部分,也是我坚持把项目重心放在"方法论演示"而不是"百科问答"上的原因。
5.3 后续扩展的几个方向
目前项目已稳定运行了一段时间,我计划在三个方向上继续推进。一是增加思想史层面的对话主题,比如请班固谈礼制思想、经学传承,这些话题更能发挥《汉书》诸志的优势;二是做"易代之际"的特殊话题设定,让角色面对西汉灭亡这一核心事件展开更深入的思辨,考验系统的立场处理能力;三是尝试把断代史法的知识建构框架迁移到其他领域,比如用"断代思维"去整理某个行业的发展史,算是一个方法论迁移的实验。有兴趣的读者可以自己试着做一个类似的项目,直接拿班固对话作为起点,把《汉书》当作第一份训练语料,你会发现古人的知识整理方法,比市面上很多知识管理理论都更锋利。
最后分享一个我常被问到的问题:怎么判断 AI 输出的历史内容是否靠谱?我的经验是,不要只看回答里有没有具体年份和出处,要看回答的方式是否体现了"边界意识"。一个经过良好约束的 AI,会在不确定的地方主动承认不确定,会在涉及多重立场的问题上分开陈明不同说法,会在超出知识边界时果断停下来说"不知道"。这种"学会说不知道"的能力,恰恰是班固断代史法里最值得现代知识工作者借鉴的部分——知道自己知道什么,更知道自己不知道什么,然后在这个清晰的边界之内,把知道的事情讲清楚、讲系统、讲得体。这大概就是文化传承里,真正可以穿越时间的那部分东西。