initial_commit
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# 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` でエンドポイントを設定。
|
||||
Reference in New Issue
Block a user