Initial commit: AI Novel Generation Tool with prologue support and progress tracking

This commit is contained in:
2025-07-16 00:45:41 +08:00
commit eab7f3379a
46 changed files with 6405 additions and 0 deletions

216
README.md Normal file
View File

@ -0,0 +1,216 @@
# AI Novel Writer Agent
一个基于LangChain的AI小说编写器支持多种LLM供应商能够按照章节结构自动生成完整小说。
## 特性
- 🤖 支持多种LLM供应商OpenAI、OpenRouter、Ollama等
- 📚 按小章节逐步生成小说内容
- 📝 自动生成章节总结并更新目录
- 🔧 灵活的配置系统
- 🎨 美观的命令行界面
- 📖 支持完整小说编译
## 安装
使用uv安装推荐
```bash
git clone <repository-url>
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章节的完整内容
```
**配置说明:**
- `previous_chapters_count`: 控制在生成新章节时,提示词中包含多少个前面章节的完整内容
- `0`: 不包含任何前面章节的内容
- `1`: 只包含前1个章节的内容
- `2`: 包含前2个章节的内容默认值
- `3+`: 包含前n个章节的内容
- 负数: 包含所有前面章节的内容
这个配置可以帮助你:
- 控制提示词的长度减少token消耗
- 调整上下文的丰富程度
- 适应不同模型的上下文长度限制
### LLM供应商配置
#### OpenAI
```yaml
project_dir: "my-novel"
# 提示词配置
prompt_config:
previous_chapters_count: 2 # 提示词中包含前n章节的完整内容
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章节的完整内容
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章节的完整内容
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 <path> # 初始化新项目
ai-novel init-config <path> # 创建示例配置
ai-novel generate --config <config> [options] # 生成小说内容
```
## 许可证
MIT License