ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【AI项目】AI辅助小说创作系统:规则引擎与LLM双校验的长文本一致性工程实践

【AI项目】AI辅助小说创作系统:规则引擎与LLM双校验的长文本一致性工程实践 ✨文末附开源仓库地址做 AI 应用落地的同学可以直接拉下来跑。⚠️ 本文为技术演示项目仅供学习和交流参考不建议直接用于生产环境。当 LLM 遇见小说创作如何解决角色太多记混、时间线出错、伏笔忘了收这些痛点前言AI 写长文本最大的痛点是什么不是写不出来是写完就忘——角色死了后面又出场、左手断了还用左手写字、伏笔埋了不收。让 AI 生成内容容易让 AI 生成的长文本和已有设定保持一致才是真正的工程难题。最近在关注 AI 长文本生成与一致性保障的落地实践把这套问题在真实场景里跑了一遍写作流程状态机 规则引擎5 条硬矛盾 AI 软矛盾双重检测 章节信息自动提取存档一个完整的 AI 辅助创作闭环。把字段不一致、状态机流转、信息提取这些坑都沉淀进这套可运行 Demo 里了文末附开源仓库地址做 AI 内容生成落地的同学可以直接拉下来跑。项目目标为小说作者打造一套 AI 辅助创作系统作者提供大纲后AI 逐章生成内容每章完成后自动进行一致性审查含软矛盾检测支持对话式修改和风格指定。技术挑战如何让 AI 生成的长文本与已有设定保持一致如何检测角色左手断了但用左手写字这类硬矛盾如何在章节审核通过后自动提取新信息并更新各管理模块如何处理多模型协同LLM 生成 LLM 审查 LLM 信息提取系统架构整体设计┌─────────────────────────────────────────────────────────────────┐ │ 前端 Vue 3 │ │ ┌──────────┐ ┌────────── ┌──────────┐ ┌────────────────────┐ │ │ │ 大纲规划 │ │ AI写作 │ │ 对话修改 │ │ 六大设定管理模块 │ │ │ └──────────┘ └────────── └──────────┘ └────────────────────┘ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────────────┐ │ │ │ 关系图谱 │ │ 时间线 │ │ 伏笔追踪 │ │ Dashboard 仪表盘 │ │ │ └──────────┘ ──────────┘ └──────────┘ ────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 后端 FastAPI │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 写作流程状态机 │ │ │ │ ┌─────┐ ┌─────┐ ┌───── ┌─────┐ ┌─────────┐ │ │ │ │ │大纲 │──▶│逐章 │──▶│审核 │──▶│矛盾 │──▶│信息提取 │ │ │ │ │ │确认 │ │生成 │ │ │ │检查 │ │存档 │ │ │ │ │ └─────┘ └─────┘ └─────┘ └─────┘ └─────────┘ │ │ │ └───────────────────────────────────────────────────────── │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 硬矛盾规则引擎 (5条规则) │ │ │ └─────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 阿里云百炼 API │ │ Qwen-Plus (章节生成 / 矛盾检测 / 信息提取 / 对话修改) │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 本地 JSON 文件存储 │ │ /项目目录/小说名/ │ │ ├── meta.json / world.json / characters.json │ │ ├── relationships.json / timeline.json / items.json │ │ ├── foreshadowing.json / outline.json / contradictions.json │ │ ├── style.json / chapters/ch001.json ... │ └─────────────────────────────────────────────────────────────────┘核心流程整个系统的核心是一个写作流程状态机大纲规划作者编写或 AI 生成故事梗概 章节目录确认后进入写作逐章生成基于大纲 世界观 角色设定 前文摘要调用百炼大模型真实生成审核左右分栏展示正文和设定信息作者决定通过 / 要求修改 / 重写矛盾检查规则引擎检测硬矛盾 AI 检测软矛盾生成矛盾列表信息提取AI 从章节内容自动提取新角色、地点、物品、时间线事件、伏笔确认存档作者确认后自动更新各管理模块的数据使用演示Step 1创建项目规划大纲用户创建小说项目后可以编写故事梗概和章节目录。支持 AI 自动生成大纲也可以手动编辑。确认后进入写作阶段如图故事梗概区域展示完整的小说大纲下方章节目录支持拖拽排序每章包含标题、摘要和状态。Step 2设定世界观管理角色在写作前作者需要完善世界观设定地理、势力、修炼体系、历史、种族和角色档案如图世界观设定分为五个维度支持实时编辑和变更历史追踪。如图角色卡片展示姓名、性格、能力、势力等信息下方显示成长轨迹和持有物品。Step 3AI 写作审核内容选择章节和写作风格后点击 AI 生成按钮系统调用百炼大模型生成章节内容。生成后进入审核流程如图左侧为章节正文编辑器右侧显示章节信息和 AI 提取的待确认信息新角色、时间线事件、伏笔等。Step 4对话式修改diff 对比如果作者对生成内容不满意可以进入对话修改界面以自然语言告诉 AI 哪里需要修改如图左侧展示修改前后的 diff 对比红色为修改前绿色为修改后右侧为对话界面。Step 5矛盾检测保障一致性每章审核通过后系统自动进行矛盾检测包括规则引擎检测的硬矛盾和 AI 检测的软矛盾如图矛盾列表展示类型、严重程度、描述、涉及角色和修改建议支持解决/忽略操作。可展开查看详细说明和检测规则。Step 6时间线管理冲突检测时间线页面按时间顺序展示关键事件支持冲突检测如同一角色同时出现在不同地点如图时间轴展示事件详情涉及角色、地点、关联章节点击检测冲突自动检查逻辑矛盾。Step 7Dashboard 总览掌握全局Dashboard 仪表盘展示创作进度全貌如图顶部统计卡片显示总字数、章节进度、待处理矛盾、未揭晓伏笔左侧饼图展示章节状态分布右侧活动时间线展示最近的创作动态。Step 8写作进度总览详细的写作进度页面展示各章节的完成情况和提醒如图章节详情表格展示每章状态和字数进度条底部提醒区显示待处理矛盾和未揭晓伏笔数量。技术选型思考为什么选 FastAPI类型安全Pydantic 自动校验请求参数减少运行时错误异步支持AI 调用是 IO 密集型任务原生异步提升并发能力文档自动生成Swagger UI 方便前后端联调路由模块化12 个路由模块清晰分离易于维护为什么前端用 Vue 3Composition API复杂状态管理更清晰如写作流程状态机生态成熟Element Plus 组件库开箱即用表格、时间线、对话框等拖拽交互SortableJS 实现章节拖拽排序SVG 可视化原生 SVG 实现关系图谱节点连线图为什么用阿里云百炼模型能力Qwen-Plus 在中文长文本生成和一致性判断上表现优秀API 统一OpenAI 兼容接口一个 SDK 调用所有能力国内访问无需翻墙延迟低适合 Demo 演示为什么用本地 JSON 存储Demo 场景无需数据库部署简单数据透明JSON 文件可直接查看和编辑按项目隔离每个小说项目独立目录数据互不干扰核心代码实现1. 硬矛盾规则引擎5 条规则检测常见的逻辑矛盾defcheck_hard_contradictions(chapter_content,characters,items,timeline):contradictions[]# 规则1死亡角色出现dead_chars[cforcincharactersifc.get(status)in(死亡,已死)]fordcindead_chars:ifdc[name]inchapter_content:contradictions.append({type:hard,severity:high,description:f角色「{dc[name]}」已死亡但在本章出现})# 规则2伤残肢体使用# 规则3位置冲突# 规则4物品归属错误# 规则5能力超限returncontradictions2. AI 软矛盾检测将章节内容 角色设定 世界观组合成 prompt调用大模型判断合理性defcheck_contradiction(chapter_content,characters,world_setting,timeline,items):system_prompt你是一位专业的小说编辑负责检查小说内容的一致性。 检查要点角色行为是否与性格一致、能力是否超出设定、时间线是否合理... 请以JSON数组格式返回矛盾列表。messages[{role:system,content:system_prompt},{role:user,content:f世界观{world_setting}\n角色{char_info}\n内容{chapter_content}}]resultchat_completion(messages,temperature0.3)returnparse_json(result)3. 信息提取与自动存档章节审核通过后AI 自动提取新信息并更新各模块defconfirm_extract(project_id,chapter_index,extracted_data):# 更新角色新增角色 成长轨迹forncinextracted_data.get(new_characters,[]):characters.append({name:nc[name],...})forchangeinextracted_data.get(character_changes,[]):c[growth_log].append({chapter:chapter_index1,change:change[change]})# 更新时间线、物品、伏笔...# 标记章节为 completed4. 写作流程状态机大纲确认 → 逐章生成 → 审核 → 矛盾检查 → 信息提取 → 二次确认 → 存档 pending draft approved extracting completed每个状态转换都有对应的 API 端点和前端交互。踩坑记录1. Vue 单文件组件重复模板块问题App.vue 底部残留了默认的script setup和template块导致编译错误。原因使用 Write 工具覆盖文件时追加而非替换。解决手动删除重复的模板块确保只有一个template和一个script setup。2. PowerShell 的 语法问题cd backend python -m uvicorn在 PowerShell 中报错。原因PowerShell 不支持需要使用;分隔。解决改用cd backend; python -m uvicorn app.main:app --port 80013. 字段名不一致问题矛盾检测页面不显示涉及角色。原因前端模板使用row.involved_characters但 demo 数据使用characters字段。解决前端兼容两种字段名(row.involved_characters || row.characters || [])4. 端口占用问题[Errno 10048]端口 8001 已被占用。解决检查已有进程复用或切换到其他端口。工程化实践1. 模块化路由设计后端 12 个路由模块每个模块对应一个功能领域app.include_router(projects.router,prefix/api/projects)app.include_router(outline.router,prefix/api/projects/{project_id}/outline)app.include_router(world.router,prefix/api/projects/{project_id}/world)app.include_router(characters.router,prefix/api/projects/{project_id}/characters)# ... 共 12 个路由模块2. 前端 API 封装统一的 API 封装层所有请求通过request()函数asyncfunctionrequest(url,options{}){constresawaitfetch(BASE_URLurl,{headers:{Content-Type:application/json,...options.headers},...options})if(!res.ok)thrownewError((awaitres.json()).detail)returnres.json()}3. 本地 JSON 存储按项目目录组织每个项目包含所有数据文件data/ └── demo001/ ├── meta.json # 项目元信息 ├── outline.json # 大纲章节目录 ├── world.json # 世界观设定 ├── characters.json # 角色档案 ├── relationships.json # 关系图谱 ├── timeline.json # 时间线 ├── items.json # 物品/装备 ├── foreshadowing.json # 伏笔追踪 ├── contradictions.json# 矛盾记录 ├── style.json # 风格配置 └── chapters/ # 章节正文 ├── ch001.json ├── ch002.json └── ...功能清单模块功能状态项目脚手架Vue3ViteFastAPICORS侧边栏✅项目管理CRUD卡片列表示例数据✅大纲规划拖拽排序AI生成确认流程✅世界观5维度编辑变更历史✅角色管理档案状态追踪成长轨迹✅关系图谱SVG节点图变化历史✅时间线事件管理冲突检测✅物品装备档案流转历史✅伏笔追踪登记状态筛选✅AI写作百炼API风格选择分栏审核✅对话修改聊天diff对比重写✅矛盾检测规则引擎5条AI软矛盾✅信息提取自动提取确认更新各模块✅进度总览饼图活动时间线统计✅示例数据5矛盾覆盖全场景✅总结这个项目让我对 AI 应用落地有了更深的理解一致性保障是核心AI 生成的长文本容易与已有设定矛盾规则引擎 AI 双重检测是必要的流程状态机很重要写作流程有明确的状态转换每个环节都需要清晰的 UI 反馈信息提取是闭环关键章节审核通过后自动提取新信息才能保持各模块数据同步Demo 也要功能完整即使是演示项目也要覆盖所有功能点才能展示产品价值如果你也在做 AI 应用开发希望这些经验对你有帮助。源码仓库已开源完整源码已开源至 Gitee含可运行 Demo 核心代码注释 踩坑修复方案项目地址Gitee - ViralWrite-AI ⭐ 欢迎 Star仓库包含写作流程状态机大纲→生成→审核→矛盾检查→信息提取→存档硬矛盾规则引擎5 条规则 AI 软矛盾双重检测章节信息自动提取 各管理模块自动更新对话式修改 diff 对比视图SVG 关系图谱 时间线冲突检测Vue3 前端 FastAPI 后端 12 个路由模块本 Demo 仅做技术复盘与学习演示基于 AI 长文本生成与一致性保障工程实践经验提炼后续还会持续迭代补充更多场景优化。
返回列表