diff --git a/main.spec b/main.spec index 4694d44..94baffe 100644 --- a/main.spec +++ b/main.spec @@ -14,7 +14,8 @@ hiddenimports = ['typing_extensions', 'pydantic', 'pydantic.deprecated.decorator', 'tiktoken_ext.openai_public', - 'tiktoken_ext' + 'tiktoken_ext', + 'chromadb.utils.embedding_functions.onnx_mini_lm_l6_v2' ] tmp_ret = collect_all('chromadb') @@ -44,7 +45,7 @@ exe = EXE( a.scripts, [], exclude_binaries=True, - name='AI_NovelGenerator_V1.3.2', + name='AI_NovelGenerator_V1.3.3', debug=True, bootloader_ignore_signals=False, strip=False, @@ -65,5 +66,5 @@ coll = COLLECT( strip=False, upx=True, upx_exclude=[], - name='AI_NovelGenerator_V1.3.2' + name='AI_NovelGenerator_V1.3.3' ) diff --git a/prompt_definitions.py b/prompt_definitions.py index 9e99408..ebe588c 100644 --- a/prompt_definitions.py +++ b/prompt_definitions.py @@ -1,86 +1,148 @@ # prompt_definitions.py # -*- coding: utf-8 -*- """ -集中存放所有提示词(Prompt),新版本更精确、更具创新性,结合部分雪花写作法等理论。 +集中存放所有提示词(Prompt),整合雪花写作法、角色弧光理论、悬念三要素模型 """ -# =============== 1. 整体设定 =================== -set_prompt = """\ -请根据主题: {topic}、类型: {genre}、章数: {number_of_chapters}、每章字数: {word_number} 来设计小说的总体结构和世界观。 -写作时请参考雪花写作法等创作理论,结合以下要点: +# =============== 1. 核心种子设定(雪花第1层)=================== +core_seed_prompt = """\ +作为专业作家,请用"雪花写作法"第一步构建故事核心: +主题:{topic} +类型:{genre} +篇幅:约{number_of_chapters}章(每章{word_number}字) -• 小说标题与大致篇幅(总字数范围)。 -• 类型与基调(如:都市、魔幻、战争、轻松、暗黑等)。 -• 主要写作风格(视角、叙述方式、语言风格等)。 -• 世界观设定(背景时间、地理环境、社会结构、科技或魔法水平、重要历史等)。 -• 整体故事框架(可提及常见叙事结构:三幕、英雄之旅等)。 -• 主线与副线的初步构想,以及它们如何交织。 -• 关键角色群像定位与主要冲突关系。 -• 结局的可能方向(圆满、悲剧、开放式等)。 +请用单句公式概括故事本质,例如: +"当[主角]遭遇[核心事件],必须[关键行动],否则[灾难后果];与此同时,[隐藏的更大危机]正在发酵。" -请以简洁、逻辑清晰的方式输出,保留足够细节以支撑后续创作。 +要求: +1. 必须包含显性冲突与潜在危机 +2. 体现人物核心驱动力 +3. 暗示世界观关键矛盾 +4. 使用25-100字精准表达 + +仅返回故事核心文本,不要解释任何内容。 """ -# =============== 2. 角色设定 =================== -character_prompt = """\ -基于已生成的小说整体设定: -{novel_setting} +# =============== 2. 角色动力学设定(角色弧光模型)=================== +character_dynamics_prompt = """\ +基于核心种子: +{core_seed} -请进一步扩展角色设置,至少包含三名核心角色。对每位角色说明: -• 角色背景、外貌与主要性格特征。 -• 内在冲突、目标与动机。 -• 暗藏的秘密或潜在弱点(可与世界观或其他角色有关)。 -• 与其他角色的关系或对立点,如何推动或阻碍情节发展。 +请设计3-6个具有动态变化潜力的核心角色,每个角色需包含: +特征: +- 背景、外貌、性别、年龄、职业等 +- 暗藏的秘密或潜在弱点(可与世界观或其他角色有关) -请重点突出角色的多重面向,为后续情节埋下伏笔。 +核心驱动力三角: +- 表面追求(物质目标) +- 深层渴望(情感需求) +- 灵魂需求(哲学层面) + +角色弧线设计: +初始状态 → 触发事件 → 认知失调 → 蜕变节点 → 最终状态 + +关系冲突网: +- 与其他角色的关系或对立点 +- 与至少两个其他角色的价值观冲突 +- 一个合作纽带 +- 一个隐藏的背叛可能性 + +要求: +仅给出最终文本,不要解释任何内容。 """ -# =============== 3. 暗线与伏笔 =================== -dark_lines_prompt = """\ -在当前世界观与角色关系中: -{character_info} +# =============== 3. 世界构建矩阵(三维度交织法)=================== +world_building_prompt = """\ +为服务核心冲突"{core_seed}",请构建三维交织的世界观: -请构思若干暗线、伏笔或隐藏冲突,结合雪花写作法“细节逐步扩展”的思路。要求: -• 每条暗线给出初始迹象、后续发展与可能的爆发条件。 -• 与角色背景、世界观或关键事件相呼应。 -• 保持合理的悬念设置,与现有设定不冲突。 -• 为后续剧情保留足够展开空间,强调持续影响故事进程。 +1. 物理维度: +- 空间结构(地理×社会阶层分布图) +- 时间轴(关键历史事件年表) +- 法则体系(物理/魔法/社会规则的漏洞点) -请避免一次性透漏全部细节,以逐步揭示的方式为后文做铺垫。 +2. 社会维度: +- 权力结构断层线(可引发冲突的阶层/种族/组织矛盾) +- 文化禁忌(可被打破的禁忌及其后果) +- 经济命脉(资源争夺焦点) + +3. 隐喻维度: +- 贯穿全书的视觉符号系统(如反复出现的意象) +- 气候/环境变化映射的心理状态 +- 建筑风格暗示的文明困境 + +要求: +每个维度至少包含3个可与角色决策产生互动的动态元素。 +仅给出最终文本,不要解释任何内容。 """ -# =============== 4. 最终设定整合 =================== -finalize_setting_prompt = """\ -基于以下内容,请整合并输出终稿《小说设定》: -1. 整体设定: -{novel_setting_base} -2. 角色设定: -{character_setting} -3. 暗线与伏笔: -{dark_lines} +# =============== 4. 情节架构(悬念三幕式)=================== +plot_architecture_prompt = """\ +基于以下元素构建三幕式悬念架构: +核心种子:{core_seed} +角色体系:{character_dynamics} +世界观:{world_building} -整合要求: -• 以整体视角整理世界观、角色与暗线,形成一个有机结合的故事框架。 -• 注意角色动机与暗线如何与世界观互相呼应,并兼顾主线与副线节奏。 -• 语言通顺、层次分明。直接输出文本,不使用Markdown格式。 +要求按以下结构设计: +▶ 第一幕(触发) +- 日常状态中的异常征兆(3处铺垫) +- 引出故事:展示主线、暗线、副线的开端 +- 关键事件:打破平衡的催化剂(需改变至少3个角色的关系) +- 错误抉择:主角的认知局限导致的错误反应 + +▶ 第二幕(对抗) +- 剧情升级:主线+副线的交叉点 +- 双重压力:外部障碍升级+内部挫折 +- 虚假胜利:看似解决实则深化危机的转折点 +- 灵魂黑夜:世界观认知颠覆时刻 + +▶ 第三幕(解决) +- 代价显现:解决危机必须牺牲的核心价值 +- 嵌套转折:至少包含三层认知颠覆(表面解→新危机→终极抉择) +- 余波:留下2个开放式悬念因子 + +每个阶段需包含3个关键转折点及其对应的伏笔回收方案。 +仅给出最终文本,不要解释任何内容。 """ -# =============== 5. 小说目录 =================== -novel_directory_prompt = """\ -根据以下最终《小说设定》: -{final_novel_setting} +# =============== 5. 章节目录生成(悬念节奏曲线)=================== +chapter_blueprint_prompt = """\ +根据三幕式架构: +{plot_architecture} -请列出共 {number_of_chapters} 章的目录,并保证每章的标题或简述能呼应主要冲突、角色成长及暗线埋设。 -目录格式示例: -第1章 :<标题> - <简要说明> -第2章 :<标题> - <简要说明> -... -第{number_of_chapters}章 :<标题> - <简要说明> +设计{number_of_chapters}章的节奏分布: +1. 每章需明确: +- 核心悬念类型(信息差/道德困境/时间压力等) +- 情感基调迁移(如从怀疑→恐惧→决绝) +- 伏笔操作(埋设/强化/回收) +- 认知颠覆强度(1-5级) -每章可酌情加入一句简述,引导读者了解本章看点。直接输出文本,不使用Markdown。 +2. 章节集群划分: +- 每3-5章构成一个悬念单元,包含完整的小高潮 +- 单元之间设置"认知过山车"(连续2章紧张→1章缓冲) +- 关键转折章需预留多视角铺垫 + +输出格式示例: +第n章 - [标题] +本章定位:[角色/事件/主题] +核心作用:[推进/转折/揭示] +悬念密度:[紧凑/渐进/爆发] +伏笔操作:埋设(A线索)→强化(B矛盾) +认知颠覆:★☆☆☆☆ +本章简述:[一句话概括] + +第n+1章 - [标题] +本章定位:[角色/事件/主题] +核心作用:[推进/转折/揭示] +悬念密度:[紧凑/渐进/爆发] +伏笔操作:埋设(A线索)→强化(B矛盾) +认知颠覆:★☆☆☆☆ +本章简述:[一句话概括] + +使用精炼语言描述,每章字数控制在100字以内。 +仅给出最终文本,不要解释任何内容。 """ -# =============== 6. 全局摘要更新 =================== +# =============== 6. 全局摘要更新 =================== summary_prompt = """\ 以下是新完成的章节文本: {chapter_text} @@ -88,10 +150,17 @@ summary_prompt = """\ 这是当前的全局摘要(可为空): {global_summary} -请根据本章新增内容,更新全局摘要。保留既有重要信息,同时融入新剧情要点,勿剧透未来。控制在不超过3000字的范围内,语言简练流畅。 +请根据本章新增内容,更新全局摘要。 +要求: +- 保留既有重要信息,同时融入新剧情要点 +- 以简洁、连贯的语言描述全书进展 +- 客观描绘,不展开联想或解释 +- 字数控制在2000字以内 + +仅返回全局摘要文本,不要解释任何内容。 """ -# =============== 7. 角色状态更新 =================== +# =============== 7. 角色状态更新 =================== update_character_state_prompt = """\ 以下是新完成的章节文本: {chapter_text} @@ -100,44 +169,62 @@ update_character_state_prompt = """\ {old_state} 请更新角色状态,内容包括: -• 角色的物品、能力或心理状态变化。 -• 角色间关系的最新进展或冲突。 -• 是否触发或加深了某些暗线或关键事件。 -• 任何新增角色或临时出场人物的基本信息。 +角色属性: +- 角色物品 +- 能力 +- 状态 +- 主要角色间关系网 +- 触发或加深的事件 -请直接在已有文档基础上进行增删,语言尽量简洁、有条理。 +新出场角色: +- 任何新增角色或临时出场人物的基本信息 + +要求: +- 请直接在已有文档基础上进行增删 +- 不改变原有结构,语言尽量简洁、有条理 + +仅返回更新后的角色状态文本,不要解释任何内容。 """ -# =============== 8. 章节大纲设计 =================== -chapter_outline_prompt = """\ -这是当前小说的重要信息: +# =============== 7. 章节正文写作 =================== +scene_dynamics_prompt = """\ +即将创作:第{novel_number}章《{chapter_title}》 +本章定位:{chapter_role} +核心作用:{chapter_purpose} +悬念密度:{suspense_level} +伏笔操作:{foreshadowing} +认知颠覆:{plot_twist_level} +本章简述:{chapter_summary} + +可用元素: +- 核心人物(可能未指定):{characters_involved} +- 关键道具(可能未指定):{key_items} +- 空间坐标(可能未指定):{scene_location} +- 时间压力(可能未指定):{time_constraint} + +参考文档: +- 世界观:{world_building} - 小说设定:{novel_setting} -- 角色状态:{character_state} - 全局摘要:{global_summary} +- 角色状态:{character_state} -我们即将写第 {novel_number} 章,标题:{chapter_title},简述(若有):{chapter_brief} +请完成第 {novel_number} 章的正文,至少设计下方2个具有动态张力的场景: +1. 对话场景: +- 潜台词冲突(表面谈论A,实际博弈B) +- 权力关系变化(使用非对称对话长度控制) +- 至少1处双关语暗示未来危机 -请按照以下思路设计本章大纲: -1. 本章的主要冲突或情节目标,如何与标题呼应。 -2. 出场角色及其动机,对剧情走向的推动或阻碍。 -3. 暗线或伏笔如何有所进展或被揭示。 -4. 本章结尾的悬念或转折,如何为下一章做铺垫。 +2. 动作场景: +- 环境交互细节(至少3个感官描写维度) +- 节奏控制(短句加速+比喻减速) +- 动作揭示人物隐藏特质 -请以简要分点方式输出,不要使用Markdown格式。 -""" +3. 心理场景: +- 认知失调的具体表现(行为矛盾) +- 隐喻系统的运用(连接世界观符号) +- 决策前的价值天平描写 -# =============== 9. 章节正文写作 =================== -chapter_write_prompt = """\ -以下信息供你参考: -1. 小说设定:{novel_setting} -2. 角色状态:{character_state} -3. 全局摘要:{global_summary} -4. 本章大纲:{chapter_outline} +最后设置一个"钩链转折":结尾同时回收旧悬念/创造新悬念/抛出新危机/颠覆某个认知预设/神转折等。 -请写出第 {novel_number} 章的正文,标题为“{chapter_title}”。需要: -• 字数不少于 {word_number} 字,与标题和简述相呼应。 -• 保持连贯叙述,可增加环境、心理、对话等细节描写。 -• 适度呼应前文暗线或角色矛盾,为后续发展留出悬念。 - -直接输出正文内容,不使用分章节小标题,章节末模仿正常小说中断或转场。 -""" +仅返回章节正文文本,不要解释任何内容。 +""" \ No newline at end of file