基于LangChain的AI小说生成工具,支持多种大语言模型,具备状态管理、记忆系统和Web界面。
- 🤖 支持多种大语言模型(DeepSeek、OpenAI、Claude、Gemini等)
- 📚 章节状态管理和世界设定保存
- 🧠 智能记忆系统,支持对话历史压缩
- 🌐 Web界面,便于交互式创作
- 📝 多小说项目隔离管理
- 🔄 多版本生成和比较
pip install -r requirements.txt
创建 .env
文件:
# 至少配置一个模型的API密钥
DEEPSEEK_API_KEY=your_deepseek_api_key
OPENAI_API_KEY=your_openai_api_key
ANTHROPIC_API_KEY=your_anthropic_api_key
GOOGLE_API_KEY=your_google_api_key
DSF5_API_KEY=your_dsf5_api_key
Web界面(推荐):
python web_server.py
访问 http://127.0.0.1:5001 推荐
命令行使用: 不推荐
from main import NovelGenerator
generator = NovelGenerator()
content = generator.generate_chapter(
chapter_outline="第一章:开始的故事",
model_name="deepseek_chat",
novel_id="my_novel"
)
langchain/
├── main.py # 核心生成器
├── web_server.py # Web服务器
├── modules/ # 功能模块
│ ├── llm_module.py # 大模型调用
│ ├── memory_module.py # 记忆管理
│ ├── setting_module.py # 设定管理
│ └── workflow.py # 工作流
├── web/ # Web界面
│ ├── index.html
│ ├── app.js
│ └── style.css
├── data/ # 数据存储
├── memory/ # 记忆存储
├── xiaoshuo/ # 生成内容
├── prompts/ # 提示词模板
└── templates/ # 写作要求模板
位置: data/{novel_id}_chapter_{章节号}_state.json
{
"chapter_index": 1,
"protagonist": {
"name": "主角姓名",
"age": 18,
"level": "练气一层",
"status": "健康",
"personality": "坚韧不拔",
"abilities": ["基础剑法"],
"goal": "成为强者"
},
"inventory": [
{
"item_name": "铁剑",
"description": "普通的铁制长剑"
}
],
"relationships": [
{
"name": "师父",
"relation": "师徒",
"status": "友好"
}
],
"current_plot_summary": "主角开始修炼之路"
}
位置: data/{novel_id}_world_bible_{版本号}.json
{
"world_name": "修仙世界",
"setting": "古代修仙背景",
"power_system": "练气->筑基->金丹->元婴",
"locations": ["青云宗", "天剑峰"],
"important_items": ["九转玄功", "天剑"],
"key_npcs": ["掌门", "师兄"]
}
位置: xiaoshuo/{novel_id}_chapter_{章节号}.txt
纯文本格式,存储生成的章节内容。
索引文件: memory/{novel_id}_index.json
{
"session_id": "novel_id",
"total_messages": 50,
"chunks": {
"1": {"start": 1, "end": 100, "count": 100}
},
"summaries": {
"1": {"file": "summary_001.json", "created_at": 1234567890}
}
}
分片文件: memory/chunks/{novel_id}_chunk_{编号}.json
摘要文件: memory/summaries/{novel_id}_summary_{编号}.json
# 生成章节
generator.generate_chapter(
chapter_outline="章节大纲",
model_name="deepseek_chat", # 模型选择
novel_id="项目ID", # 小说项目ID
use_memory=True, # 是否使用记忆
use_state=True, # 是否使用状态
update_state=True # 是否更新状态
)
# 对话交互
generator.chat(
user_input="用户输入",
session_id="会话ID",
model_name="deepseek_chat"
)
# 状态更新
new_state = generator.update_state(
chapter_content="章节内容",
current_state=current_state,
novel_id="项目ID"
)
GET /
- Web界面POST /generate
- 生成章节GET /novels
- 获取小说列表GET /novel/{novel_id}/info
- 获取小说信息POST /chat
- 对话接口
- DeepSeek: deepseek_chat, deepseek_reasoner
- OpenAI: openai_gpt4, openai_gpt35
- Anthropic: anthropic_claude
- Google: google_gemini
- 其他: dsf5 (第三方接口)
MIT License