Update README.md

This commit is contained in:
YILING0013
2025-02-07 21:44:06 +08:00
parent ef0f1ce5a1
commit 2346524682
+28 -26
View File
@@ -1,8 +1,5 @@
# 📖 自动小说生成工具 # 📖 自动小说生成工具
## 2025/2/5说明
>当前**dev-2**分支采用了**雪花写作法、角色弧光理论、悬念三要素模型**的预设,尚在完善中,但就测试质量来说,小说质量会高于当前main分支效果。
<div align="center"> <div align="center">
**核心功能** **核心功能**
@@ -35,7 +32,7 @@
## 🛠 环境准备 ## 🛠 环境准备
确保满足以下运行条件: 确保满足以下运行条件:
- **Python 3.10+** 运行环境 - **Python 3.9+** 运行环境(推荐3.10-3.12之间)
- **pip** 包管理工具 - **pip** 包管理工具
- 有效API密钥: - 有效API密钥:
- 云端服务:OpenAI / DeepSeek 等 - 云端服务:OpenAI / DeepSeek 等
@@ -48,11 +45,11 @@
1. **下载项目** 1. **下载项目**
- 通过 [GitHub](https://github.com) 下载项目 ZIP 文件,或使用以下命令克隆本项目: - 通过 [GitHub](https://github.com) 下载项目 ZIP 文件,或使用以下命令克隆本项目:
```bash ```bash
git clone https://github.com/your-repo/project-name.git](https://github.com/YILING0013/AI_NovelGenerator git clone https://github.com/YILING0013/AI_NovelGenerator
``` ```
2. **安装编译工具** 2. **安装编译工具(可选)**
- 访问 [Visual Studio Build Tools](https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/) 下载并安装编译工具 - 如果对某些包无法正常安装,访问 [Visual Studio Build Tools](https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/) 下载并安装C++编译工具,用于构建部分模块包;
- 安装时,默认只包含 MSBuild 工具,需手动勾选左上角列表栏中的 **C++ 桌面开发** 选项。 - 安装时,默认只包含 MSBuild 工具,需手动勾选左上角列表栏中的 **C++ 桌面开发** 选项。
3. **安装依赖并运行** 3. **安装依赖并运行**
@@ -69,6 +66,12 @@
python main.py python main.py
``` ```
>如果缺失部分依赖,后续**手动执行**
>```bash
>pip install XXX
>```
>进行安装即可
## 🗂 项目架构 ## 🗂 项目架构
``` ```
novel-generator/ novel-generator/
@@ -77,7 +80,8 @@ novel-generator/
├── novel_generator.py # 章节生成核心逻辑 ├── novel_generator.py # 章节生成核心逻辑
├── consistency_checker.py # 一致性检查, 防止剧情冲突 ├── consistency_checker.py # 一致性检查, 防止剧情冲突
|—— chapter_directory_parser.py # 目录解析 |—— chapter_directory_parser.py # 目录解析
|—— embedding_ollama.py # Ollama 本地服务的 Embedding 接口 |—— embedding_adapters.py # Embedding 接口封装
|—— llm_adapters.py # LLM 接口封装
├── prompt_definitions.py # 定义 AI 提示词 ├── prompt_definitions.py # 定义 AI 提示词
├── utils.py # 常用工具函数, 文件操作 ├── utils.py # 常用工具函数, 文件操作
├── config_manager.py # 管理配置 (API Key, Base URL) ├── config_manager.py # 管理配置 (API Key, Base URL)
@@ -91,18 +95,22 @@ novel-generator/
### 📌 基础配置(config.json ### 📌 基础配置(config.json
```json ```json
{ {
"api_key": "sk-XXXXXXXXXXXXXXXXXXXXXXXXXX", "api_key": "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"base_url": "https://api.openai.com/v1", "base_url": "https://api.openai.com/v1",
"interface_format": "OpenAI", "interface_format": "OpenAI",
"model_name": "gpt-4o-mini", "model_name": "gpt-4o-mini",
"temperature": 0.7,
"max_tokens": 4096,
"embedding_api_key": "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"embedding_interface_format": "OpenAI",
"embedding_url": "https://api.openai.com/v1", "embedding_url": "https://api.openai.com/v1",
"embedding_model_name": "text-embedding-ada-002", "embedding_model_name": "text-embedding-ada-002",
"temperature": 0.70, "embedding_retrieval_k": 4,
"topic": "星穹铁道主角星穿越到原神提瓦特大陆,拯救提瓦特大陆,并与其中的角色展开爱恨情仇的小说", "topic": "星穹铁道主角星穿越到原神提瓦特大陆,拯救提瓦特大陆,并与其中的角色展开爱恨情仇的小说",
"genre": "玄幻", "genre": "玄幻",
"num_chapters": 10, "num_chapters": 120,
"word_number": 2000, "word_number": 4000,
"filepath": "C:/Users/Documents/test" "filepath": "D:/AI_NovelGenerator/filepath"
} }
``` ```
@@ -113,10 +121,12 @@ novel-generator/
- `interface_format`: 接口模式 - `interface_format`: 接口模式
- `model_name`: 主生成模型名称(如gpt-4, claude-3等) - `model_name`: 主生成模型名称(如gpt-4, claude-3等)
- `temperature`: 创意度参数(0-1,越高越有创造性) - `temperature`: 创意度参数(0-1,越高越有创造性)
- `max_tokens`: 模型最大回复长度
2. **Embedding模型配置** 2. **Embedding模型配置**
- `embedding_model_name`: 模型名称(如Ollama的nomic-embed-text - `embedding_model_name`: 模型名称(如Ollama的nomic-embed-text
- `embedding_url`: 服务地址 - `embedding_url`: 服务地址
- `embedding_retrieval_k`:
3. **小说参数配置** 3. **小说参数配置**
- `topic`: 核心故事主题 - `topic`: 核心故事主题
@@ -202,21 +212,13 @@ pyinstaller main.spec
--- ---
## ❓ 疑难解答 ## ❓ 疑难解答
### Q1: 如何验证Embedding服务是否正常? ### Q1: Expecting value: line 1 column 1 (char 0)
```python
# 测试脚本 test_embedding.py
from core.embedding import get_embedder
embedder = get_embedder() 该问题大概率由于API未正确响应造成,也许响应了一个html?其它内容,导致出现该报错;
test_text = "这是一个测试句子"
vector = embedder.embed_query(test_text)
print(f"向量维度: {len(vector)}") # 正常应输出预设维度数
```
### Q2: 本地Embedding响应缓慢怎么办?
- 检查模型是否已下载到本地 ### Q2: HTTP/1.1 504 Gateway Timeout
- 尝试较小尺寸的Embedding模型 确认接口是否稳定;
- 增加Ollama服务的运行内存
### Q3: 如何切换不同的Embedding提供商? ### Q3: 如何切换不同的Embedding提供商?
在GUI界面中对应输入即可。 在GUI界面中对应输入即可。