kofdai commited on
Commit
a2ed773
·
verified ·
1 Parent(s): 9b6340f

Upload docs/STARTUP_GUIDE.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. docs/STARTUP_GUIDE.md +544 -0
docs/STARTUP_GUIDE.md ADDED
@@ -0,0 +1,544 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # NullAI システム起動ガイド
2
+
3
+ ## 概要
4
+
5
+ NullAIは、マルチドメイン対応の知識推論システムです。医療、法律、経済、プログラミングなど、複数の専門領域に対応し、ユーザーが自由にLLMモデルやドメインを追加・管理できます。
6
+
7
+ ### 主な特徴
8
+
9
+ - **ゲストアクセス**: 登録不要でシステムを利用可能
10
+ - **ORCID認証**: 専門家はORCIDで認証し、編集内容に認証マークが付与される
11
+ - **サーバーレス対応**: GitHub/Supabase/JSONBinを使用した無料ストレージ
12
+ - **HuggingFace対応**: Transformers、Inference API、GGUF形式をサポート
13
+ - **樹木型空間記憶**: DendriticMemorySpaceによる効率的な知識管理
14
+
15
+ > **重要**: OpenAI/Anthropic/Ollama等の外部APIは利用規約上の理由から削除されました。
16
+ > NullAIはHuggingFace Transformersおよびオープンソースモデルのみをサポートします。
17
+
18
+ ## システム要件
19
+
20
+ - Python 3.10以上
21
+ - Node.js 18以上
22
+ - GPU(推奨: CUDA対応 または Apple Silicon MPS)
23
+ - PostgreSQL(オプション、SQLiteでも動作)
24
+ - ORCID開発者アカウント(専門家認証機能使用時)
25
+
26
+ ## クイックスタート
27
+
28
+ ### 1. 環境構築
29
+
30
+ ```bash
31
+ # リポジトリのクローン(または既存ディレクトリへ移動)
32
+ cd project_locate
33
+
34
+ # Python仮想環境の作成
35
+ python -m venv venv
36
+ source venv/bin/activate # Windows: venv\Scripts\activate
37
+
38
+ # Python依存パッケージのインストール
39
+ pip install -r requirements.txt
40
+
41
+ # フロントエンド依存パッケージのインストール
42
+ cd frontend
43
+ npm install
44
+ cd ..
45
+ ```
46
+
47
+ ### 2. HuggingFace Transformersのセットアップ
48
+
49
+ ```bash
50
+ # 必要なPythonパッケージのインストール
51
+ pip install transformers torch accelerate
52
+
53
+ # GPU確認
54
+ python -c "import torch; print(f'CUDA: {torch.cuda.is_available()}, MPS: {torch.backends.mps.is_available()}')"
55
+
56
+ # モデルの事前ダウンロード(オプション - 初回実行時に自動ダウンロードされる)
57
+ python -c "from transformers import AutoModelForCausalLM, AutoTokenizer; AutoTokenizer.from_pretrained('deepseek-ai/DeepSeek-R1-Distill-Qwen-7B')"
58
+
59
+ # GGUF形式を使用する場合(CPU環境向け)
60
+ pip install llama-cpp-python
61
+ ```
62
+
63
+ ### 3. 環境変数の設定
64
+
65
+ ```bash
66
+ # .envファイルを作成
67
+ cat > .env << 'EOF'
68
+ # API設定
69
+ SECRET_KEY=your-secret-key-here-change-in-production
70
+ DEBUG=true
71
+ ACCESS_TOKEN_EXPIRE_MINUTES=1440
72
+
73
+ # データベース
74
+ DATABASE_URL=sqlite:///./sql_app.db
75
+
76
+ # HuggingFace設定(オプション - Inference APIを使用する場合)
77
+ # HF_API_KEY=hf_xxx
78
+
79
+ # ========================================
80
+ # 以下のAPIは利用規約上の理由からサポートされていません:
81
+ # - OPENAI_API_KEY (OpenAI)
82
+ # - ANTHROPIC_API_KEY (Anthropic)
83
+ # - OLLAMA_URL (Ollama)
84
+ # HuggingFace Transformersを使用してください。
85
+ # ========================================
86
+
87
+ # ORCID認証(専門家認証機能使用時)
88
+ # ORCID_CLIENT_ID=APP-XXXXXXXXX
89
+ # ORCID_CLIENT_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
90
+ # ORCID_REDIRECT_URI=http://localhost:8000/api/auth/orcid/callback
91
+ # ORCID_SANDBOX=true # 開発時はtrue、本番はfalse
92
+
93
+ # サーバーレスストレージ設定(オプション)
94
+ # OPAQUE_STORAGE_BACKEND=local # local, github, supabase, jsonbin
95
+
96
+ # GitHub Storage
97
+ # GITHUB_TOKEN=ghp_xxxxxxxxxxxx
98
+ # GITHUB_REPO=username/opaque-data
99
+ # GITHUB_BRANCH=main
100
+ # GITHUB_DATA_PATH=data
101
+
102
+ # Supabase Storage
103
+ # SUPABASE_URL=https://xxxxx.supabase.co
104
+ # SUPABASE_ANON_KEY=eyJxxxxxxxx
105
+
106
+ # JSONBin Storage
107
+ # JSONBIN_API_KEY=$2b$xxxxxxxx
108
+ # JSONBIN_BIN_ID=xxxxxxxxxxxxxxxx
109
+ EOF
110
+ ```
111
+
112
+ ### 4. データベース初期化
113
+
114
+ ```bash
115
+ # データベーステーブルの作成
116
+ python backend/create_db.py
117
+ ```
118
+
119
+ ### 5. システムの起動
120
+
121
+ #### 方法A: 個別起動(開発時推奨)
122
+
123
+ ```bash
124
+ # ターミナル1: バックエンドAPIサーバー
125
+ cd project_locate
126
+ source venv/bin/activate
127
+ uvicorn backend.app.main:app --reload --host 0.0.0.0 --port 8000
128
+
129
+ # ターミナル2: フロントエンド開発サーバー
130
+ cd project_locate/frontend
131
+ npm run dev
132
+ ```
133
+
134
+ #### 方法B: Docker Compose(本番環境推奨)
135
+
136
+ ```bash
137
+ # Docker Composeで全サービスを起動
138
+ docker-compose up -d
139
+
140
+ # ログの確認
141
+ docker-compose logs -f
142
+ ```
143
+
144
+ ### 6. アクセス
145
+
146
+ - **フロントエンド**: http://localhost:5173
147
+ - **バックエンドAPI**: http://localhost:8000
148
+ - **API ドキュメント**: http://localhost:8000/docs
149
+ - **Ollama**: http://localhost:11434
150
+
151
+ ## 初期設定
152
+
153
+ ### ユーザー登録
154
+
155
+ 1. http://localhost:5173 にアクセス
156
+ 2. 「Sign up」をクリック
157
+ 3. メールアドレスとパスワードを入力して登録
158
+
159
+ ### 管理者権限の付与
160
+
161
+ ```bash
162
+ # SQLiteの場合
163
+ sqlite3 sql_app.db "UPDATE users SET role='admin' WHERE email='your@email.com';"
164
+
165
+ # または Python スクリプトで
166
+ python -c "
167
+ from backend.app.database.session import SessionLocal
168
+ from backend.app.database.models import User
169
+ db = SessionLocal()
170
+ user = db.query(User).filter(User.email=='your@email.com').first()
171
+ user.role = 'admin'
172
+ db.commit()
173
+ print('Admin role granted')
174
+ "
175
+ ```
176
+
177
+ ## DB拡充コマンド
178
+
179
+ ### 基本的な使い方
180
+
181
+ ```bash
182
+ # ヘルプを表示
183
+ python null_ai/db_enrichment_cli.py --help
184
+
185
+ # 利用可能なモデル一覧
186
+ python null_ai/db_enrichment_cli.py --list-models
187
+
188
+ # 利用可能なドメイン一覧
189
+ python null_ai/db_enrichment_cli.py --list-domains
190
+
191
+ # 生成される質問をプレビュー(実行しない)
192
+ python null_ai/db_enrichment_cli.py --domain medical --preview --count 20
193
+ ```
194
+
195
+ ### DB拡充の実行
196
+
197
+ ```bash
198
+ # 医療ドメインを50件の質問で拡充
199
+ python null_ai/db_enrichment_cli.py --domain medical --count 50
200
+
201
+ # 全ドメインを拡充(各30件)
202
+ python null_ai/db_enrichment_cli.py --all --count 30
203
+
204
+ # 特定のモデルを使用して拡充
205
+ python null_ai/db_enrichment_cli.py --domain legal --model deepseek-r1-32b --count 20
206
+
207
+ # バッチサイズを指定(レート制限対策)
208
+ python null_ai/db_enrichment_cli.py --domain economics --count 100 --batch-size 3
209
+ ```
210
+
211
+ ### Web検索による拡充
212
+
213
+ Web検索を使用して最新情報を収集し、DBを拡充できます:
214
+
215
+ ```bash
216
+ # Web検索で最新情報を収集(DuckDuckGo、無料・キー不要)
217
+ python null_ai/db_enrichment_cli.py --domain medical --web-search --count 10
218
+
219
+ # 特定のクエリでWeb検索
220
+ python null_ai/db_enrichment_cli.py --domain medical --web-search --query "最新の糖尿病治療法 2024"
221
+
222
+ # クエリファイルから検索
223
+ python null_ai/db_enrichment_cli.py --domain legal --web-search --queries-file legal_queries.txt
224
+
225
+ # 利用可能な検索プロバイダーを確認
226
+ python null_ai/db_enrichment_cli.py --list-search-providers
227
+ ```
228
+
229
+ #### 追加の検索プロバイダー(オプション)
230
+
231
+ より高品質な検索結果を得るには、以下の無料APIを設定できます:
232
+
233
+ ```bash
234
+ # Brave Search API(無料2,000クエリ/月)
235
+ # https://brave.com/search/api/ で取得
236
+ BRAVE_API_KEY=your-brave-api-key
237
+
238
+ # Tavily AI Search(AI最適化検索)
239
+ # https://tavily.com/ で取得
240
+ TAVILY_API_KEY=your-tavily-api-key
241
+ ```
242
+
243
+ ### 拡充結果
244
+
245
+ 結果は `enrichment_output/` ディレクトリにJSON形式で保存されます:
246
+
247
+ ```
248
+ enrichment_output/
249
+ ├── enrichment_medical_20241124_120000.json
250
+ ├── enrichment_legal_20241124_121500.json
251
+ ├── web_enrichment_medical_20241124_130000.json # Web検索結果
252
+ └── ...
253
+ ```
254
+
255
+ ## モデル管理
256
+
257
+ ### Web UIでのモデル追加
258
+
259
+ 1. 管理者としてログイン
260
+ 2. 「Settings」→「Models」に移動
261
+ 3. 「Add Model」をクリック
262
+ 4. 必要な情報を入力:
263
+ - Model ID: 一意の識別子(例: `custom-medical-llm`)
264
+ - Display Name: 表示名
265
+ - Provider: `huggingface`, `huggingface_api`, `local`, `gguf`
266
+ - Model Name: HuggingFaceモデルID(例: `deepseek-ai/DeepSeek-R1-Distill-Qwen-7B`)
267
+ - Supported Domains: 対応ドメイン
268
+
269
+ > **サポートされていないプロバイダー**: `openai`, `anthropic`, `ollama` は利用規約上の理由から削除されました。
270
+
271
+ ### APIでのモデル追加
272
+
273
+ ```bash
274
+ # HuggingFaceモデルを追加
275
+ curl -X POST http://localhost:8000/api/models/ \
276
+ -H "Authorization: Bearer YOUR_TOKEN" \
277
+ -H "Content-Type: application/json" \
278
+ -d '{
279
+ "model_id": "qwen2-72b",
280
+ "display_name": "Qwen2.5 72B",
281
+ "provider": "huggingface",
282
+ "model_name": "Qwen/Qwen2.5-72B-Instruct",
283
+ "supported_domains": ["medical", "legal", "general"],
284
+ "description": "高性能多言語モデル"
285
+ }'
286
+
287
+ # モデル接続テスト
288
+ curl -X POST http://localhost:8000/api/models/qwen2-72b/test \
289
+ -H "Authorization: Bearer YOUR_TOKEN"
290
+
291
+ # サポートされているプロバイダー情報を取得
292
+ curl http://localhost:8000/api/models/providers/info
293
+ ```
294
+
295
+ ## ドメイン管理
296
+
297
+ ### 新しいドメインの追加
298
+
299
+ 1. Web UIの「Domains」タブで追加
300
+ 2. または `domains_config.json` を直接編集:
301
+
302
+ ```json
303
+ {
304
+ "domains": [
305
+ {
306
+ "domain_id": "philosophy",
307
+ "name": "Philosophy",
308
+ "description": "哲学・思想に関する知識領域",
309
+ "default_model_id": "deepseek-r1-32b",
310
+ "icon": "philosophy",
311
+ "is_active": true
312
+ }
313
+ ]
314
+ }
315
+ ```
316
+
317
+ ### ドメイン固有の質問テンプレート追加
318
+
319
+ `null_ai/db_enrichment_cli.py` の `DOMAIN_QUESTION_TEMPLATES` に追加:
320
+
321
+ ```python
322
+ "philosophy": {
323
+ "categories": [
324
+ {
325
+ "name": "哲学者",
326
+ "questions": [
327
+ "{philosopher}の主要な思想は何ですか?",
328
+ "{philosopher}の代表的な著作について教えてください。",
329
+ ]
330
+ }
331
+ ],
332
+ "topics": {
333
+ "philosopher": ["プラトン", "アリストテレス", "カント", "ニーチェ"]
334
+ }
335
+ }
336
+ ```
337
+
338
+ ## ORCID認証の設定
339
+
340
+ ### 1. ORCID開発者ア���ウントの作成
341
+
342
+ 1. https://orcid.org/developer-tools にアクセス
343
+ 2. 「Register for the free ORCID public API」をクリック
344
+ 3. アプリケーション情報を入力:
345
+ - **Application Name**: NullAI
346
+ - **Website URL**: http://localhost:5173 (開発時)
347
+ - **Redirect URIs**: http://localhost:8000/api/auth/orcid/callback
348
+ 4. Client IDとClient Secretを取得
349
+
350
+ ### 2. 開発用サンドボックス
351
+
352
+ 開発時はORCIDサンドボックス環境を使用できます:
353
+ - サンドボックス: https://sandbox.orcid.org
354
+ - `.env`で`ORCID_SANDBOX=true`を設定
355
+
356
+ ### 3. 本番環境
357
+
358
+ 本番環境では:
359
+ - 本番用ORCID認証情報を取得
360
+ - `.env`で`ORCID_SANDBOX=false`を設定
361
+ - Redirect URIを本番URLに更新
362
+
363
+ ## ユーザーロールとアクセスレベル
364
+
365
+ | ロール | 説明 | 権限 |
366
+ |-------|------|-----|
367
+ | guest | 未登録ユーザー | 閲覧、質問 |
368
+ | viewer | 登録ユーザー | + 提案の閲覧 |
369
+ | editor | 編集者 | + 提案の作成・レビュー |
370
+ | expert | ORCID認証済み専門家 | + 認証マーク付き編集 |
371
+ | admin | 管理者 | + 全管理機能 |
372
+
373
+ ### 認証マークの種類
374
+
375
+ - **none**: 未検証
376
+ - **community**: コミュニティレビュー済み
377
+ - **expert**: ORCID認証専門家による編集/レビュー
378
+ - **multi_expert**: 複数の専門家による検証
379
+
380
+ ## サーバーレスストレージ設定
381
+
382
+ ### GitHub Storage(推奨)
383
+
384
+ GitHubリポジトリをデータベースとして使用:
385
+
386
+ 1. データ保存用リポジトリを作成
387
+ 2. Personal Access Token (PAT)を生成:
388
+ - Settings > Developer settings > Personal access tokens
389
+ - `repo`スコープを付与
390
+ 3. 環境変数を設定:
391
+ ```bash
392
+ OPAQUE_STORAGE_BACKEND=github
393
+ GITHUB_TOKEN=ghp_xxxxxxxxxxxx
394
+ GITHUB_REPO=username/opaque-data
395
+ GITHUB_BRANCH=main
396
+ GITHUB_DATA_PATH=data
397
+ ```
398
+
399
+ ### Supabase Storage
400
+
401
+ Supabase無料プラン(500MB、50,000リクエスト/月):
402
+
403
+ 1. https://supabase.com でプロジェクト作成
404
+ 2. テーブルを作成:
405
+ ```sql
406
+ CREATE TABLE domains (id text primary key, data jsonb);
407
+ CREATE TABLE proposals (id text primary key, data jsonb);
408
+ CREATE TABLE tiles (id text primary key, data jsonb);
409
+ ```
410
+ 3. 環境変数を設定:
411
+ ```bash
412
+ OPAQUE_STORAGE_BACKEND=supabase
413
+ SUPABASE_URL=https://xxxxx.supabase.co
414
+ SUPABASE_ANON_KEY=eyJxxxxxxxx
415
+ ```
416
+
417
+ ### JSONBin Storage
418
+
419
+ シンプルなJSONストレージ(10,000リクエスト/月無料):
420
+
421
+ 1. https://jsonbin.io でアカウント作成
422
+ 2. 新しいBinを作成(初期データ: `{"collections": {}}`)
423
+ 3. 環境変数を設定:
424
+ ```bash
425
+ OPAQUE_STORAGE_BACKEND=jsonbin
426
+ JSONBIN_API_KEY=$2b$xxxxxxxx
427
+ JSONBIN_BIN_ID=xxxxxxxxxxxxxxxx
428
+ ```
429
+
430
+ ### ストレージ比較
431
+
432
+ | バックエンド | 無料枠 | 特徴 |
433
+ |------------|-------|-----|
434
+ | Local | 無制限 | ローカル開発用 |
435
+ | GitHub | 無制限* | バージョン管理、透明性 |
436
+ | Supabase | 500MB | SQLクエリ、リアルタイム |
437
+ | JSONBin | 10K/月 | シンプル、セットアップ簡単 |
438
+
439
+ *プライベートリポジトリは制限あり
440
+
441
+ ## トラブルシューティング
442
+
443
+ ### HuggingFace Transformersの確認
444
+
445
+ ```bash
446
+ # Transformersが正しくインストールされているか確認
447
+ python -c "from transformers import AutoModel; print('OK')"
448
+
449
+ # GPUが利用可能か確認
450
+ python -c "import torch; print(f'CUDA: {torch.cuda.is_available()}, MPS: {torch.backends.mps.is_available()}')"
451
+ ```
452
+
453
+ ### モデルのダウンロードが遅い
454
+
455
+ ```bash
456
+ # キャッシュディレクトリを確認
457
+ python -c "from transformers import TRANSFORMERS_CACHE; print(TRANSFORMERS_CACHE)"
458
+
459
+ # 軽量モデルを使用(7Bモデル)
460
+ # config.pyでデフォルトモデルを deepseek-r1-7b に変更
461
+ ```
462
+
463
+ ### メモリ不足エラー
464
+
465
+ ```bash
466
+ # 32Bモデルには32GB以上のVRAM/RAMが推奨
467
+ # メモリが足りない場合:
468
+ # 1. 7Bモデルを使用 (models_config.json でデフォルト変更)
469
+ # 2. 4bit量子化を有効化 (config.pyで use_4bit_quantization: true)
470
+ # 3. GGUF形式の量子化モデルを使用
471
+ ```
472
+
473
+ ### データベースエラー
474
+
475
+ ```bash
476
+ # データベースをリセット
477
+ rm sql_app.db
478
+ python backend/create_db.py
479
+ ```
480
+
481
+ ## API エンドポイント一覧
482
+
483
+ | エンドポイント | メソッド | 説明 |
484
+ |---------------|---------|------|
485
+ | `/api/auth/signup` | POST | ユーザー登録 |
486
+ | `/api/auth/token` | POST | ログイン(トークン取得) |
487
+ | `/api/questions/` | POST | 質問を送信 |
488
+ | `/api/questions/ws/{session_id}` | WS | ストリーミング回答 |
489
+ | `/api/domains/` | GET | ドメイン一覧 |
490
+ | `/api/domains/{id}` | GET/PUT/DELETE | ドメイン操作 |
491
+ | `/api/models/` | GET/POST | モデル一覧/追加 |
492
+ | `/api/models/{id}` | GET/PUT/DELETE | モデル操作 |
493
+ | `/api/models/{id}/test` | POST | モデル接続テスト |
494
+ | `/api/proposals/` | GET/POST | 編集提案一覧/作成 |
495
+ | `/api/proposals/{id}/review` | PUT | 提案レビュー |
496
+ | `/health` | GET | ヘルスチェック |
497
+
498
+ ## アー��テクチャ
499
+
500
+ ```
501
+ ┌─────────────────────────────────────────────────────────────┐
502
+ │ NullAI System │
503
+ ├─────────────────────────────────────────────────────────────┤
504
+ │ Frontend (React + TypeScript) │
505
+ │ ├── Authentication UI │
506
+ │ ├── Chat Interface (REST/WebSocket) │
507
+ │ ├── Domain Editor │
508
+ │ └── Model Management │
509
+ ├─────────────────────────────────────────────────────────────┤
510
+ │ Backend (FastAPI) │
511
+ │ ├── Auth API (JWT) │
512
+ │ ├── Questions API │
513
+ │ ├── Domains API │
514
+ │ ├── Models API │
515
+ │ └── Proposals API │
516
+ ├─────────────────────────────────────────────────────────────┤
517
+ │ NullAI Core │
518
+ │ ├── ModelRouter (Multi-LLM Support) │
519
+ │ ├── ConfigManager │
520
+ │ ├── DendriticMemorySpace (Tree-like Memory) │
521
+ │ └── DB Enrichment CLI │
522
+ ├─────────────────────────────────────────────────────────────┤
523
+ │ Inference Engine │
524
+ │ ├── IlmAthensEngine (Orchestrator) │
525
+ │ ├── SpatialEncodingEngine (Coordinate Mapping) │
526
+ │ ├── Judge Layer (Alpha + Beta Lobe) │
527
+ │ └── NurseLogSystem (Continuous Learning) │
528
+ ├─────────────────────────────────────────────────────────────┤
529
+ │ Data Layer │
530
+ │ ├── IathDB (Compressed Knowledge Tiles) │
531
+ │ ├── SQLite/PostgreSQL (User Data) │
532
+ │ └── JSON Config Files │
533
+ ├─────────────────────────────────────────────────────────────┤
534
+ │ LLM Providers │
535
+ │ ├── Ollama (Local) │
536
+ │ ├── OpenAI API │
537
+ │ ├── Anthropic API │
538
+ │ └── Custom Endpoints │
539
+ └─────────────────────────────────────────────────────────────┘
540
+ ```
541
+
542
+ ## ライセンス
543
+
544
+ MIT License