gpt/docs/development.md
2025-06-01 21:43:16 +09:00

4.1 KiB
Raw Permalink Blame History

開発者向けガイド

アーキテクチャ

ディレクトリ構造

ai_gpt/
├── src/ai_gpt/
│   ├── __init__.py
│   ├── models.py        # データモデル定義
│   ├── memory.py        # 記憶管理システム
│   ├── relationship.py  # 関係性トラッカー
│   ├── fortune.py       # AI運勢システム
│   ├── persona.py       # 統合人格システム
│   ├── transmission.py  # 送信コントローラー
│   ├── scheduler.py     # スケジューラー
│   ├── config.py        # 設定管理
│   ├── ai_provider.py   # AI統合Ollama/OpenAI
│   ├── mcp_server.py    # MCP Server実装
│   └── cli.py          # CLIインターフェース
├── docs/               # ドキュメント
├── tests/              # テスト
└── pyproject.toml      # プロジェクト設定

主要コンポーネント

MemoryManager

階層的記憶システムの実装。会話を記録し、要約・コア判定・忘却を管理。

memory = MemoryManager(data_dir)
memory.add_conversation(conversation)
memory.summarize_memories(user_id)
memory.identify_core_memories()
memory.apply_forgetting()

RelationshipTracker

ユーザーとの関係性を追跡。不可逆的なダメージと時間減衰を実装。

tracker = RelationshipTracker(data_dir)
relationship = tracker.update_interaction(user_id, delta)
tracker.apply_time_decay()

Persona

すべてのコンポーネントを統合し、一貫した人格を提供。

persona = Persona(data_dir)
response, delta = persona.process_interaction(user_id, message)
state = persona.get_current_state()

拡張方法

新しいAIプロバイダーの追加

  1. ai_provider.pyに新しいプロバイダークラスを作成:
class CustomProvider:
    async def generate_response(
        self,
        prompt: str,
        persona_state: PersonaState,
        memories: List[Memory],
        system_prompt: Optional[str] = None
    ) -> str:
        # 実装
        pass
  1. create_ai_provider関数に追加:
def create_ai_provider(provider: str, model: str, **kwargs):
    if provider == "custom":
        return CustomProvider(model=model, **kwargs)
    # ...

新しいスケジュールタスクの追加

  1. TaskTypeenumに追加
class TaskType(str, Enum):
    CUSTOM_TASK = "custom_task"
  1. ハンドラーを実装:
async def _handle_custom_task(self, task: ScheduledTask):
    # タスクの実装
    pass
  1. task_handlersに登録:
self.task_handlers[TaskType.CUSTOM_TASK] = self._handle_custom_task

新しいMCPツールの追加

mcp_server.py_register_toolsメソッドに追加:

@self.server.tool("custom_tool")
async def custom_tool(param1: str, param2: int) -> Dict[str, Any]:
    """カスタムツールの説明"""
    # 実装
    return {"result": "value"}

テスト

# テストの実行(将来実装)
pytest tests/

# 特定のテスト
pytest tests/test_memory.py

デバッグ

ログレベルの設定

import logging
logging.basicConfig(level=logging.DEBUG)

データファイルの直接確認

# 関係性データを確認
cat ~/.config/aigpt/data/relationships.json | jq

# 記憶データを確認
cat ~/.config/aigpt/data/memories.json | jq

貢献方法

  1. フォークする
  2. フィーチャーブランチを作成 (git checkout -b feature/amazing-feature)
  3. 変更をコミット (git commit -m 'Add amazing feature')
  4. ブランチにプッシュ (git push origin feature/amazing-feature)
  5. プルリクエストを作成

設計原則

  1. 不可逆性: 一度失われた関係性は回復しない
  2. 階層性: 記憶は重要度によって階層化される
  3. 自律性: AIは関係性に基づいて自発的に行動する
  4. 唯一性: 各ユーザーとの関係は唯一無二

ライセンス

MIT License