写点什么

AI 小说生成器:智能创作与一致性维护的全流程解决方案

作者:qife122
  • 2025-10-12
    福建
  • 本文字数:4360 字

    阅读完需:约 14 分钟

AI 小说生成器

一款基于大语言模型的多功能小说生成器,集成了完整的创作工作流,从世界观架构到章节生成,再到一致性维护,为创作者提供全方位的智能写作辅助。

✨ 核心功能

🎨 小说设定工坊

  • 世界观架构:基于主题和题材生成完整的小说设定

  • 角色动态设计:创建具有发展弧光的角色系统

  • 剧情蓝图规划:构建逻辑严谨的章节架构

📖 智能章节生成

  • 多阶段生成保障:确保剧情连贯性和逻辑一致性

  • 上下文感知:基于前文内容智能续写

  • 风格统一:维持整体文风和叙事节奏

🧠 状态追踪系统

  • 角色发展轨迹:实时更新角色状态和关系变化

  • 伏笔管理系统:跟踪未解决冲突和待推进剧情线

  • 全局摘要维护:动态更新故事进展概览

🔍 语义检索引擎

  • 向量化存储:基于 ChromaDB 的上下文向量库

  • 智能检索:相关性驱动的知识片段提取

  • 长程一致性:跨越章节的设定统一维护

📚 知识库集成

  • 本地文档支持:导入参考文档增强创作素材

  • 智能文本分割:基于语义的文档分段处理

  • 向量化存储:高效的知识检索和利用

✅ 自动审校机制

  • 剧情矛盾检测:识别设定冲突和逻辑不一致

  • 连续性检查:确保角色状态和情节发展的连贯性

  • 冲突预警:提前发现潜在的故事性问题

🖥 可视化工作台

  • 一体化界面:配置、生成、审校全流程 GUI 操作

  • 实时进度跟踪:直观显示生成状态和结果

  • 参数灵活调整:支持温度、token 数等精细调控

🛠 安装指南

环境要求

  • Python 3.9+ 运行环境(推荐 3.10-3.12)

  • pip 包管理工具

  • 有效 API 密钥(OpenAI/DeepSeek 等云端服务或 Ollama 等本地接口)

安装步骤

  1. 下载项目


   git clone https://github.com/YILING0013/AI_NovelGenerator   cd AI_NovelGenerator
复制代码


  1. 安装依赖


   pip install -r requirements.txt
复制代码


  1. 运行应用


   python main.py
复制代码

可选步骤

如遇依赖安装问题,可安装 C++编译工具:


🚀 使用说明

基础配置

首先在 GUI 界面中配置 LLM 接口参数:


# 示例配置结构{    "api_key": "your_api_key",    "base_url": "https://api.deepseek.com/v1",    "model_name": "deepseek-chat",    "temperature": 0.7,    "max_tokens": 8192}
复制代码

核心工作流

1. 小说架构生成

Novel_architecture_generate(    interface_format="OpenAI",    api_key=api_key,    base_url=base_url,    llm_model="deepseek-chat",    topic="科幻未来",    genre="硬科幻",    number_of_chapters=20,    word_number=3000,    filepath="./novel_project")
复制代码

2. 章节蓝图规划

Chapter_blueprint_generate(    interface_format=interface_format,    api_key=api_key,    base_url=base_url,    llm_model=model_name,    filepath=filepath,    number_of_chapters=number_of_chapters)
复制代码

3. 章节内容生成

# 生成章节草稿chapter_draft = generate_chapter_draft(    interface_format=interface_format,    api_key=api_key,    base_url=base_url,    model_name=model_name,    temperature=temperature,    filepath=filepath,    novel_number=chapter_num,    user_guidance=user_guidance)
复制代码

4. 一致性检查

consistency_result = check_consistency(    novel_setting=novel_setting,    character_state=character_state,    global_summary=global_summary,    chapter_text=chapter_text,    api_key=api_key,    base_url=base_url,    model_name=model_name)
复制代码

知识库集成

导入参考文档增强创作素材:


import_knowledge_file(    embedding_api_key=embedding_api_key,    embedding_url=embedding_url,    embedding_interface_format=embedding_interface_format,    embedding_model_name=embedding_model_name,    file_path="./knowledge.txt",    filepath=filepath)
复制代码

💻 核心代码

章节蓝图解析器

def parse_chapter_blueprint(blueprint_text: str):    """    解析整份章节蓝图文本,返回结构化数据    返回格式:    {      "chapter_number": int,      # 章节编号      "chapter_title": str,       # 章节标题      "chapter_role": str,        # 本章定位      "chapter_purpose": str,     # 核心作用      "suspense_level": str,      # 悬念密度      "foreshadowing": str,       # 伏笔操作      "plot_twist_level": str,    # 认知颠覆      "chapter_summary": str      # 本章简述    }    """    chunks = re.split(r'\n\s*\n', blueprint_text.strip())    results = []        # 正则模式匹配各字段    chapter_number_pattern = re.compile(r'^第\s*(\d+)\s*章\s*-\s*\[?(.*?)\]?$')    role_pattern = re.compile(r'^本章定位:\s*\[?(.*)\]?$')    purpose_pattern = re.compile(r'^核心作用:\s*\[?(.*)\]?$')        for chunk in chunks:        lines = chunk.strip().splitlines()        if not lines:            continue                    # 解析章节头部信息        header_match = chapter_number_pattern.match(lines[0].strip())        if header_match:            chapter_number = int(header_match.group(1))            chapter_title = header_match.group(2).strip()                        # 解析其他字段            chapter_data = {                "chapter_number": chapter_number,                "chapter_title": chapter_title,                "chapter_role": "",                "chapter_purpose": "",                "suspense_level": "",                "foreshadowing": "",                "plot_twist_level": "",                "chapter_summary": ""            }                        # 遍历剩余行匹配各字段            for line in lines[1:]:                line_stripped = line.strip()                # 各字段模式匹配...                            results.append(chapter_data)        # 按章节编号排序返回    results.sort(key=lambda x: x["chapter_number"])    return results
复制代码

一致性检查器

def check_consistency(    novel_setting: str,    character_state: str,    global_summary: str,    chapter_text: str,    api_key: str,    base_url: str,    model_name: str,    temperature: float = 0.3,    plot_arcs: str = "",    interface_format: str = "OpenAI",    max_tokens: int = 2048,    timeout: int = 600) -> str:    """    调用模型进行一致性检查,检测剧情冲突和逻辑不一致    新增对未解决冲突或剧情要点的衔接情况检查    """        # 构建检查提示词    prompt = CONSISTENCY_PROMPT.format(        novel_setting=novel_setting,        character_state=character_state,        global_summary=global_summary,        plot_arcs=plot_arcs,        chapter_text=chapter_text    )
# 创建LLM适配器 llm_adapter = create_llm_adapter( interface_format=interface_format, base_url=base_url, model_name=model_name, api_key=api_key, temperature=temperature, max_tokens=max_tokens, timeout=timeout )
# 调用模型进行检查 response = llm_adapter.invoke(prompt) return response if response else "审校Agent无回复"
复制代码

配置管理器

def load_config(config_file: str) -> dict:    """从指定配置文件加载配置,不存在时创建默认配置"""        if not os.path.exists(config_file):        create_config(config_file)
try: with open(config_file, 'r', encoding='utf-8') as f: return json.load(f) except: return {}
def create_config(config_file: str) -> dict: """创建默认配置文件,包含多种模型配置""" config = { "last_interface_format": "OpenAI", "last_embedding_interface_format": "OpenAI", "llm_configs": { "DeepSeek V3": { "api_key": "", "base_url": "https://api.deepseek.com/v1", "model_name": "deepseek-chat", "temperature": 0.7, "max_tokens": 8192, "timeout": 600, "interface_format": "OpenAI" }, # 其他模型配置... }, "embedding_configs": { "OpenAI": { "api_key": "", "base_url": "https://api.openai.com/v1", "model_name": "text-embedding-ada-002", "retrieval_k": 4, "interface_format": "OpenAI" } } } return config
复制代码

LLM 适配器框架

class BaseLLMAdapter:    """统一的LLM接口基类,为不同后端提供一致的方法签名"""        def invoke(self, prompt: str) -> str:        raise NotImplementedError("Subclasses must implement .invoke(prompt) method.")
class DeepSeekAdapter(BaseLLMAdapter): """DeepSeek官方/OpenAI兼容接口适配器""" def __init__(self, api_key: str, base_url: str, model_name: str, max_tokens: int, temperature: float = 0.7, timeout: Optional[int] = 600): self.base_url = check_base_url(base_url) self.api_key = api_key self.model_name = model_name self.max_tokens = max_tokens self.temperature = temperature self.timeout = timeout
self._client = ChatOpenAI( model=self.model_name, api_key=self.api_key, base_url=self.base_url, max_tokens=self.max_tokens, temperature=self.temperature, timeout=self.timeout )
def invoke(self, prompt: str) -> str: """调用模型生成内容""" response = self._client.invoke(prompt) return response
复制代码


该项目通过模块化设计和统一的接口抽象,为小说创作提供了完整的 AI 辅助解决方案,显著提升了创作效率和质量一致性。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)


公众号二维码


办公AI智能小助手


公众号二维码


网络安全技术点滴分享


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
AI小说生成器:智能创作与一致性维护的全流程解决方案_自然语言处理_qife122_InfoQ写作社区