|
| 1 | +# 📖 自動小説生成ツール |
| 2 | + |
| 3 | +[中文文档](./README_zh-CN.md) | [English](./README.md) | 日本語 |
| 4 | + |
| 5 | +> ~~現在このプロジェクトを維持する余裕があまりありません。プロジェクト自体に収益はなく、卒業も近づいているため、他にも忙しいことがたくさんあります。後で時間があれば、より新しい技術を使ってリファクタリングすることを検討するかもしれません。——2025/09/24~~ |
| 6 | +> |
| 7 | +>- ~~**(2026/03/09):** 本プロジェクトは近日中にリファクタリングを開始し、より先進的な技術実装と新しい創造的なコンセプトを採用する予定です。~~ |
| 8 | +> |
| 9 | +> **更新 (2026/03/25):** リファクタリング版は初期開発が完了しました(メインフレームワークのみで、機能はまだ利用できません)。1週間以内に dev ブランチへアップロードされ、以降の開発もブランチで同期されます。 |
| 10 | +
|
| 11 | +<div align="center"> |
| 12 | + |
| 13 | +✨ **コア機能** ✨ |
| 14 | + |
| 15 | +| モジュール | 主な機能 | |
| 16 | +|------------------------|------------------------------------------------| |
| 17 | +| 🎨 小説設定ワークショップ | 世界観構築 / キャラクター設計 / プロット設計図 | |
| 18 | +| 📖 インテリジェント章生成 | 多段階生成によりプロットの一貫性を確保 | |
| 19 | +| 🧠 状態追跡システム | キャラクター成長軌跡 / 伏線管理 | |
| 20 | +| 🔍 セマンティック検索 | ベクトルベースの長期コンテキスト整合性 | |
| 21 | +| 📚 ナレッジベース統合 | ローカルドキュメント参照に対応 | |
| 22 | +| ✅ 自動校正機能 | プロットの矛盾と論理的衝突を検出 | |
| 23 | +| 🖥 ビジュアルワークベンチ | 設定 / 生成 / 校正をカバーする全工程 GUI | |
| 24 | + |
| 25 | +</div> |
| 26 | + |
| 27 | +> 大規模言語モデルを基盤とした多機能小説ジェネレーターです。設定が統一され、論理が緻密な長編ストーリーを効率的に創作することを支援します。 |
| 28 | +
|
| 29 | +--- |
| 30 | + |
| 31 | +## 📑 目次 |
| 32 | +1. [環境準備](#-環境準備) |
| 33 | +2. [プロジェクト構成](#-プロジェクト構成) |
| 34 | +3. [設定ガイド](#️-設定ガイド) |
| 35 | +4. [実行方法](#-実行方法) |
| 36 | +5. [使い方](#-使い方) |
| 37 | +6. [FAQ](#-faq) |
| 38 | + |
| 39 | +--- |
| 40 | + |
| 41 | +## 🛠 環境準備 |
| 42 | +以下の要件を満たす環境を用意してください: |
| 43 | +- **Python 3.9+**(推奨: 3.10–3.12) |
| 44 | +- **pip** パッケージマネージャー |
| 45 | +- 有効な API キー: |
| 46 | + - クラウドサービス: OpenAI / DeepSeek など |
| 47 | + - ローカルサービス: Ollama などの OpenAI 互換インターフェース |
| 48 | + |
| 49 | +--- |
| 50 | + |
| 51 | +## 📥 インストール |
| 52 | +1. **プロジェクトを取得** |
| 53 | + - [GitHub](https://github.com) から ZIP をダウンロードするか、リポジトリをクローンします: |
| 54 | + ```bash |
| 55 | + git clone https://github.com/YILING0013/AI_NovelGenerator |
| 56 | + ``` |
| 57 | + |
| 58 | +2. **ビルドツールのインストール(任意)** |
| 59 | + - 一部のパッケージがインストールに失敗する場合は、[Visual Studio Build Tools](https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/) から C++ ビルドツールをダウンロード・インストールしてください。 |
| 60 | + - デフォルトではインストーラーに MSBuild のみが含まれます。ワークロードから **C++ によるデスクトップ開発** を必ず選択してください。 |
| 61 | + |
| 62 | +3. **依存関係をインストールして実行** |
| 63 | + - ターミナルを開き、プロジェクトディレクトリに移動します: |
| 64 | + ```bash |
| 65 | + cd AI_NovelGenerator |
| 66 | + ``` |
| 67 | + - (任意)仮想環境を作成して有効化します: |
| 68 | + ```bash |
| 69 | + python -m venv .venv |
| 70 | + # 動作しない場合は次を試してください: |
| 71 | + # python3 -m venv .venv |
| 72 | + ``` |
| 73 | + ``` |
| 74 | + # Windows の場合: |
| 75 | + .venv/Scripts/activate |
| 76 | + ``` |
| 77 | + ``` |
| 78 | + # Linux / Mac の場合: |
| 79 | + source .venv/bin/activate |
| 80 | + ``` |
| 81 | + - プロジェクトの依存関係をインストールします: |
| 82 | + ```bash |
| 83 | + pip install -r requirements.txt |
| 84 | + ``` |
| 85 | + - インストール完了後、メインプログラムを実行します: |
| 86 | + ```bash |
| 87 | + python main.py |
| 88 | + ``` |
| 89 | + |
| 90 | +依存関係が不足している場合は、手動でインストールしてください: |
| 91 | +```bash |
| 92 | +pip install <パッケージ名> |
| 93 | +``` |
| 94 | + |
| 95 | +## 🗂 プロジェクト構成 |
| 96 | +``` |
| 97 | +novel-generator/ |
| 98 | +├── main.py # エントリーポイント、GUI を起動 |
| 99 | +├── consistency_checker.py # 一致性チェック、プロット矛盾を防止 |
| 100 | +|—— chapter_directory_parser.py # ディレクトリ解析 |
| 101 | +|—— embedding_adapters.py # Embedding インターフェースラッパー |
| 102 | +|—— llm_adapters.py # LLM インターフェースラッパー |
| 103 | +├── prompt_definitions.py # AI プロンプトテンプレート |
| 104 | +├── utils.py # ユーティリティ関数とファイル操作 |
| 105 | +├── config_manager.py # 設定マネージャー (API キー、Base URL) |
| 106 | +├── config.json # ユーザー設定 (任意) |
| 107 | +├── novel_generator/ # 章生成のコアロジック |
| 108 | +├── ui/ # グラフィカルユーザーインターフェース |
| 109 | +└── vectorstore/ # (任意) ローカルベクトル DB ストレージ |
| 110 | +``` |
| 111 | +
|
| 112 | +--- |
| 113 | +
|
| 114 | +## ⚙️ 設定ガイド |
| 115 | +### 📌 基本設定 (`config.json`) |
| 116 | +```json |
| 117 | +{ |
| 118 | + "api_key": "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", |
| 119 | + "base_url": "https://api.openai.com/v1", |
| 120 | + "interface_format": "OpenAI", |
| 121 | + "model_name": "gpt-4o-mini", |
| 122 | + "temperature": 0.7, |
| 123 | + "max_tokens": 4096, |
| 124 | + "embedding_api_key": "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", |
| 125 | + "embedding_interface_format": "OpenAI", |
| 126 | + "embedding_url": "https://api.openai.com/v1", |
| 127 | + "embedding_model_name": "text-embedding-ada-002", |
| 128 | + "embedding_retrieval_k": 4, |
| 129 | + "topic": "崩壊スターレイルの主人公が原神のテイワット大陸へ転移し、世界を救いながらキャラクターたちと複雑な関係を築いていく物語。", |
| 130 | + "genre": "ファンタジー", |
| 131 | + "num_chapters": 120, |
| 132 | + "word_number": 4000, |
| 133 | + "filepath": "D:/AI_NovelGenerator/filepath" |
| 134 | +} |
| 135 | +``` |
| 136 | + |
| 137 | +### 🔧 各項目の説明 |
| 138 | +1. **生成モデル設定** |
| 139 | + - `api_key`: LLM サービスの API キー |
| 140 | + - `base_url`: API エンドポイント(ローカルサービスでは Ollama のアドレスを指定) |
| 141 | + - `interface_format`: インターフェース形式 |
| 142 | + - `model_name`: メイン生成モデル名(例: gpt-4、claude-3) |
| 143 | + - `temperature`: 創造性パラメータ(0–1、高いほど創造的) |
| 144 | + - `max_tokens`: モデル応答の最大長 |
| 145 | + |
| 146 | +2. **Embedding モデル設定** |
| 147 | + - `embedding_model_name`: Embedding モデル名(例: Ollama の nomic-embed-text) |
| 148 | + - `embedding_url`: サービスのエンドポイント |
| 149 | + - `embedding_retrieval_k`: 取得する近傍数 |
| 150 | + |
| 151 | +3. **小説パラメータ** |
| 152 | + - `topic`: メインストーリーのテーマ |
| 153 | + - `genre`: ジャンル |
| 154 | + - `num_chapters`: 全体の章数 |
| 155 | + - `word_number`: 1章あたりの目標文字数 |
| 156 | + - `filepath`: 生成ファイルの保存先パス |
| 157 | + |
| 158 | +--- |
| 159 | + |
| 160 | +## 🚀 実行方法 |
| 161 | +### 方法 1 — Python で実行 |
| 162 | +```bash |
| 163 | +python main.py |
| 164 | +``` |
| 165 | +GUI が起動し、対話的に操作できます。 |
| 166 | + |
| 167 | +### 方法 2 — 実行ファイルへパッケージング |
| 168 | +Python のない環境で実行したい場合は **PyInstaller** でパッケージングします: |
| 169 | +```bash |
| 170 | +pip install pyinstaller |
| 171 | +pyinstaller main.spec |
| 172 | +``` |
| 173 | +パッケージング後、`dist/` フォルダに実行ファイル(Windows の場合 `main.exe` など)が生成されます。 |
| 174 | + |
| 175 | +--- |
| 176 | + |
| 177 | +## 📘 使い方 |
| 178 | +1. **アプリ起動後、基本パラメータを入力します:** |
| 179 | + - **API Key & Base URL**(例: `https://api.openai.com/v1`) |
| 180 | + - **モデル名**(例: `gpt-3.5-turbo`、`gpt-4o`) |
| 181 | + - **Temperature**(0–1、創造性のばらつきを制御) |
| 182 | + - **トピック**(例: 「終末世界での AI 蜂起」) |
| 183 | + - **ジャンル**(例: 「SF」/「ファンタジー」/「アーバンファンタジー」) |
| 184 | + - **章数** と **1章あたりの文字数**(例: 10 章 × 約 3000 文字) |
| 185 | + - **保存先**(出力用フォルダを新規作成することを推奨) |
| 186 | + |
| 187 | +2. **「Step1. 設定生成」をクリック** |
| 188 | + - トピック・ジャンル・章数を基に以下を生成します: |
| 189 | + - `Novel_setting.txt`: 世界観、キャラクター、伏線などの設定。 |
| 190 | + - 生成後の設定は閲覧・編集できます。 |
| 191 | + |
| 192 | +3. **「Step2. ディレクトリ生成」をクリック** |
| 193 | + - `Novel_setting.txt` を基に以下を生成します: |
| 194 | + - `Novel_directory.txt`: 章タイトルと短いプロンプト。 |
| 195 | + - 章タイトルと説明は確認・修正できます。 |
| 196 | + |
| 197 | +4. **「Step3. 章ドラフト生成」をクリック** |
| 198 | + - 章を生成する前に以下を設定できます: |
| 199 | + - 章番号(例: `1`) |
| 200 | + - 「本章ガイダンス」欄に各章固有の指示を入力 |
| 201 | + - 章生成時、システムは以下を行います: |
| 202 | + - 既存の設定、`Novel_directory.txt`、確定済みの章を読み込み |
| 203 | + - 一貫性のためにベクトル検索で関連コンテキストを呼び出し |
| 204 | + - 章のアウトライン (`outline_X.txt`) と本文 (`chapter_X.txt`) を生成 |
| 205 | + - エディタペインでドラフトを確認・編集できます。 |
| 206 | + |
| 207 | +5. **「Step4. 現在の章を確定」をクリック** |
| 208 | + - システムは以下を更新します: |
| 209 | + - グローバルサマリー (`global_summary.txt`) |
| 210 | + - キャラクター状態 (`character_state.txt`) |
| 211 | + - ベクトルストア(以降の章で最新情報を利用できるように) |
| 212 | + - 主要なプロットポイント(例: `plot_arcs.txt`) |
| 213 | + - 確定後、確定版テキストが `chapter_X.txt` に保存されます。 |
| 214 | + |
| 215 | +6. **一致性チェック(任意)** |
| 216 | + - 「[任意] 一致性校正」ボタンをクリックすると、最新章をスキャンしてキャラクターのロジックやプロットの矛盾を検出します。 |
| 217 | + - 衝突が見つかった場合は、ログ領域に詳細メッセージが表示されます。 |
| 218 | + |
| 219 | +7. **手順 4–6 を繰り返し**、すべての章を生成・確定します。 |
| 220 | + |
| 221 | +> ベクトル検索のヒント: |
| 222 | +> 1. Embedding のインターフェースとモデル名を明示的に指定してください。 |
| 223 | +> 2. ローカル Ollama の Embedding を使用する場合は、先に Ollama サービスを起動してください: |
| 224 | +> ```bash |
| 225 | +> ollama serve # サービス起動 |
| 226 | +> ollama pull nomic-embed-text # モデルのダウンロード / 有効化 |
| 227 | +> ``` |
| 228 | +> 3. Embedding モデルを切り替えた後は `vectorstore` ディレクトリをクリアしてください。 |
| 229 | +> 4. クラウド Embedding を使用する場合は、API の権限が有効になっていることを確認してください。 |
| 230 | +
|
| 231 | +--- |
| 232 | +
|
| 233 | +## ❓ FAQ |
| 234 | +### Q1: Expecting value: line 1 column 1 (char 0) |
| 235 | +
|
| 236 | +このエラーは通常、API が有効な JSON を返さなかったことを示しています。HTML のエラーページや予期しない内容が返されている可能性があります。 |
| 237 | +
|
| 238 | +### Q2: HTTP/1.1 504 Gateway Timeout? |
| 239 | +
|
| 240 | +API エンドポイントの安定性とネットワーク接続を確認してください。 |
| 241 | +
|
| 242 | +### Q3: Embedding プロバイダーを切り替えるには? |
| 243 | +
|
| 244 | +GUI の Embedding 設定欄に新しいプロバイダーの情報を入力してください。 |
| 245 | +
|
| 246 | +--- |
| 247 | +
|
| 248 | +その他の質問や機能リクエストがあれば、プロジェクトリポジトリの Issue で報告してください。 |
0 commit comments