2025-07-16 01:08:03 +08:00
2025-07-16 01:08:03 +08:00
2025-07-16 01:08:03 +08:00
2025-07-16 01:08:03 +08:00
2025-07-16 01:08:03 +08:00
2025-07-16 01:08:03 +08:00

AI Novel Writer Agent

一个基于LangChain的AI小说编写器支持多种LLM供应商能够按照章节结构自动生成完整小说。

特性

  • 🤖 支持多种LLM供应商OpenAI、OpenRouter、Ollama等
  • 📚 按小章节逐步生成小说内容
  • 📝 自动生成章节总结并更新目录
  • 🔧 灵活的配置系统
  • 🎨 美观的命令行界面
  • 📖 支持完整小说编译

安装

使用uv安装推荐

git clone <repository-url>
cd ai-novel
uv sync

或使用pip

pip install -e .

快速开始

1. 创建项目目录

# 创建项目目录
mkdir my-novel
cd my-novel

# 创建必要文件
# 编辑以下文件:
# - 梗概大纲.md - 小说的故事梗概和大纲
# - 章节目录.yaml - 详细的章节结构

2. 编辑项目文件

在项目目录中创建:

  • 梗概大纲.md - 小说的故事梗概和大纲
  • 章节目录.yaml - 详细的章节结构

3. 创建配置文件

ai-novel init-config config.yaml

编辑配置文件设置项目目录和API密钥

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. 生成小说

生成完整小说:

ai-novel generate --config config.yaml

生成特定部分:

# 生成第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密钥

export OPENAI_API_KEY="your-openai-key"
export OPENROUTER_API_KEY="your-openrouter-key"
export OLLAMA_BASE_URL="http://localhost:11434"

提示词配置

可以通过 prompt_config 部分配置提示词的行为:

prompt_config:
  previous_chapters_count: 2  # 提示词中包含前n章节的完整内容
  writing_style: "现代科幻小说风格,语言简洁明快,注重科技细节描写和人物心理刻画,营造紧张悬疑的氛围。"  # 文风描述

配置说明:

previous_chapters_count: 控制在生成新章节时,提示词中包含多少个前面章节的完整内容

  • 0: 不包含任何前面章节的内容
  • 1: 只包含前1个章节的内容
  • 2: 包含前2个章节的内容默认值
  • 3+: 包含前n个章节的内容
  • 负数: 包含所有前面章节的内容

writing_style: 描述期望的小说文风和写作风格

  • 这个描述会被添加到系统提示词中指导LLM按照指定风格创作
  • 可以包含语言风格、叙述方式、情节节奏、人物刻画等要求
  • 支持详细的文风描述,如"古典文学风格"、"现代都市风格"、"悬疑推理风格"等

文风配置示例:

# 古典武侠风格
writing_style: "古典武侠小说风格,文言文与白话文结合,注重意境营造和武功描写,人物对话古雅,情节跌宕起伏。"

# 现代都市风格
writing_style: "现代都市小说风格,语言贴近生活,对话真实自然,注重心理描写和情感细节,节奏明快。"

# 悬疑推理风格
writing_style: "悬疑推理小说风格,语言简练精准,注重线索铺设和逻辑推理,营造紧张神秘的氛围。"

这些配置可以帮助你:

  • 控制提示词的长度减少token消耗
  • 调整上下文的丰富程度
  • 定制小说的写作风格和文学特色
  • 适应不同模型的上下文长度限制

LLM供应商配置

OpenAI

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

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

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. 编译小说:将所有章节合并为完整小说

命令行接口

ai-novel --help                         # 显示帮助
ai-novel init-project <path>             # 初始化新项目
ai-novel init-config <path>              # 创建示例配置
ai-novel generate --config <config> [options]  # 生成小说内容

许可证

MIT License

Description
No description provided
Readme 327 KiB
Languages
Python 100%