85 lines
2.3 KiB
Markdown
85 lines
2.3 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## プロジェクト概要
|
|
|
|
Python (FastAPI) バックエンド + Vue 3 (TypeScript) フロントエンドのチャットアプリ。
|
|
LLM は LiteLLM 経由で OpenAI / Anthropic / Ollama など任意のプロバイダーを統一APIで扱い、会話履歴とメモリは SQLite に永続化する。
|
|
|
|
## コマンド
|
|
|
|
### バックエンド
|
|
|
|
```powershell
|
|
Set-Location backend
|
|
|
|
# 依存インストール (uv 推奨)
|
|
uv sync
|
|
# または
|
|
pip install -e .
|
|
|
|
# 開発サーバー起動
|
|
uvicorn app.main:app --reload
|
|
|
|
# テスト
|
|
pytest
|
|
pytest tests/test_chat.py # 単一ファイル
|
|
```
|
|
|
|
### フロントエンド
|
|
|
|
```powershell
|
|
Set-Location frontend
|
|
|
|
# 依存インストール
|
|
npm install
|
|
|
|
# 開発サーバー起動 (port 5173)
|
|
npm run dev
|
|
|
|
# ビルド
|
|
npm run build
|
|
|
|
# 型チェック
|
|
npm run type-check
|
|
```
|
|
|
|
### 環境設定
|
|
|
|
```powershell
|
|
Set-Location backend
|
|
Copy-Item .env.example .env
|
|
# .env を編集してAPIキーとモデル名を設定
|
|
```
|
|
|
|
## アーキテクチャ
|
|
|
|
詳細は `docs/architecture.md` を参照。
|
|
|
|
```
|
|
frontend (Vue3+Pinia, :5173)
|
|
↕ REST + SSE
|
|
backend (FastAPI, :8000)
|
|
├── app/api/ ルーター (chat.py, memory.py)
|
|
├── app/core/ ビジネスロジック (llm.py, memory.py, config.py)
|
|
└── app/db/ SQLAlchemy モデル・DB接続
|
|
↕
|
|
SQLite (playchat.db) + LiteLLM → 任意のLLM
|
|
```
|
|
|
|
### メモリ機構
|
|
|
|
- **短期**: セッション内の全メッセージをコンテキストに含める
|
|
- **長期**: メッセージ数が `MEMORY_SUMMARIZE_THRESHOLD`(デフォルト20) を超えると、古い半分をLLMで要約して `memories` テーブルに保存し、次回以降のシステムプロンプトに注入する
|
|
|
|
### SSEストリーミング
|
|
|
|
`POST /chat/stream` が SSE を返す。チャンク種別: `session_id`(新規セッションID)、`chunk`(テキスト断片)、`done`(完了)。
|
|
フロントは `src/api/client.ts` の `streamChat()` で fetch + ReadableStream により受信。
|
|
|
|
### モデル切替
|
|
|
|
`.env` の `DEFAULT_MODEL` またはリクエストの `model` フィールドで指定。
|
|
ローカル Ollama は `ollama/llama3` 形式で指定、`OLLAMA_API_BASE` でエンドポイントを設定。
|