feature:新增拆书导入续写功能,给当年的ta一个结局。

This commit is contained in:
xiamuceer-j
2026-03-04 16:28:16 +08:00
parent ad19c773f0
commit 536bd198b4
8 changed files with 3859 additions and 15 deletions
+145
View File
@@ -2416,6 +2416,136 @@ class PromptService:
❌ 添加任何元信息或说明
❌ 改变叙事人称或视角
❌ 偏离用户的修改要求
</constraints>"""
# 拆书导入-反向项目提炼提示词
BOOK_IMPORT_REVERSE_PROJECT_SUGGESTION = """<system>
你是资深网文策划编辑,擅长从小说正文中反向提炼项目立项信息。
</system>
<task>
【任务】
基于提供的前3章内容,提炼该小说的核心立项信息,用于创建新项目。
【目标】
在不偏离原文的前提下,输出可直接用于项目初始化的结构化信息。
</task>
<input priority="P0">
【输入信息】
书名:{title}
前3章内容:
{sampled_text}
</input>
<output priority="P0">
【输出格式】
仅输出一个纯JSON对象(不要markdown、不要代码块、不要解释):
{{
"description": "小说简介",
"theme": "核心主题",
"genre": "小说类型",
"narrative_perspective": "第一人称/第三人称/全知视角",
"target_words": 100000
}}
【字段要求】
1) description120-260字,聚焦主角、核心冲突、主线目标与故事张力。
2) theme120-260字,提炼作品想表达的核心命题。
3) genre:2-12字,如都市、玄幻、悬疑、科幻、言情等。
4) narrative_perspective:只能是“第一人称”或“第三人称”或“全知视角”。
5) target_words:整数。按网文体量合理预估;无法判断时返回100000。
</output>
<constraints>
【必须遵守】
✅ 严格基于已给正文内容,不凭空添加关键设定
✅ 保持信息自洽,避免互相矛盾
✅ 输出必须是可解析JSON对象
✅ 小说的genre可以由多个类型组成
【禁止事项】
❌ 输出JSON以外的任何文字
❌ 使用markdown标记或代码块包裹
❌ narrative_perspective输出枚举值之外的内容
❌ target_words输出非整数
</constraints>"""
# 拆书导入-反向生成章节大纲(严格对齐 OUTLINE_CREATE 结构)
BOOK_IMPORT_REVERSE_OUTLINES = """<system>
你是资深网文总编与剧情策划,擅长基于已完成章节反向提炼标准化章节大纲。
</system>
<task>
【任务】
基于给定的章节正文(每批最多5章),为每章反向生成对应大纲结构。
【核心目标】
输出结构必须与系统现有大纲生成结构严格一致(与 OUTLINE_CREATE 字段一致),用于直接入库。
</task>
<project priority="P0">
【项目信息】
书名:{title}
类型:{genre}
主题:{theme}
叙事视角:{narrative_perspective}
</project>
<input priority="P0">
【批次范围】
{start_chapter}章 - 第{end_chapter}章(共{expected_count}章)
【章节内容】
{chapters_text}
</input>
<output priority="P0">
【输出格式】
仅输出纯JSON数组(不要markdown、不要代码块、不要解释)。
数组长度必须严格等于 {expected_count}
每个对象字段必须严格为:
[
{{
"chapter_number": 1,
"title": "章节标题",
"summary": "章节概要(200-600字):主要情节、角色互动、关键事件、冲突与转折",
"scenes": ["场景1描述", "场景2描述"],
"characters": [
{{"name": "角色名1", "type": "character"}},
{{"name": "组织/势力名1", "type": "organization"}}
],
"key_points": ["情节要点1", "情节要点2"],
"emotion": "本章情感基调",
"goal": "本章叙事目标"
}}
]
【字段约束】
- chapter_number:必须与输入章节号一致
- title:必须与输入章节标题一致
- summary:根据本章正文反向提炼,不得臆造未出现关键事件
- scenes2-6条
- characters:可为空;type 仅允许 character 或 organization
- key_points2-6条
- emotion:一句话
- goal:一句话
</output>
<constraints>
【必须遵守】
✅ 严格一章对应一个对象,数量与顺序完全一致
✅ 字段名、字段层级、字段类型严格一致
✅ 仅基于输入正文提炼,不擅自扩展设定
✅ 输出必须可被JSON直接解析
【禁止事项】
❌ 输出JSON之外任何文本
❌ 缺失字段或新增字段
❌ chapter_number/title 与输入不一致
❌ 使用 markdown 或代码块
</constraints>"""
@staticmethod
@@ -2689,6 +2819,21 @@ class PromptService:
"description": "用于生成小说世界观设定,包括时间背景、地理位置、氛围基调和世界规则",
"parameters": ["title", "theme", "genre", "description"]
},
"BOOK_IMPORT_REVERSE_PROJECT_SUGGESTION": {
"name": "拆书导入-反向项目提炼",
"category": "拆书导入",
"description": "基于前3章内容反向提炼简介、主题、类型、叙事视角与目标字数",
"parameters": ["title", "sampled_text"]
},
"BOOK_IMPORT_REVERSE_OUTLINES": {
"name": "拆书导入-反向章节大纲",
"category": "拆书导入",
"description": "基于章节正文反向生成与OUTLINE_CREATE一致结构的大纲(单批次5章)",
"parameters": [
"title", "genre", "theme", "narrative_perspective",
"start_chapter", "end_chapter", "expected_count", "chapters_text"
]
},
"CHARACTERS_BATCH_GENERATION": {
"name": "批量角色生成",
"category": "角色生成",