# AI Novel Writer Agent 一个基于LangChain的AI小说编写器,支持多种LLM供应商,能够按照章节结构自动生成完整小说。 ## 特性 - 🤖 支持多种LLM供应商(OpenAI、OpenRouter、Ollama等) - 📚 按小章节逐步生成小说内容 - 📝 自动生成章节总结并更新目录 - 🔧 灵活的配置系统 - 🎨 美观的命令行界面 - 📖 支持完整小说编译 ## 安装 使用uv安装(推荐): ```bash git clone cd ai-novel uv sync ``` 或使用pip: ```bash pip install -e . ``` ## 快速开始 ### 1. 创建项目目录 ```bash # 创建项目目录 mkdir my-novel cd my-novel # 创建必要文件 # 编辑以下文件: # - 梗概大纲.md - 小说的故事梗概和大纲 # - 章节目录.yaml - 详细的章节结构 ``` ### 2. 编辑项目文件 在项目目录中创建: - `梗概大纲.md` - 小说的故事梗概和大纲 - `章节目录.yaml` - 详细的章节结构 ### 3. 创建配置文件 ```bash ai-novel init-config config.yaml ``` 编辑配置文件,设置项目目录和API密钥: ```yaml project_dir: "my-novel" # 指定项目目录 novelist_llm: type: "openai" # 或 "openai_compatible", "ollama" model: "gpt-4" api_key: "your-api-key-here" temperature: 0.7 max_tokens: 3000 summarizer_llm: type: "openai" model: "gpt-3.5-turbo" api_key: "your-api-key-here" temperature: 0.3 max_tokens: 500 ``` ### 4. 生成小说 生成完整小说: ```bash ai-novel generate --config config.yaml ``` 生成特定部分: ```bash # 生成第1部分 ai-novel generate --config config.yaml --part 1 # 生成第1部分第2章 ai-novel generate --config config.yaml --part 1 --chapter 2 # 生成第1部分第2章第3节 ai-novel generate --config config.yaml --part 1 --chapter 2 --section 3 ``` ## 配置 ### 环境变量 可以通过环境变量设置API密钥: ```bash export OPENAI_API_KEY="your-openai-key" export OPENROUTER_API_KEY="your-openrouter-key" export OLLAMA_BASE_URL="http://localhost:11434" ``` ### 提示词配置 可以通过 `prompt_config` 部分配置提示词的行为: ```yaml prompt_config: previous_chapters_count: 2 # 提示词中包含前n章节的完整内容 writing_style: "现代科幻小说风格,语言简洁明快,注重科技细节描写和人物心理刻画,营造紧张悬疑的氛围。" # 文风描述 ``` **配置说明:** **`previous_chapters_count`**: 控制在生成新章节时,提示词中包含多少个前面章节的完整内容 - `0`: 不包含任何前面章节的内容 - `1`: 只包含前1个章节的内容 - `2`: 包含前2个章节的内容(默认值) - `3+`: 包含前n个章节的内容 - 负数: 包含所有前面章节的内容 **`writing_style`**: 描述期望的小说文风和写作风格 - 这个描述会被添加到系统提示词中,指导LLM按照指定风格创作 - 可以包含语言风格、叙述方式、情节节奏、人物刻画等要求 - 支持详细的文风描述,如"古典文学风格"、"现代都市风格"、"悬疑推理风格"等 **文风配置示例:** ```yaml # 古典武侠风格 writing_style: "古典武侠小说风格,文言文与白话文结合,注重意境营造和武功描写,人物对话古雅,情节跌宕起伏。" # 现代都市风格 writing_style: "现代都市小说风格,语言贴近生活,对话真实自然,注重心理描写和情感细节,节奏明快。" # 悬疑推理风格 writing_style: "悬疑推理小说风格,语言简练精准,注重线索铺设和逻辑推理,营造紧张神秘的氛围。" ``` 这些配置可以帮助你: - 控制提示词的长度(减少token消耗) - 调整上下文的丰富程度 - 定制小说的写作风格和文学特色 - 适应不同模型的上下文长度限制 ### LLM供应商配置 #### OpenAI ```yaml project_dir: "my-novel" # 提示词配置 prompt_config: previous_chapters_count: 2 # 提示词中包含前n章节的完整内容 writing_style: "现代科幻小说风格,语言简洁明快,注重科技细节描写和人物心理刻画,营造紧张悬疑的氛围。" novelist_llm: type: "openai" model: "gpt-4" api_key: "sk-..." temperature: 0.7 max_tokens: 3000 ``` #### OpenRouter ```yaml project_dir: "my-novel" # 提示词配置 prompt_config: previous_chapters_count: 2 # 提示词中包含前n章节的完整内容 writing_style: "现代科幻小说风格,语言简洁明快,注重科技细节描写和人物心理刻画,营造紧张悬疑的氛围。" novelist_llm: type: "openai_compatible" model: "anthropic/claude-3-haiku" api_key: "sk-or-..." base_url: "https://openrouter.ai/api/v1" temperature: 0.7 max_tokens: 3000 ``` #### Ollama ```yaml project_dir: "my-novel" # 提示词配置 prompt_config: previous_chapters_count: 2 # 提示词中包含前n章节的完整内容 writing_style: "现代科幻小说风格,语言简洁明快,注重科技细节描写和人物心理刻画,营造紧张悬疑的氛围。" novelist_llm: type: "ollama" model: "llama3.1" base_url: "http://localhost:11434" temperature: 0.7 ``` ## 项目结构 ``` ai-novel/ # 主项目目录 ├── config.yaml # 配置文件 └── my-novel/ # 小说项目目录(由config.yaml中project_dir指定) ├── 梗概大纲.md # 小说梗概和大纲 ├── 章节目录.yaml # 章节结构定义 ├── chapters/ # 生成的章节文件 │ ├── part_1_火种纪元/ │ │ ├── chapter_1_金乌升起.md │ │ └── section_1_1.md │ └── ... └── 光锥牢笼——从聚变之火到热寂回响.md # 完整小说 ``` ## 工作流程 1. **读取项目文件**:加载梗概大纲和章节结构 2. **构建提示词**:包含系统提示、故事梗概、章节目录、前文内容 3. **生成章节**:LLM按小节生成内容 4. **生成总结**:另一个LLM生成章节总结 5. **更新目录**:将总结添加到章节目录中 6. **编译小说**:将所有章节合并为完整小说 ## 命令行接口 ```bash ai-novel --help # 显示帮助 ai-novel init-project # 初始化新项目 ai-novel init-config # 创建示例配置 ai-novel generate --config [options] # 生成小说内容 ``` ## 许可证 MIT License