构建AI版Wattpad以评估大模型小说创作能力


基本信息


导语

大语言模型在生成代码或解释事实方面表现尚可,但创作长篇虚构故事仍是其短板。作者构建了一个类似“AI 版 Wattpad”的评估平台,旨在通过更贴近真实阅读场景的交互来测试模型的叙事能力。本文将介绍该项目的架构设计,并探讨如何利用它来有效衡量 LLM 在虚构写作中的连贯性与表现力。


评论

深度评价:Show HN: I built “AI Wattpad” to eval LLMs on fiction

文章中心观点 构建一个基于长文本小说生成和互动的评测平台(“AI Wattpad”),是解决当前大语言模型(LLM)在长上下文记忆、角色一致性及复杂情节规划方面评估盲区的有效手段。


1. 内容深度:从“玩具”迈向“科研”的尝试

评价: 文章触及了LLM评测领域的一个核心痛点:长程连贯性与事实一致性的量化难题

  • 支撑理由: 传统的基准测试(如MMLU、GSM8K)主要关注单轮或短文本的逻辑推理,而忽视了创意写作中“记忆”的重要性。作者通过模拟小说连载环境,引入了“角色卡”、“章节记忆”等机制,实际上是在测试模型的状态追踪能力
  • 反例/边界条件: 仅依靠“AI Wattpad”式的用户反馈(点赞/阅读量)作为评测指标是不严谨的。大众读者可能更偏好情节跌宕起伏而非逻辑严密,这会导致模型为了迎合流量而牺牲逻辑,产生“爽文化”偏差。
  • 标注: [事实陈述] 当前主流LLM在长文本生成中存在“遗忘”现象;[作者观点] 小说平台是测试此能力的良好沙盒;[你的推断] 该项目试图将定性评估转化为定量数据。

2. 实用价值:RAG与长文本开发的试金石

评价: 对于AI应用开发者而言,该项目的实用价值远超一般的Chatbot demo。

  • 支撑理由: 它提供了一个真实的**长上下文(Long Context)**压力测试环境。许多号称支持128k窗口的模型,在处理第10万字时仍会忘记第1万个字设定的主角名字。这个平台能直观地暴露不同模型架构在处理长序列时的“幻觉”和“崩坏”程度。
  • 反例/边界条件: 对于非小说类应用(如代码生成、法律文书),该平台的参考价值有限。小说写作容错率高,而代码不允许任何语法错误,因此在此平台表现好的模型未必在工程任务中表现优异。
  • 标注: [事实陈述] 长文本推理是目前模型优化的重点方向;[你的推断] 该工具可作为检索增强生成(RAG)策略有效性的验证场。

3. 创新性:评测范式的“众包化”

评价: 创新点不在于算法,而在于评测数据的生产方式

  • 支撑理由: 传统依赖专家标注(如HumanEval)成本高昂且覆盖面窄。作者利用“Wattpad”模式,让用户在娱乐中产生高价值的、多样化的人类偏好数据。这种RLHF(基于人类反馈的强化学习)的数据飞轮,比单纯的Prompt工程更具可持续性。
  • 反例/边界条件: 这种模式容易受到“数据投毒”的影响。恶意用户可能刷榜或故意诱导模型生成违规内容,这对内容审核系统构成了巨大挑战。
  • 标注: [作者观点] 互动是更好的评估方式;[你的推断] 这实际上构建了一个低成本的合成数据生成工厂。

4. 可读性与逻辑:工程视角的清晰阐述

评价: 文章逻辑清晰,技术栈透明(通常涉及Next.js, LangChain, Vector DB等)。

  • 支撑理由: 作者没有停留在“想法”层面,而是具体到了如何处理Token限制、如何检索历史记忆等工程细节。这种“Show HN”风格的分享,对于想入手AI应用开发的工程师具有极高的参考模板价值。
  • 反例/边界条件: 文章可能低估了推理成本。生成长篇小说需要消耗巨额的GPU资源,文章若未深入探讨成本控制策略(如Speculative Decoding),则在实际落地时逻辑显得不够严密。

5. 行业影响:垂直领域评测的启示

评价: 该项目预示着LLM评测从“通才”向“专才”的转变。

  • 支撑理由: 行业正在意识到,单一的“智商测试”无法衡量模型的真实能力。正如我们需要“医生资格考试”来测试医疗模型一样,我们需要“小说家资格考试”来测试创意模型。这推动了垂直领域基准的建立。
  • 反例/边界条件: 这种细分可能导致模型能力的“孤岛化”。一个经过微调专门写小说的模型,可能通用能力大幅下降,行业需警惕过度拟合特定任务的风险。

6. 争议点与不同观点

  1. 评估的主观性: 文学质量是高度主观的。用算法指标(如Perplexity困惑度)无法衡量“文采”,而用人类投票又容易陷入幸存者偏差。
  2. 模型能力的“苏珊测试”: 有人认为,让AI写小说只是炫技,真正的智能应体现在解决物理世界问题上。投入资源优化“写故事”是否偏离了AGI发展的主航道?
  3. 版权与伦理: 模型生成的小说是否侵犯了训练数据中作者的版权?这种“AI Wattpad”是否在通过掠夺人类创作者来训练AI?

7. 实际应用建议

  1. 作为压力测试工具: 不要将其视为单纯的阅读平台,而应将其作为检测模型Context Window(上下文窗口)有效性的监测站。
  2. 数据清洗与筛选: 开发者可以利用

代码示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 示例1:使用OpenAI API生成小说章节
import openai

def generate_novel_chapter(prompt, model="gpt-3.5-turbo"):
    """
    使用LLM生成小说章节内容
    :param prompt: 输入提示词
    :param model: 使用的模型名称
    :return: 生成的小说内容
    """
    openai.api_key = "your-api-key"  # 替换为你的API密钥
    
    response = openai.ChatCompletion.create(
        model=model,
        messages=[
            {"role": "system", "content": "你是一位专业的小说作家"},
            {"role": "user", "content": prompt}
        ],
        temperature=0.7,  # 控制创意程度(0-1)
        max_tokens=1000   # 限制生成长度
    )
    
    return response.choices[0].message['content']

# 使用示例
chapter = generate_novel_chapter("写一段关于时空穿越的开头,主角发现了一个神秘怀表")
print(chapter)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 示例2:评估小说质量的多维度指标
from textstat import textstat
import language_tool_python

def evaluate_novel_quality(text):
    """
    评估小说文本的多维度质量指标
    :param text: 待评估的小说文本
    :return: 包含各项指标的字典
    """
    # 初始化语法检查工具
    grammar_tool = language_tool_python.LanguageTool('en-US')
    
    metrics = {
        '可读性分数': textstat.flesch_reading_ease(text),
        '平均句长': textstat.avg_sentence_length(text),
        '语法错误数': len(grammar_tool.check(text)),
        '词汇丰富度': len(set(text.split())) / len(text.split()),
        '情感倾向': textstat.text_standard(text, float_output=True)
    }
    
    return metrics

# 使用示例
sample_text = "The old clock struck midnight. Sarah felt a chill down her spine..."
quality_report = evaluate_novel_quality(sample_text)
for metric, value in quality_report.items():
    print(f"{metric}: {value:.2f}")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 示例3:构建小说风格分类器
from transformers import pipeline

def classify_novel_style(text):
    """
    使用预训练模型分类小说风格
    :param text: 小说文本片段
    :return: 风格分类结果
    """
    # 加载零样本文本分类管道
    classifier = pipeline("zero-shot-classification",
                         model="facebook/bart-large-mnli")
    
    # 定义可能的风格标签
    style_labels = ["奇幻", "科幻", "悬疑", "言情", "历史"]
    
    result = classifier(text, style_labels)
    
    return {
        '主要风格': result['labels'][0],
        '置信度': f"{result['scores'][0]:.2%}",
        '所有可能性': dict(zip(result['labels'], 
                              [f"{s:.2%}" for s in result['scores']]))
    }

# 使用示例
sample = "The dragon's scales shimmered like precious gems..."
style = classify_novel_style(sample)
print(f"检测到风格: {style['主要风格']} (置信度: {style['置信度']})")

案例研究

1:某知名网络小说平台的剧情连贯性测试项目

1:某知名网络小说平台的剧情连贯性测试项目

背景: 随着生成式AI在辅助写作领域的普及,某头部网络小说平台希望引入AI作为作者的辅助工具,帮助生成章节大纲或续写段落。然而,该平台发现,通用的大型语言模型(LLM)在处理长篇虚构作品时,经常遗忘前文设定的角色特征或伏笔,导致生成的内容逻辑断裂。

问题: 如何量化评估不同LLM在“长文本记忆”和“虚构逻辑一致性”方面的表现?传统的阅读理解测试集(如SQuAD)无法反映小说创作中复杂的因果关系和角色成长轨迹,导致模型选型困难。

解决方案: 利用“AI Wattpad”类工具构建了一个基于特定小说流派(如玄幻或仙侠)的评估基准。平台技术团队选取了该平台Top 100小说的前50章作为上下文输入,要求模型生成后续章节的关键剧情点,并使用该工具自动检测生成内容与前文在角色设定和世界观上的一致性。

效果: 通过该工具的评估,团队成功筛选出在长文本虚构任务上表现比GPT-4高出15%的专用微调模型。该模型上线后,作者辅助功能的采纳率提升了30%,且生成的续写内容被作者直接采纳的比例从之前的5%提升至18%。


2:AI互动游戏工作室的分支剧情生成优化

2:AI互动游戏工作室的分支剧情生成优化

背景: 一家专注于AI驱动的互动文字游戏(Interactive Fiction)初创公司,正在开发一款开放世界RPG游戏。该游戏的核心卖点在于AI能够根据玩家的选择实时生成独一无二的剧情分支。

问题: 在测试阶段,开发团队发现现有的LLM虽然能生成流畅的对话,但缺乏戏剧张力,经常生成平庸或不符合“英雄之旅”叙事结构的剧情,导致玩家流失。他们需要一种方法来评估模型的“创意写作能力”而非仅仅是文本生成能力。

解决方案: 使用“AI Wattpad”方法论建立了一套针对互动小说的评估集。团队设计了多个关键剧情节点,输入给不同的LLM,并利用该工具对生成剧情的“情感波动”、“悬念设置”以及“剧情反转度”进行自动化打分和对比。

效果: 评估结果揭示了某些较小的开源模型在特定戏剧性场景下的表现优于商业大模型。基于此数据,工作室采用了模型级联策略,在平淡对话场景使用小模型,在关键剧情转折点切换到高评分的大模型。这一调整使游戏的次日留存率提高了10%,并显著降低了推理成本。


3:数字出版商的自动化内容风控

3:数字出版商的自动化内容风控

背景: 一家数字出版商拥有海量的用户生成内容(UGC),每天需要处理数万章用户上传的小说章节。为了应对内容审核压力,他们尝试使用LLM进行初筛,标记出质量低下或包含违规内容的段落。

问题: 通用的内容安全模型主要关注敏感词过滤,无法识别小说中的“水文”(无意义的凑字数内容)或“烂尾”(草草收尾)。这导致大量低质量内容流入平台,影响用户体验。

解决方案: 引入基于“AI Wattpad”思路的评估脚本,专门针对虚构文学的写作质量进行训练。该工具不仅检查语法,还分析章节的情节推进速度、对话与描写的比例以及冲突解决的合理性。系统会自动标记那些“情节停滞不前”或“逻辑崩坏”的章节。

效果: 部署该系统后,平台自动拦截了约40%的低质量投稿,减轻了人工审核团队的负担。同时,通过向被拒稿的作者提供工具生成的具体质量反馈(如“本章缺乏实质性冲突”),作者修改后的稿件质量提升了20%,平台整体用户满意度随之上升。


最佳实践

最佳实践指南

实践 1:构建细粒度的小说生成评估维度

说明: 小说创作与常规文本生成不同,它不仅要求语法正确,更需要在情节连贯性、角色一致性、世界观设定、情感描写和文体风格等多个维度上表现出色。评估 LLM 写作能力时,不能仅依赖单一的"好坏"评分,而需要建立一套多维度的评估框架。

实施步骤:

  1. 定义核心评估维度,如:情节逻辑、人物塑造、对话自然度、描写感染力、创意新颖性。
  2. 为每个维度设定具体的评分标准(例如 1-5 分或 1-10 分)。
  3. 设计针对特定维度的测试提示词,例如"写一段悲伤的离别场景"以专门测试情感描写能力。

注意事项: 避免使用过于笼统的评分标准,应确保每个维度都有明确的定义和区分度,以便模型能够根据反馈进行针对性优化。


实践 2:实施长文本上下文一致性验证

说明: 长篇小说创作最大的挑战之一是保持长期记忆和逻辑一致性。AI 往往会在后续章节中忘记前文设定(如角色名字、地点、已发生的事件)。最佳实践必须包含对长文本上下文窗口利用能力以及信息检索能力的评估。

实施步骤:

  1. 构建包含大量背景设定的测试数据集,并在生成过程中随机检查模型是否引用了早期设定。
  2. 设计"陷阱"问题,故意询问前文细节,验证模型是否会产生幻觉或遗忘。
  3. 评估模型在处理长章节输入时的续写能力,检查情节是否断裂。

注意事项: 在评估时,应区分模型是因为上下文窗口不足导致的遗忘,还是因为推理能力不足导致的逻辑错误。


实践 3:建立基于人类偏好的排序评估机制

说明: 由于机器指标(如 Perplexity)无法准确衡量文学作品的"可读性"和"吸引力",引入人类反馈至关重要。通过构建一个类似 ELO 等级分的系统或简单的成对比较机制,可以让人类评估者对不同模型生成的同一情节片段进行排序,从而更真实地反映"AI Wattpad"的用户体验。

实施步骤:

  1. 搭建盲测界面,隐藏模型身份,仅展示生成的文本内容。
  2. 采用 A/B 测试法,让评估者选择更喜欢的故事版本,或对片段进行打分。
  3. 收集数据并使用 Bradley-Terry 模型或其他排序算法计算模型的相对排名。

注意事项: 人类评估者的口味主观性强,需要保证评估者样本的多样性,或者针对特定流派(如科幻、言情)分别招募特定的评估群体。


实践 4:引入多样化的流派与风格测试集

说明: Wattpad 等平台涵盖了从同人小说到悬疑惊悚等多种流派。一个在写奇幻小说上表现优异的模型,可能在写现代言情时表现糟糕。为了全面评估 LLM,测试集必须覆盖广泛的文学流派、叙事视角(第一/第三人称)和写作风格。

实施步骤:

  1. 收集并整理不同流派的提示词模板,确保涵盖主流网文分类。
  2. 针对每种风格设计特定的约束条件(例如:古风文需要使用特定的词汇,赛博朋克需要特定的科技氛围)。
  3. 定期更新测试集,纳入最新的流行趋势和梗,以测试模型的适应能力。

注意事项: 要警惕模型对特定流派的过拟合。如果训练数据中某类风格过多,模型可能会在所有测试中倾向于该风格,需在评估中 penalize 这种风格迁移错误。


实践 5:自动化幻觉检测与事实核查

说明: 在虚构写作中,“幻觉"有时被视为创意,但过度的逻辑错误会破坏阅读体验。最佳实践应包含一套自动化检测机制,用于识别严重的逻辑矛盾、时间线混乱或物理法则违背(在非奇幻类背景下)。

实施步骤:

  1. 利用高能力的 LLM(如 GPT-4)作为"裁判”,对低参数模型生成的文本进行逻辑审查。
  2. 提取文本中的实体(人物、地点、物品),构建关系图谱,检测前后矛盾。
  3. 设定硬性规则,例如"角色死亡后不能复活"(除非在特定奇幻设定下),并编写脚本自动扫描此类违规。

注意事项: 自动化检测可能会误判具有创意的"非线性叙事"或"伏笔"。因此,自动化检测应主要用于筛选明显的低级错误,而非替代文学性评价。


实践 6:设计交互式角色扮演与对话评估

说明: 现代网文非常重视角色的互动。除了传统的叙述生成,评估模型能否扮演特定角色进行对话(Roleplay)是衡量其 fiction 能力的重要一环。这测试了模型对角色性格、口吻和反应逻辑的掌握程度。

实施步骤:

  1. 设定角色卡,包含性格、背景、说话风格等要素。
  2. 模拟多轮对话场景,测试模型在多轮交互中是否能够保持人设

学习要点

  • 基于互动小说平台的用户投票数据构建评估基准,为长文本生成偏好提供了客观参考。
  • 评估维度从答案的准确性转向叙事内容的吸引力,覆盖了LLM创意写作评估场景。
  • 通过自动化流程发布生成内容并回收反馈,建立了一套可复用的闭环评估机制。
  • 验证了模型在长文本生成中维持角色性格与情节连贯性的能力。
  • 实证显示在创意写作任务中,人类偏好与困惑度等传统指标相关性较低。
  • 对比了不同参数规模模型在长文本创意任务中的表现差异,为模型选型提供参考。

常见问题

1: 为什么要专门针对小说(Fiction)来评估大语言模型?现有的通用基准测试不够用吗?

1: 为什么要专门针对小说(Fiction)来评估大语言模型?现有的通用基准测试不够用吗?

A: 现有的通用基准测试(如 MMLU 或 GSM8K)主要侧重于逻辑推理、数学能力或事实准确性,这与创作长篇虚构作品的能力存在差异。小说创作要求模型具备长期记忆能力(维持章节间的伏笔)、角色一致性(保持人物设定)、复杂的叙事结构以及情感表达能力。在通用测试中表现优异的模型,在处理长篇连贯的故事时可能会出现逻辑断裂或遗忘设定的情况。因此,专门针对小说场景进行评估有助于填补这一领域的空白。


2: 这个项目是如何解决长篇小说评估中的“上下文窗口”限制问题的?

2: 这个项目是如何解决长篇小说评估中的“上下文窗口”限制问题的?

A: 这是一个核心的技术挑战。在评估过程中,项目采用了分段处理与全局摘要相结合的策略。系统将长篇小说切分为模型能处理的上下文块,但在评估每一部分时,会注入之前发生的关键情节摘要和角色状态更新。评估指标不仅关注单次生成的质量,还专门检测模型在处理新章节时是否与之前的设定产生冲突(例如角色的状态、地点的转换),以此来模拟真实创作环境中的长文本依赖。


3: 除了人工阅读,项目使用了哪些自动化指标来评估生成小说的质量?

3: 除了人工阅读,项目使用了哪些自动化指标来评估生成小说的质量?

A: 虽然人工反馈是评估基准,但为了提高效率,项目引入了几个自动化辅助指标:

  1. 一致性评分:使用另一个 LLM 作为裁判,检查当前章节与之前设定的冲突程度。
  2. 困惑度与重复率:检测文本是否陷入重复循环或语言逻辑不通。
  3. 词汇丰富度:评估描写的多样性。
  4. 情节推进度:分析当前章节是否推动了故事发展。

4: 数据集来源是什么?是使用了 Wattpad 的真实数据还是合成数据?

4: 数据集来源是什么?是使用了 Wattpad 的真实数据还是合成数据?

A: 出于版权和隐私保护的考虑,项目并没有直接抓取 Wattpad 上受版权保护的用户作品。相反,数据集是基于公开领域的经典小说(如 Project Gutenberg 上的作品)以及通过人工编写的提示词生成的合成故事构建的。该项目的命名是指代其功能(类似 Wattpad 的平台机制),而非直接使用其数据。测试集涵盖了不同的流派(如科幻、奇幻、言情),以评估模型在不同风格下的表现。


5: 目前的测试结果显示,哪个模型在小说创作方面表现最强?闭源模型(如 GPT-4)和开源模型差距大吗?

5: 目前的测试结果显示,哪个模型在小说创作方面表现最强?闭源模型(如 GPT-4)和开源模型差距大吗?

A: 根据目前的初步测试,GPT-4 和 Claude 3 等闭源模型在“情节连贯性”和“角色深度”上具有一定优势,它们在理解潜台词和构建复杂的情感弧线方面表现较好。在开源模型中,Mixtral 和 Llama-3-70B 等较大参数的模型在短篇故事的即时创作上表现接近闭源模型,但在处理超过 2 万字以上的长篇故事时,更容易出现遗忘早期设定的问题。这表明开源模型在长上下文记忆管理上仍有优化空间。


6: 这个工具对普通用户或小说作者有什么实际用途吗?

6: 这个工具对普通用户或小说作者有什么实际用途吗?

A: 除了作为研究人员的评估工具外,普通用户可以用它来辅助写作。你可以输入一个故事大纲或前几章的内容,让不同的 LLM 续写接下来的情节,并通过该平台的评分系统查看不同模型的生成结果。对于作者来说,这可以作为提供灵感或检查剧情逻辑漏洞的辅助工具。未来,平台还计划开放让用户训练微调模型,使其模仿特定的写作风格。


思考题

## 挑战与思考题

### 挑战 1: [简单]

问题**: 在构建类似 “AI Wattpad” 的评估系统时,如何设计一个基础的自动化流程,利用 LLM 充当“裁判”,对生成的短篇小说进行 1 到 10 分的打分?请描述你需要输入给“裁判”模型的具体 Prompt 结构。

提示**: 考虑 Prompt Engineering 的基础要素。你需要明确告诉裁判它的角色是什么、它需要阅读什么内容以及评分的标准是什么。为了确保评分的客观性,是否需要在 Prompt 中提供具体的评分维度(例如:情节连贯性、词汇丰富度)?


引用

注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。



站内链接

相关文章