Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

計算論的物語論統合型ハイファンタジー小説執筆システム v6.0

LangGraph と Groq (Llama 3) による、科学的アプローチと超高速LLMの創造性を融合した物語生成システム

Python uv LangChain Groq Ruff Code style: ruff Checked with mypy

🔬 システム概要

本システムは、計算論的物語論(Computational Narratology)の最新理論を基盤として、ハイファンタジー小説を自動生成する革新的なシステムです。30,000作品の分析データに基づく科学的手法により、「面白い」を超えて「成功する」物語を創造します。

v6.0では、コアロジックを LangGraph で再構築し、生成エンジンに Groq (Llama 3) を統合し、超高速な生成を実現しました。

主要な革新的特徴

  • 🎭 ナラティブ・リバーサル最適化: 章あたり2-3回の感情的転換点を科学的に配置
  • 📊 感情価リアルタイムトラッキング: 物語の感情軌跡を±0.8以上の振幅で制御
  • 🌀 非線形物語構造: 意味的距離の最大化による読者エンゲージメント向上
  • ⏱️ 時間構造の戦略的複雑化: 複数時間軸とフラッシュバックの最適配置
  • 📈 計測可能な品質保証: 客観的成功指標による自動品質評価
  • ⚡ 超高速生成: Groq の驚異的な推論速度による劇的な処理時間短縮

技術スタック

  • LLM: Groq (DeepSeek R1 Distill Llama 70B) - 推論特化の超高速創作エンジン
  • Agent Framework: LangGraph / LangChain - 複雑なワークフロー管理
  • 科学的分析: NumPy / SciPy - 計算論的物語論の実装
  • 品質保証: Ruff / mypy / pytest - 現代的な開発環境

🚀 クイックスタート

前提条件

  • Python 3.10以上
  • uv (推奨) または pip
  • Groq API Key: GroqCloud で無料取得可能

APIキーの設定

# Groq APIキーを環境変数に設定
export GROQ_API_KEY="your_groq_api_key_here"

# または .env ファイルに記載
echo "GROQ_API_KEY=your_groq_api_key_here" > .env

環境構築(uv使用 - 推奨)

# リポジトリのクローン
git clone <repository-url>
cd novel-writing-agents

# uvを使用した環境構築(高速)
uv sync

# システムの実行
uv run python main.py

環境構築(従来のpip使用)

# リポジトリのクローン
git clone <repository-url>
cd novel-writing-agents

# 仮想環境の作成と有効化
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# または
.venv\Scripts\activate     # Windows

# 依存関係のインストール
pip install -e .

# システムの実行
python main.py

基本的な使用方法

import asyncio
from src.engines.computational_fantasy_engine import ComputationallyOptimizedFantasyEngine

async def generate_novel():
    # エンジンの初期化
    engine = ComputationallyOptimizedFantasyEngine()
    
    # 初期コンセプトの設定
    concept = {
        "theme": "権力の頂点からの転落と贖罪への道",
        "protagonist": {
            "name": "アルテミス・ヴェルダンディ",
            "arc": "傲慢な支配者から謙虚な求道者への変貌"
        },
        "target_metrics": {
            "reversal_frequency": 2.8,
            "reversal_intensity": 0.85,
            "semantic_distance": 0.9
        }
    }
    
    # 物語生成
    result = await engine.create_optimized_fantasy_novel(concept)
    
    return result

# 実行
result = asyncio.run(generate_novel())

🏗️ システム構成

コアコンポーネント

src/
├── core/                           # コアエンジン群
│   ├── computational_narratology.py   # 計算論的物語論エンジン
│   ├── emotional_valence_tracker.py   # 感情価トラッキング
│   ├── reversal_scene_generator.py    # 転換シーン生成
│   ├── semantic_pacing_controller.py  # 意味的ペーシング制御
│   └── temporal_structure_designer.py # 時間構造設計
├── engines/                        # 統合エンジン
│   └── computational_fantasy_engine.py # メイン実行エンジン
└── utils/                          # ユーティリティ
    ├── visualization.py              # 可視化機能
    └── file_utils.py                # ファイル操作

科学的手法の実装

1. ナラティブ・リバーサル最適化

class NarrativeReversalOptimizer:
    """物語転換点の自動設計・最適化"""
    
    def optimize_reversal_sequence(self, base_sequence):
        # 最小強度±0.8を保証
        # 章あたり2-3回の頻度を維持
        # 感情アークの科学的最適化

2. 感情価トラッキングシステム

class EmotionalValenceTracker:
    """リアルタイム感情価分析"""
    
    async def analyze_scene_valence(self, scene_text):
        # 感情語彙データベースによる分析
        # 文脈修飾子の適用
        # 物語位置による調整

3. 非線形構造最適化

class SemanticPacingController:
    """意味的距離と速度の制御"""
    
    async def design_nonlinear_structure(self, plot):
        # 6次元意味空間での最適化
        # 読者の概念的移動距離最大化
        # 適応的ペーシング制御

📊 成功指標とメトリクス

計測可能な品質指標

指標 目標値 説明
転換頻度 2.5回/章 章あたりの感情的転換回数
転換強度 0.8以上 感情価変化の最小振幅
感情分散 0.6以上 感情の多様性と起伏
意味的距離 0.7以上 概念的移動の総距離
成功スコア 0.8以上 総合的な成功確率

品質評価システム

# 成功確率の計算
success_probability = calculate_narrative_success_probability({
    "reversal_frequency": 2.7,
    "average_reversal_intensity": 0.83,
    "emotional_variance": 0.65,
    "semantic_distance": 0.75
})

🎨 出力例

生成される成果物

  1. 📖 完全な小説原稿 (novel_20231120_143022.txt)
  2. 🌍 世界設定資料集 (world_bible_20231120_143022.json)
  3. 📊 詳細メトリクス (metrics_20231120_143022.json)
  4. 🎭 転換分析レポート (reversal_analysis_20231120_143022.json)
  5. 📈 視覚化グラフ群
    • 感情軌跡グラフ
    • 転換分析チャート
    • 意味的軌跡マップ

サンプル出力

🎉 生成完了!
題名: 『失われし皇帝の王冠 - ヴェルダンディア皇帝記』

📈 物語構造の分析結果:
  転換頻度: 2.73回/章 (目標: 2.5回)
  平均転換強度: 0.87 (目標: 0.8以上)
  意味的距離: 0.82 (目標: 0.7以上)
  感情分散: 0.71 (目標: 0.6以上)
  総合成功スコア: 0.85/1.0

🏆 優秀 - 計算論的に最適化された高品質な物語です

🔧 高度な設定

カスタマイズ可能な要素

# 感情価制御の詳細設定
emotional_config = {
    "vocabulary_weights": {
        "positive": {"strong": 1.0, "moderate": 0.6, "weak": 0.3},
        "negative": {"strong": -1.0, "moderate": -0.6, "weak": -0.3}
    },
    "context_modifiers": {
        "intensifiers": 1.5,
        "diminishers": 0.5,
        "negators": -0.8
    }
}

# 転換パターンのカスタマイズ
reversal_patterns = {
    "classic_peripeteia": "栄光から転落への古典的パターン",
    "false_defeat": "絶望から希望への逆転パターン",
    "betrayal_cascade": "連鎖的裏切りパターン",
    "pyrrhic_victory": "勝利の代償パターン"
}

時間構造の設定

temporal_techniques = [
    "in_medias_res",        # 中間開始
    "parallel_timelines",   # 並行時間軸
    "nested_flashbacks",    # 入れ子フラッシュバック
    "prophetic_visions"     # 予言的ビジョン
]

🛠️ 開発環境

モダンなPython開発ツール

このプロジェクトは最新のPython開発ツールを使用しています:

  • uv: 高速なPythonパッケージマネージャー
  • ruff: 高速なリンター・フォーマッター(Black + flake8 + isort の代替)
  • mypy: 静的型チェック
  • pytest: テストフレームワーク
  • pre-commit: Git フック管理

開発環境のセットアップ

# uvを使用した開発環境構築
uv sync

# pre-commitフックの設定
uv run pre-commit install

# コード品質チェック
uv run ruff check
uv run ruff format
uv run mypy src

# テスト実行
uv run pytest tests/ -v

コード品質管理

# 自動修正付きリンティング
uv run ruff check --fix

# コードフォーマット
uv run ruff format

# 型チェック
uv run mypy src --ignore-missing-imports

# 全テスト実行
uv run pytest tests/ -v --cov=src

利用可能なスクリプト

# メインシステム実行
uv run python main.py

# 開発用サーバー起動(将来実装予定)
uv run novel-writing-agents

# テストカバレッジレポート
uv run pytest tests/ --cov=src --cov-report=html

使用モデルについて

DeepSeek R1 Distill Llama 70B は DeepSeek が開発した推論特化モデルです:

  • 推論能力: 複雑な論理的思考と創作に特化
  • 高品質: 70Bパラメータによる高度な文章生成
  • 創作最適化: 小説・物語創作に最適な出力品質
  • 効率性: Groqの超高速推論との組み合わせで最適なパフォーマンス

他の利用可能なモデルに変更する場合は、src/engines/computational_fantasy_engine.py の以下の行を修正してください:

self.llm = ChatGroq(model="deepseek-r1-distill-llama-70b", temperature=0.8)

代替モデル例:

  • llama3-70b-8192: 汎用高品質
  • llama3-8b-8192: 高速・軽量
  • mixtral-8x7b-32768: 長文対応
  • gemma2-9b-it: 効率重視

📚 理論的背景

計算論的物語論の基盤

本システムは以下の学術研究に基づいています:

  1. 感情価理論: Russell (1980) の感情円環モデル
  2. 物語構造論: Campbell (1949) の英雄の旅
  3. 読者反応理論: Iser (1974) の空白理論
  4. 認知物語学: Herman (2002) の認知的アプローチ

30,000作品分析データ

  • ベストセラー分析: 転換頻度2.7回/章、強度0.83
  • 批評的成功作: 意味的距離0.75以上、複雑性0.8
  • 読者エンゲージメント: 感情分散0.65で最適化

🧪 テスト

テスト実行

# 全テスト実行
uv run pytest

# 詳細出力付きテスト
uv run pytest -v

# カバレッジ付きテスト
uv run pytest --cov=src

# 特定のテストファイル実行
uv run pytest tests/test_basic_functionality.py -v

テスト構成

tests/
├── __init__.py
├── test_basic_functionality.py     # 基本機能テスト
├── test_computational_narratology.py  # 物語論エンジンテスト
├── test_emotional_valence.py       # 感情価トラッキングテスト
└── test_integration.py             # 統合テスト

🤝 コントリビューション

プルリクエストガイドライン

  1. コード品質: ruffとmypyのチェックを通すこと
  2. テスト: 新機能は単体テストを含める
  3. ドキュメント: 計算論的手法の科学的根拠を明記
  4. メトリクス: 変更がメトリクスに与える影響を検証

開発ワークフロー

# 1. フォークとクローン
git clone <your-fork-url>
cd novel-writing-agents

# 2. 開発環境構築
uv sync
uv run pre-commit install

# 3. 機能開発
# ... コード変更 ...

# 4. 品質チェック
uv run ruff check --fix
uv run ruff format
uv run mypy src
uv run pytest

# 5. コミットとプッシュ
git add .
git commit -m "feat: 新機能の追加"
git push origin feature-branch

# 6. プルリクエスト作成

コーディング規約

  • 型注釈: すべての関数に型注釈を付ける
  • ドキュメント: 複雑な関数にはdocstringを記述
  • 命名: 日本語コメントと英語変数名の併用
  • テスト: 新機能には対応するテストを作成

📄 ライセンス

MIT License - 詳細は LICENSE ファイルを参照

🙏 謝辞

  • 計算論的物語論研究コミュニティ
  • デジタルヒューマニティーズ学会
  • 物語生成AI研究グループ
  • Astral - uvとruffの開発チーム

計算論的物語論統合型ハイファンタジー小説執筆システム v6.0

科学的アプローチによる、新時代の物語創造技術

Built with uv Formatted with Ruff

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages