kofdai commited on
Commit
487b26a
·
verified ·
1 Parent(s): aea1b39

Upload folder using huggingface_hub

Browse files
API_SPECIFICATION.md ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Ilm-Athens API仕様書
2
+
3
+ This document is a placeholder and will be filled out with relevant content.
4
+
5
+ ## 概要
6
+
7
+ このドキュメントでは、Ilm-Athensの各コンポーネントが外部に公開するAPIについて詳述します。
8
+
9
+ ## DB層 API (gRPC)
10
+
11
+ ...
12
+
13
+ ### `GetKnowledgeTile`
14
+
15
+ ...
16
+
17
+ ## 推論エンジン API (gRPC)
18
+
19
+ ...
20
+
21
+ ### `GenerateResponse`
22
+
23
+ ...
24
+
25
+ ## Webプラットフォーム API (REST)
26
+
27
+ ...
COMPREHENSIVE_GUIDE_JA.md ADDED
@@ -0,0 +1,944 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # NullAI 総合ガイド
2
+
3
+ ## 目次
4
+
5
+ 1. [システム概要](#1-システム概要)
6
+ 2. [アーキテクチャ](#2-アーキテクチャ)
7
+ 3. [セットアップ手順](#3-セットアップ手順)
8
+ 4. [コマンドリファレンス](#4-コマンドリファレンス)
9
+ 5. [API仕様](#5-api仕様)
10
+ 6. [知識ベース管理](#6-知識ベース管理)
11
+ 7. [認証システム](#7-認証システム)
12
+ 8. [クラウドデプロイメント](#8-クラウドデプロイメント)
13
+ 9. [トラブルシューティング](#9-トラブルシューティング)
14
+
15
+ ---
16
+
17
+ ## 1. システム概要
18
+
19
+ ### 1.1 NullAIとは
20
+
21
+ NullAIは、**マルチドメイン対応の知識推論システム**です。以下の特徴を持ちます:
22
+
23
+ - **幻覚(ハルシネーション)低減**: 5層アーキテクチャによる検証システム
24
+ - **マルチドメイン対応**: 医療、法律、経済、プログラミング、一般知識
25
+ - **HuggingFace対応**: Transformers、Inference API、GGUF形式をサポート
26
+ - **専門家認証**: ORCID認証による専門家の編集認証マーク
27
+ - **サーバーレス対応**: GitHub/Supabase/JSONBinによる無料ストレージ
28
+
29
+ > **重要**: OpenAI/Anthropic/Ollama等の外部APIは利用規約上の理由から削除されました。NullAIはオープンソースモデルのみをサポートします。
30
+
31
+ ### 1.2 主要コンポーネント
32
+
33
+ ```
34
+ NullAI/
35
+ ├── null_ai/ # コア設定・モデルルーター
36
+ ├── backend/ # FastAPI バックエンドAPI
37
+ ├── frontend/ # React TypeScript フロントエンド
38
+ ├── ilm_athens_engine/ # 推論エンジン本体
39
+ └── 各種ユーティリティ # エンコーダー、デコーダー等
40
+ ```
41
+
42
+ ### 1.3 推論パイプライン
43
+
44
+ ```
45
+ 質問入力
46
+
47
+ [Layer 1] 空間エンコーディング - 質問をドメイン空間座標にマッピング
48
+
49
+ [Layer 2] エピソードバインディング - 関連知識タイルの検索・結合
50
+
51
+ [Layer 3] α-Lobe(生成)+ β-Lobe(検証)- 回答生成と妥当性検証
52
+
53
+ [Layer 4] 修正フロー - 検証失敗時の自動修正
54
+
55
+ [Layer 5] 状態管理 - 結果の保存と状態更新
56
+
57
+ 回答出力 + 信頼度スコア
58
+ ```
59
+
60
+ ---
61
+
62
+ ## 2. アーキテクチャ
63
+
64
+ ### 2.1 バックエンド構成
65
+
66
+ ```
67
+ backend/
68
+ ├── app/
69
+ │ ├── main.py # FastAPIエントリーポイント
70
+ │ ├── config.py # 環境設定
71
+ │ ├── api/
72
+ │ │ ├── questions.py # 質問API(REST + WebSocket)
73
+ │ │ ├── auth.py # 認証API(JWT)
74
+ │ │ ├── domains.py # ドメイン管理API
75
+ │ │ ├── proposals.py # 編集提案API
76
+ │ │ ├── models.py # LLMモデル管理API
77
+ │ │ └── orcid_auth.py # ORCID認証API
78
+ │ ├── middleware/
79
+ │ │ └── auth.py # JWT認証ミドルウェア
80
+ │ ├── services/
81
+ │ │ └── inference_service.py # 推論サービス
82
+ │ └── database/
83
+ │ ├── models.py # SQLAlchemy ORM
84
+ │ └── session.py # DBセッション
85
+ ```
86
+
87
+ ### 2.2 フロントエンド構成
88
+
89
+ ```
90
+ frontend/src/
91
+ ├── App.tsx # メインアプリ
92
+ ├── pages/
93
+ │ ├── QuestionPage.tsx # チャットUI
94
+ │ ├── LoginPage.tsx # ログイン(ORCID/Email/Guest)
95
+ │ ├── SignupPage.tsx # ユーザー登録
96
+ │ └── DomainEditorPage.tsx # ドメイン編集
97
+ ├── components/
98
+ │ ├── QuestionInput.tsx # 質問入力フォーム
99
+ │ ├── ResponseDisplay.tsx # 回答表示
100
+ │ └── VerificationBadge.tsx # 認証バッジ
101
+ ├── contexts/
102
+ │ └── AuthContext.tsx # 認証状態管理
103
+ ├── hooks/
104
+ │ └── useWebSocket.ts # WebSocketフック
105
+ └── services/
106
+ └── api.ts # API クライアント
107
+ ```
108
+
109
+ ### 2.3 推論エンジン構成
110
+
111
+ ```
112
+ ilm_athens_engine/
113
+ ├── config.py # システム設定
114
+ ├── model_manager.py # モデルライフサイクル管理
115
+ ├── inference_engine_deepseek_integrated.py # 統合推論エンジン
116
+ ├── core/
117
+ │ ├── spatial_memory.py # 空間メモリ(Layer 6)
118
+ │ ├── episodic_binding.py # エピソードバインディング
119
+ │ ├── symbiotic_engine.py # ツインエンジンシステム
120
+ │ ├── dendritic_memory.py # 樹木型メモリ構造
121
+ │ └── nurse_log_system.py # 継続学習システム
122
+ └── deepseek_integration/
123
+ ├── hf_deepseek_engine.py # HuggingFace統合
124
+ └── deepseek_runner.py # Ollama統合
125
+ ```
126
+
127
+ ### 2.4 データフロー
128
+
129
+ ```
130
+ ユーザー → フロントエンド → バックエ���ドAPI
131
+
132
+ 推論エンジン
133
+
134
+ ┌───────────────┼───────────────┐
135
+ ↓ ↓ ↓
136
+ 知識タイルDB LLM推論 Web検索
137
+ (IATH形式) (DeepSeek等) (DuckDuckGo等)
138
+ ↓ ↓ ↓
139
+ └───────────────┼───────────────┘
140
+
141
+ α-Lobe(生成)
142
+
143
+ β-Lobe(検証)
144
+
145
+ 回答 + 信頼度 + 認証マーク
146
+ ```
147
+
148
+ ---
149
+
150
+ ## 3. セットアップ手順
151
+
152
+ ### 3.1 必要環境
153
+
154
+ - Python 3.10以上
155
+ - Node.js 18以上
156
+ - GPU(推奨: CUDA対応 または Apple Silicon)
157
+ - PostgreSQL(オプション、SQLiteでも動作)
158
+
159
+ #### 必要なPythonパッケージ(LLM関連)
160
+
161
+ ```bash
162
+ # HuggingFace Transformers(必須)
163
+ pip install transformers torch accelerate
164
+
165
+ # GGUF形式を使用する場合
166
+ pip install llama-cpp-python
167
+ ```
168
+
169
+ ### 3.2 基本セットアップ
170
+
171
+ ```bash
172
+ # 1. リポジトリをクローン(または既存ディレクトリへ移動)
173
+ cd project_locate
174
+
175
+ # 2. Python仮想環境の作成
176
+ python -m venv venv
177
+ source venv/bin/activate # Windows: venv\Scripts\activate
178
+
179
+ # 3. 依存パッケージのインストール
180
+ pip install -r requirements.txt
181
+
182
+ # 4. フロントエンド依存パッケージのインストール
183
+ cd frontend
184
+ npm install
185
+ cd ..
186
+
187
+ # 5. 環境変数の設定
188
+ cp .env.example .env # または手動で作成
189
+ ```
190
+
191
+ ### 3.3 環境変数設定 (.env)
192
+
193
+ ```bash
194
+ # ========== 基本設定 ==========
195
+ SECRET_KEY=your-secret-key-change-in-production
196
+ DEBUG=true
197
+ ACCESS_TOKEN_EXPIRE_MINUTES=1440
198
+
199
+ # ========== データベース ==========
200
+ DATABASE_URL=sqlite:///./sql_app.db
201
+ # PostgreSQLの場合:
202
+ # DATABASE_URL=postgresql://user:password@localhost:5432/null_ai
203
+
204
+ # ========== HuggingFace設定 ==========
205
+ # Inference APIを使用する場合(オプション)
206
+ # HF_API_KEY=hf_xxx
207
+
208
+ # ========== サポート対象外のLLM API ==========
209
+ # 以下のAPIは利用規約上の理由からサポートされていません:
210
+ # - OpenAI API (OPENAI_API_KEY)
211
+ # - Anthropic API (ANTHROPIC_API_KEY)
212
+ # - Ollama API (OLLAMA_URL)
213
+
214
+ # ========== ORCID認証(専門家認証機能)==========
215
+ # ORCID_CLIENT_ID=APP-XXXXXXXXX
216
+ # ORCID_CLIENT_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
217
+ # ORCID_REDIRECT_URI=http://localhost:8000/api/auth/orcid/callback
218
+ # ORCID_SANDBOX=true # 開発時はtrue
219
+
220
+ # ========== サーバーレスストレージ(オプション)==========
221
+ # OPAQUE_STORAGE_BACKEND=local # local, github, supabase, jsonbin
222
+
223
+ # GitHub Storage
224
+ # GITHUB_TOKEN=ghp_xxxxxxxxxxxx
225
+ # GITHUB_REPO=username/opaque-data
226
+
227
+ # Supabase Storage
228
+ # SUPABASE_URL=https://xxxxx.supabase.co
229
+ # SUPABASE_ANON_KEY=eyJxxxxxxxx
230
+
231
+ # ========== Web検索(オプション)==========
232
+ # BRAVE_API_KEY=your-brave-api-key
233
+ # TAVILY_API_KEY=your-tavily-api-key
234
+ ```
235
+
236
+ ### 3.4 Ollamaセットアップ
237
+
238
+ ```bash
239
+ # Ollamaのインストール(macOS)
240
+ brew install ollama
241
+
242
+ # Ollamaサービスの起動
243
+ ollama serve
244
+
245
+ # モデルのダウンロード(別ターミナル)
246
+ ollama pull deepseek-r1:32b # メインモデル(32B推奨)
247
+ ollama pull deepseek-r1:14b # 軽量版(RAMが少ない場合)
248
+ ```
249
+
250
+ ### 3.5 データベース初期化
251
+
252
+ ```bash
253
+ # SQLiteデータベースの初期化
254
+ python backend/create_db.py
255
+
256
+ # 初期ドメインデータの投入
257
+ python null_ai/cloud_db_setup.py --provider local --init-data
258
+ ```
259
+
260
+ ### 3.6 システム起動
261
+
262
+ #### 方法A: 起動スクリプト使用(推奨)
263
+
264
+ ```bash
265
+ # 全サービス起動
266
+ ./start_null_ai.sh
267
+
268
+ # バックエンドのみ
269
+ ./start_null_ai.sh backend
270
+
271
+ # フロントエンドのみ
272
+ ./start_null_ai.sh frontend
273
+
274
+ # 停止
275
+ ./start_null_ai.sh stop
276
+
277
+ # ステータス確認
278
+ ./start_null_ai.sh status
279
+ ```
280
+
281
+ #### 方法B: 個別起動(開発時)
282
+
283
+ ```bash
284
+ # ターミナル1: バックエンド
285
+ source venv/bin/activate
286
+ uvicorn backend.app.main:app --reload --host 0.0.0.0 --port 8000
287
+
288
+ # ターミナル2: フロントエンド
289
+ cd frontend
290
+ npm run dev
291
+ ```
292
+
293
+ #### 方法C: Docker Compose
294
+
295
+ ```bash
296
+ docker-compose up -d
297
+ docker-compose logs -f
298
+ ```
299
+
300
+ ### 3.7 アクセス
301
+
302
+ | サービス | URL |
303
+ |---------|-----|
304
+ | フロントエンド | http://localhost:5173 |
305
+ | バックエンドAPI | http://localhost:8000 |
306
+ | API ドキュメント | http://localhost:8000/docs |
307
+ | Ollama | http://localhost:11434 |
308
+
309
+ ---
310
+
311
+ ## 4. コマンドリファレンス
312
+
313
+ ### 4.1 DB拡充コマンド
314
+
315
+ #### 基本的な使い方
316
+
317
+ ```bash
318
+ # ヘルプを表示
319
+ python null_ai/db_enrichment_cli.py --help
320
+
321
+ # 利用可能なモデル一覧
322
+ python null_ai/db_enrichment_cli.py --list-models
323
+
324
+ # 利用可能なドメイン一覧
325
+ python null_ai/db_enrichment_cli.py --list-domains
326
+
327
+ # 生成される質問をプレビュー(実行なし)
328
+ python null_ai/db_enrichment_cli.py --domain medical --preview --count 20
329
+ ```
330
+
331
+ #### LLM推論によるDB拡充
332
+
333
+ ```bash
334
+ # 医療ドメインを50件の質問で拡充
335
+ python null_ai/db_enrichment_cli.py --domain medical --count 50
336
+
337
+ # 全ドメインを拡充(各30件)
338
+ python null_ai/db_enrichment_cli.py --all --count 30
339
+
340
+ # 特定のモデルを使用して拡充
341
+ python null_ai/db_enrichment_cli.py --domain legal --model deepseek-r1-32b --count 20
342
+
343
+ # バッチサイズを指定(レート制限対策)
344
+ python null_ai/db_enrichment_cli.py --domain economics --count 100 --batch-size 3
345
+ ```
346
+
347
+ #### Web検索によるDB拡充
348
+
349
+ ```bash
350
+ # Web検索で最新情報を収集(DuckDuckGo使用、無料・キー不要)
351
+ python null_ai/db_enrichment_cli.py --domain medical --web-search --count 10
352
+
353
+ # 特定のクエリでWeb検索
354
+ python null_ai/db_enrichment_cli.py --domain medical --web-search \
355
+ --query "最新の糖尿病治療法 2024"
356
+
357
+ # クエリファイルから検索
358
+ python null_ai/db_enrichment_cli.py --domain legal --web-search \
359
+ --queries-file legal_queries.txt
360
+
361
+ # 利用可能な検索プロバイダーを確認
362
+ python null_ai/db_enrichment_cli.py --list-search-providers
363
+ ```
364
+
365
+ ### 4.2 知識タイル生成コマンド
366
+
367
+ ```bash
368
+ # 単一トピックからタイル生成
369
+ python create_tile_from_topic.py --topic "心筋梗塞の治療法" --domain medical
370
+
371
+ # バッチ生成(トピックファイルから)
372
+ python batch_create_tiles.py --topics-file topics.txt --domain medical
373
+
374
+ # IATHファイルの検証
375
+ python compression_verifier.py --file generated_tiles/tile_xxx.iath
376
+ ```
377
+
378
+ ### 4.3 クラウドDB設定コマンド
379
+
380
+ ```bash
381
+ # Supabaseセットアップ手順を表示
382
+ python null_ai/cloud_db_setup.py --provider supabase
383
+
384
+ # GitHubストレージセットアップ
385
+ python null_ai/cloud_db_setup.py --provider github --repo username/opaque-data
386
+
387
+ # JSONBinセットアップ
388
+ python null_ai/cloud_db_setup.py --provider jsonbin
389
+
390
+ # Supabaseに初期データ投入
391
+ python null_ai/cloud_db_setup.py --provider supabase --init-data
392
+ ```
393
+
394
+ ### 4.4 Web検索単独実行
395
+
396
+ ```bash
397
+ # 医療ドメインで最新情報を検索
398
+ python null_ai/web_search_enrichment.py --domain medical --count 10
399
+
400
+ # 特定クエリで検索
401
+ python null_ai/web_search_enrichment.py --domain medical \
402
+ --query "COVID-19 最新治療法 2024"
403
+
404
+ # 全ドメインで検索
405
+ python null_ai/web_search_enrichment.py --all-domains --count 5
406
+
407
+ # 検索プロバイダー一覧
408
+ python null_ai/web_search_enrichment.py --list-providers
409
+ ```
410
+
411
+ ### 4.5 テスト実行
412
+
413
+ ```bash
414
+ # 基本テスト
415
+ python test_judge_basic.py
416
+
417
+ # 包括的テスト
418
+ python test_judge_comprehensive.py
419
+
420
+ # DeepSeek統合テスト
421
+ python test_deepseek_integration.py
422
+
423
+ # E2Eパイプラインテスト
424
+ python e2e_pipeline_test.py
425
+
426
+ # 最終統合テスト
427
+ python final_integration_test.py
428
+ ```
429
+
430
+ ---
431
+
432
+ ## 5. API仕様
433
+
434
+ ### 5.1 認証API
435
+
436
+ #### ユーザー登録
437
+ ```http
438
+ POST /api/auth/signup
439
+ Content-Type: application/json
440
+
441
+ {
442
+ "email": "user@example.com",
443
+ "password": "securepassword"
444
+ }
445
+ ```
446
+
447
+ #### ログイン(JWTトークン取得)
448
+ ```http
449
+ POST /api/auth/token
450
+ Content-Type: application/x-www-form-urlencoded
451
+
452
+ username=user@example.com&password=securepassword
453
+ ```
454
+
455
+ #### ORCID認証開始
456
+ ```http
457
+ GET /api/auth/orcid/authorize?redirect_url=http://localhost:5173
458
+ ```
459
+
460
+ ### 5.2 質問API
461
+
462
+ #### 質問送信(REST)
463
+ ```http
464
+ POST /api/questions/
465
+ Authorization: Bearer {token}
466
+ Content-Type: application/json
467
+
468
+ {
469
+ "question": "糖尿病の最新治療法について教えてください",
470
+ "domain_id": "medical",
471
+ "session_id": null
472
+ }
473
+ ```
474
+
475
+ #### レスポンス例
476
+ ```json
477
+ {
478
+ "session_id": "sess_abc123",
479
+ "question": "糖尿病の最新治療法について教えてください",
480
+ "response": "糖尿病の最新治療法には...",
481
+ "confidence": 0.87,
482
+ "memory_augmented": true,
483
+ "thinking_steps": ["知識検索中...", "回答生成中...", "検証中..."]
484
+ }
485
+ ```
486
+
487
+ #### WebSocketストリーミング
488
+ ```javascript
489
+ const ws = new WebSocket('ws://localhost:8000/api/questions/ws/session_id');
490
+
491
+ ws.onmessage = (event) => {
492
+ const data = JSON.parse(event.data);
493
+ // data.type: 'thinking', 'response', 'complete', 'error'
494
+ };
495
+
496
+ ws.send(JSON.stringify({
497
+ question: "質問内容",
498
+ domain_id: "medical"
499
+ }));
500
+ ```
501
+
502
+ ### 5.3 ドメインAPI
503
+
504
+ #### ドメイン一覧取得(ゲストアクセス可)
505
+ ```http
506
+ GET /api/domains/
507
+ ```
508
+
509
+ #### 特定ドメイン取得
510
+ ```http
511
+ GET /api/domains/medical
512
+ ```
513
+
514
+ #### ドメイン更新(Editor以上)
515
+ ```http
516
+ PUT /api/domains/medical
517
+ Authorization: Bearer {token}
518
+ Content-Type: application/json
519
+
520
+ {
521
+ "domain_id": "medical",
522
+ "name": "Medical",
523
+ "description": "医療・健康に関する知識領域",
524
+ "axes": [
525
+ {"name": "診断", "description": "症状から疾患を特定", "keywords": ["症状", "検査"]}
526
+ ]
527
+ }
528
+ ```
529
+
530
+ ### 5.4 編集提案API
531
+
532
+ #### 提案一覧取得(ゲストアクセス可)
533
+ ```http
534
+ GET /api/proposals/?status=pending&domain_id=medical
535
+ ```
536
+
537
+ #### 提案作成(認証必須)
538
+ ```http
539
+ POST /api/proposals/
540
+ Authorization: Bearer {token}
541
+ Content-Type: application/json
542
+
543
+ {
544
+ "proposal_type": "create",
545
+ "domain_id": "medical",
546
+ "title": "新しい治療法の追加",
547
+ "description": "最新の糖尿病治療法について",
548
+ "proposed_content": {...},
549
+ "justification": "最新の研究結果に基づく"
550
+ }
551
+ ```
552
+
553
+ #### 提案レビュー(Editor以上)
554
+ ```http
555
+ PUT /api/proposals/{proposal_id}/review
556
+ Authorization: Bearer {token}
557
+ Content-Type: application/json
558
+
559
+ {
560
+ "status": "approved",
561
+ "reviewer_comment": "内容を確認しました",
562
+ "validation_score": 0.9
563
+ }
564
+ ```
565
+
566
+ ### 5.5 モデル管理API
567
+
568
+ #### モデル一覧取得
569
+ ```http
570
+ GET /api/models/?domain_id=medical
571
+ Authorization: Bearer {token}
572
+ ```
573
+
574
+ #### モデル接続テスト
575
+ ```http
576
+ POST /api/models/deepseek-r1-32b/test
577
+ Authorization: Bearer {token}
578
+ ```
579
+
580
+ ---
581
+
582
+ ## 6. 知識ベース管理
583
+
584
+ ### 6.1 知識タイル構造
585
+
586
+ ```json
587
+ {
588
+ "metadata": {
589
+ "knowledge_id": "ktile-medical-20241124-001",
590
+ "topic": "糖尿病の診断基準",
591
+ "domain": "medical",
592
+ "created_at": "2024-11-24T10:30:00Z",
593
+ "source_type": "llm",
594
+ "is_expert_verified": true,
595
+ "expert_orcid_id": "0000-0001-2345-6789"
596
+ },
597
+ "content": {
598
+ "question": "糖尿病の診断基準は何ですか?",
599
+ "thinking_process": "診断基準について、HbA1c、空腹時血糖値...",
600
+ "final_response": "糖尿病の診断基準は以下の通りです..."
601
+ },
602
+ "coordinates": {
603
+ "medical_space": [45.2, 120.5, 30.0],
604
+ "meta_space": [87.5, 92.0, 85.0]
605
+ },
606
+ "verification": {
607
+ "alpha_score": 0.92,
608
+ "beta_score": 0.88,
609
+ "hallucination_risk": 0.05
610
+ }
611
+ }
612
+ ```
613
+
614
+ ### 6.2 IATHファイル形式
615
+
616
+ NullAIは独自のバイナリ形式(`.iath`)を使用して知識タイルを保存します:
617
+
618
+ - **圧縮**: zstandard圧縮
619
+ - **ヘッダー**: ドメインコード、バージョン、タイムスタンプ
620
+ - **本体**: JSON形式の知識タイルデータ
621
+
622
+ ```bash
623
+ # IATHファイルのデコード
624
+ python iath_decoder.py generated_tiles/tile_xxx.iath
625
+
626
+ # IATHファイルの作成
627
+ python iath_encoder.py --input tile_data.json --output tile.iath
628
+ ```
629
+
630
+ ### 6.3 樹木型メモリ構造(DendriticMemorySpace)
631
+
632
+ 知識タイルは3次元円筒座標系で管理されます:
633
+
634
+ ```
635
+ 座標系:
636
+ - r (半径): 0-100 - 知識の具体性(中心=抽象、外側=具体)
637
+ - θ (角度): 0-360° - 知識のカテゴリ
638
+ - z (高さ): -50〜50 - 時間/重要度
639
+ ```
640
+
641
+ 知識検索時に、質問が座標にマッピングされ、近接する知識タイルが自動的に参照されます。
642
+
643
+ ---
644
+
645
+ ## 7. 認証システム
646
+
647
+ ### 7.1 ユーザーロール
648
+
649
+ | ロール | 説明 | 権限 |
650
+ |-------|------|-----|
651
+ | guest | 未登録ユーザー | 閲覧、質問 |
652
+ | viewer | 登録ユーザー | + 提案の閲覧 |
653
+ | editor | 編集者 | + 提案の作成・レビュー |
654
+ | expert | ORCID認証済み専門家 | + 認証マーク付き編集 |
655
+ | admin | 管理者 | + 全管理機能 |
656
+
657
+ ### 7.2 認証マークの種類
658
+
659
+ | マーク | 説明 | 表示 |
660
+ |-------|------|-----|
661
+ | none | 未検証 | なし |
662
+ | community | コミュニティレビュー済み | 青バッジ |
663
+ | expert | ORCID認証専門家による編集/レビュー | 緑バッジ |
664
+ | multi_expert | 複数の専門家による検証 | 金バッジ |
665
+
666
+ ### 7.3 ORCID認証の設定
667
+
668
+ 1. **ORCID開発者アカウントの作成**
669
+ - https://orcid.org/developer-tools にアクセス
670
+ - アプリケーション登録
671
+ - Client IDとClient Secretを取得
672
+
673
+ 2. **環境変数の設定**
674
+ ```bash
675
+ ORCID_CLIENT_ID=APP-XXXXXXXXX
676
+ ORCID_CLIENT_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
677
+ ORCID_REDIRECT_URI=http://localhost:8000/api/auth/orcid/callback
678
+ ORCID_SANDBOX=true # 開発時はtrue
679
+ ```
680
+
681
+ 3. **認証フロー**
682
+ - ユーザーが「Sign in with ORCID」をクリック
683
+ - ORCIDの認証ページにリダイレクト
684
+ - 認証後、コールバックURLにリダイレクト
685
+ - JWTトークン発行(expert権限付与)
686
+
687
+ ---
688
+
689
+ ## 8. クラウドデプロイメント
690
+
691
+ ### 8.1 サーバーレスストレージオプション
692
+
693
+ #### Supabase(推奨)
694
+
695
+ 無料枠: 500MB、50,000リクエスト/月
696
+
697
+ ```bash
698
+ # セットアップ手順を表示
699
+ python null_ai/cloud_db_setup.py --provider supabase
700
+
701
+ # 初期データ投入
702
+ python null_ai/cloud_db_setup.py --provider supabase --init-data
703
+ ```
704
+
705
+ 環境変数:
706
+ ```bash
707
+ OPAQUE_STORAGE_BACKEND=supabase
708
+ SUPABASE_URL=https://xxxxx.supabase.co
709
+ SUPABASE_ANON_KEY=eyJxxxxxxxx
710
+ ```
711
+
712
+ #### GitHub Storage
713
+
714
+ 無料枠: 無制限(パブリックリポジトリ)
715
+
716
+ ```bash
717
+ # セットアップ手順を表示
718
+ python null_ai/cloud_db_setup.py --provider github --repo username/opaque-data
719
+ ```
720
+
721
+ 環境変数:
722
+ ```bash
723
+ OPAQUE_STORAGE_BACKEND=github
724
+ GITHUB_TOKEN=ghp_xxxxxxxxxxxx
725
+ GITHUB_REPO=username/opaque-data
726
+ GITHUB_BRANCH=main
727
+ GITHUB_DATA_PATH=data
728
+ ```
729
+
730
+ #### JSONBin
731
+
732
+ 無料枠: 10,000リクエスト/月
733
+
734
+ ```bash
735
+ # セットアップ手順を表示
736
+ python null_ai/cloud_db_setup.py --provider jsonbin
737
+ ```
738
+
739
+ 環境変数:
740
+ ```bash
741
+ OPAQUE_STORAGE_BACKEND=jsonbin
742
+ JSONBIN_API_KEY=$2b$xxxxxxxx
743
+ JSONBIN_BIN_ID=xxxxxxxxxxxxxxxx
744
+ ```
745
+
746
+ ### 8.2 ストレージ比較
747
+
748
+ | バックエンド | 無料枠 | 特徴 | 推奨用途 |
749
+ |------------|-------|-----|---------|
750
+ | Local | 無制限 | ファイルベース | 開発 |
751
+ | GitHub | 無制限* | バージョン管理、透明性 | オープンソースプロジェクト |
752
+ | Supabase | 500MB | SQLクエリ、リアルタイム | 本番環境 |
753
+ | JSONBin | 10K/月 | シンプル | 小規模プロジェクト |
754
+
755
+ *パブリックリポジトリの場合
756
+
757
+ ### 8.3 フロントエンドデプロイ
758
+
759
+ #### Vercel(推奨)
760
+
761
+ ```bash
762
+ # Vercel CLIインストール
763
+ npm i -g vercel
764
+
765
+ # デプロイ
766
+ cd frontend
767
+ vercel
768
+ ```
769
+
770
+ #### Netlify
771
+
772
+ ```bash
773
+ # ビルド
774
+ cd frontend
775
+ npm run build
776
+
777
+ # Netlifyにdistフォルダをアップロード
778
+ ```
779
+
780
+ #### GitHub Pages
781
+
782
+ ```bash
783
+ # gh-pagesパッケージをインストール
784
+ npm install gh-pages --save-dev
785
+
786
+ # package.jsonにスクリプト追加
787
+ # "deploy": "gh-pages -d dist"
788
+
789
+ # デプロイ
790
+ npm run build
791
+ npm run deploy
792
+ ```
793
+
794
+ ---
795
+
796
+ ## 9. トラブルシューティング
797
+
798
+ ### 9.1 Ollamaに接続できない
799
+
800
+ ```bash
801
+ # Ollamaが起動しているか確認
802
+ curl http://localhost:11434/api/tags
803
+
804
+ # 起動していない場合
805
+ ollama serve
806
+
807
+ # モデルがダウンロードされているか確認
808
+ ollama list
809
+ ```
810
+
811
+ ### 9.2 モデルのダウンロードが遅い
812
+
813
+ ```bash
814
+ # より軽量なモデルを使用
815
+ ollama pull deepseek-r1:14b # 32Bの代わりに14B
816
+
817
+ # models_config.jsonでデフォルトモデルを変更
818
+ ```
819
+
820
+ ### 9.3 メモリ不足エラー
821
+
822
+ - 32Bモデルには32GB以上のRAMが推奨
823
+ - RAMが少ない場合は14Bモデルを使用
824
+ - Docker使用時はメモリ制限を確認
825
+
826
+ ### 9.4 データベースエラー
827
+
828
+ ```bash
829
+ # データベースをリセット
830
+ rm sql_app.db
831
+ python backend/create_db.py
832
+ ```
833
+
834
+ ### 9.5 ORCID認証が失敗する
835
+
836
+ - `ORCID_REDIRECT_URI`がORCIDの設定と一致しているか確認
837
+ - 開発時は`ORCID_SANDBOX=true`を設定
838
+ - Client IDとClient Secretが正しいか確認
839
+
840
+ ### 9.6 Web検索が動作しない
841
+
842
+ ```bash
843
+ # 検索プロバイダーの状態を確認
844
+ python null_ai/db_enrichment_cli.py --list-search-providers
845
+
846
+ # DuckDuckGoはAPIキー不要で動作するはず
847
+ # Brave/TavilyはAPIキーが必要
848
+ ```
849
+
850
+ ### 9.7 フロントエンドがAPIに接続できない
851
+
852
+ ```bash
853
+ # CORSの設定を確認(backend/app/main.py)
854
+ # allow_origins=["*"] または具体的なオリジンを設定
855
+
856
+ # 環境変数を確認
857
+ # frontend/.env
858
+ VITE_API_URL=http://localhost:8000
859
+ ```
860
+
861
+ ---
862
+
863
+ ## 付録A: ファイル一覧と役割
864
+
865
+ ### コアモジュール
866
+
867
+ | ファイル | 役割 |
868
+ |---------|-----|
869
+ | `null_ai/config.py` | 設定管理(モデル、ドメイン) |
870
+ | `null_ai/model_router.py` | マルチLLMルーター |
871
+ | `null_ai/db_enrichment_cli.py` | DB拡充CLI |
872
+ | `null_ai/web_search_enrichment.py` | Web検索拡充 |
873
+ | `null_ai/serverless_storage.py` | クラウドストレージ |
874
+ | `null_ai/cloud_db_setup.py` | クラウドDB設定 |
875
+
876
+ ### 推論エンジン
877
+
878
+ | ファイル | 役割 |
879
+ |---------|-----|
880
+ | `layer1_spatial_encoding.py` | 空間座標エンコーディング |
881
+ | `layer2_episodic_binding.py` | エピソードバインディング |
882
+ | `judge_alpha_lobe.py` | α-Lobe(回答生成) |
883
+ | `judge_beta_lobe_basic.py` | β-Lobe(基本検証) |
884
+ | `judge_beta_lobe_advanced.py` | β-Lobe(高度検証) |
885
+ | `judge_correction_flow.py` | 修正フロー |
886
+ | `hallucination_detector.py` | ハルシネーション検出 |
887
+
888
+ ### データ処理
889
+
890
+ | ファイル | 役割 |
891
+ |---------|-----|
892
+ | `knowledge_tile_generator.py` | 知識タイル生成 |
893
+ | `iath_encoder.py` | IATHエンコーダー |
894
+ | `iath_decoder.py` | IATHデコーダー |
895
+ | `coordinate_mapper.py` | 座標マッピング |
896
+
897
+ ---
898
+
899
+ ## 付録B: 設定ファイル一覧
900
+
901
+ | ファイル | 用途 |
902
+ |---------|-----|
903
+ | `.env` | 環境変数(秘密情報) |
904
+ | `domain_schemas.json` | ドメイン定義 |
905
+ | `medical_space_axes_definition.json` | 医療ドメイン座標軸 |
906
+ | `legal_space_axes_definition.json` | 法律ドメイン座標軸 |
907
+ | `cardiology_ontology.json` | 循環器オントロジー |
908
+ | `legal_ontology.json` | 法律オントロジー |
909
+ | `docker-compose.yml` | Dockerコンテナ設定 |
910
+
911
+ ---
912
+
913
+ ## 付録C: よく使うコマンド一覧
914
+
915
+ ```bash
916
+ # ========== 起動・停止 ==========
917
+ ./start_null_ai.sh # 全サービス起動
918
+ ./start_null_ai.sh stop # 全サービス停止
919
+ ./start_null_ai.sh status # ステータス確認
920
+
921
+ # ========== DB拡充 ==========
922
+ python null_ai/db_enrichment_cli.py --domain medical --count 50
923
+ python null_ai/db_enrichment_cli.py --domain medical --web-search --count 10
924
+ python null_ai/db_enrichment_cli.py --all --count 30
925
+
926
+ # ========== 確認・一覧 ==========
927
+ python null_ai/db_enrichment_cli.py --list-models
928
+ python null_ai/db_enrichment_cli.py --list-domains
929
+ python null_ai/db_enrichment_cli.py --list-search-providers
930
+ python null_ai/db_enrichment_cli.py --domain medical --preview
931
+
932
+ # ========== クラウド設定 ==========
933
+ python null_ai/cloud_db_setup.py --provider supabase
934
+ python null_ai/cloud_db_setup.py --provider github --repo user/repo
935
+
936
+ # ========== テスト ==========
937
+ python test_judge_basic.py
938
+ python e2e_pipeline_test.py
939
+ ```
940
+
941
+ ---
942
+
943
+ *このドキュメントは NullAI v1.0.0 に基づいています。*
944
+ *最終更新: 2024年11月24日*
EXAMPLES.md ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Ilm-Athens コード例集
2
+
3
+ This document is a placeholder and will be filled out with relevant content.
4
+
5
+ ## 概要
6
+
7
+ このドキュメントは、Ilm-Athensの各機能を利用するための具体的なコード例を提供します。
8
+
9
+ ## 例1: 特定のトピックに関するKnowledge Tileを生成する
10
+
11
+ ```python
12
+ #
13
+ # Code example for generating a knowledge tile from a topic.
14
+ #
15
+ ```
16
+
17
+ ## 例2: Knowledge Tileをエンコード・デコードする
18
+
19
+ ```python
20
+ #
21
+ # Code example for encoding and decoding a knowledge tile.
22
+ #
23
+ ```
24
+
25
+ ## 例3: 座標を指定して知識を検索する
26
+
27
+ ```python
28
+ #
29
+ # Code example for searching knowledge by coordinate.
30
+ #
31
+ ```
IMPLEMENTATION_GUIDE.md ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Ilm-Athens 実装ガイド
2
+
3
+ This document is a placeholder and will be filled out with relevant content.
4
+
5
+ ## 概要
6
+
7
+ このドキュメントは、Ilm-Athensシステムの開発、セットアップ、および保守を行うエンジニア向けの実装ガイドです。
8
+
9
+ ## アーキテクチャ
10
+
11
+ ...
12
+
13
+ ## セットアップ手順
14
+
15
+ ...
16
+
17
+ ## 主要コンポーネント
18
+
19
+ ...
QUICK_REFERENCE_JA.md ADDED
@@ -0,0 +1,384 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # NullAI クイックリファレンス
2
+
3
+ ## システム起動
4
+
5
+ ```bash
6
+ # 全サービス起動
7
+ ./start_null_ai.sh
8
+
9
+ # 個別起動
10
+ ./start_null_ai.sh backend # バックエンドのみ
11
+ ./start_null_ai.sh frontend # フロントエンドのみ
12
+ ./start_null_ai.sh stop # 停止
13
+ ./start_null_ai.sh status # ステータス確認
14
+ ```
15
+
16
+ ## アクセスURL
17
+
18
+ | サービス | URL |
19
+ |---------|-----|
20
+ | フロントエンド | http://localhost:5173 |
21
+ | API | http://localhost:8000 |
22
+ | API Docs | http://localhost:8000/docs |
23
+
24
+ ## DB拡充コマンド
25
+
26
+ ### LLM推論による拡充
27
+ ```bash
28
+ python null_ai/db_enrichment_cli.py --domain medical --count 50
29
+ python null_ai/db_enrichment_cli.py --all --count 30
30
+ python null_ai/db_enrichment_cli.py --domain legal --model deepseek-r1-32b --count 20
31
+ ```
32
+
33
+ ### Web検索による拡充
34
+ ```bash
35
+ python null_ai/db_enrichment_cli.py --domain medical --web-search --count 10
36
+ python null_ai/db_enrichment_cli.py --domain medical --web-search --query "糖尿病 最新治療法 2024"
37
+ ```
38
+
39
+ ### 確認コマンド
40
+ ```bash
41
+ python null_ai/db_enrichment_cli.py --list-models
42
+ python null_ai/db_enrichment_cli.py --list-domains
43
+ python null_ai/db_enrichment_cli.py --list-search-providers
44
+ python null_ai/db_enrichment_cli.py --domain medical --preview
45
+ ```
46
+
47
+ ## クラウドDB設定
48
+
49
+ ```bash
50
+ python null_ai/cloud_db_setup.py --provider supabase
51
+ python null_ai/cloud_db_setup.py --provider github --repo username/opaque-data
52
+ python null_ai/cloud_db_setup.py --provider jsonbin
53
+ ```
54
+
55
+ ## 主要な環境変数
56
+
57
+ ```bash
58
+ # 基本
59
+ SECRET_KEY=your-secret-key
60
+ DATABASE_URL=sqlite:///./sql_app.db
61
+
62
+ # HuggingFace(オプション - Inference APIを使う場合)
63
+ HF_API_KEY=hf_xxx
64
+
65
+ # ORCID認証
66
+ ORCID_CLIENT_ID=APP-xxx
67
+ ORCID_CLIENT_SECRET=xxx
68
+ ORCID_SANDBOX=true
69
+
70
+ # クラウドストレージ
71
+ OPAQUE_STORAGE_BACKEND=supabase
72
+ SUPABASE_URL=https://xxx.supabase.co
73
+ SUPABASE_ANON_KEY=xxx
74
+
75
+ # Web検索
76
+ BRAVE_API_KEY=xxx
77
+ TAVILY_API_KEY=xxx
78
+ ```
79
+
80
+ ## サポートモデルプロバイダー
81
+
82
+ | プロバイダー | 説明 | GPU要否 | 備考 |
83
+ |------------|------|---------|------|
84
+ | **huggingface** | HuggingFace Transformers | 推奨 | ローカル推論(高品質) |
85
+ | **ollama** | Ollama | 不要 | ローカル推論サーバー(高速) |
86
+ | huggingface_api | Inference API | 不要 | リモート推論 |
87
+ | local | ローカルモデル | 推奨 | Transformers互換 |
88
+ | gguf | llama.cpp形式 | 不要 | 量子化モデル |
89
+
90
+ **注意**: OpenAI/Anthropic等の競合APIは利用規約上の理由からサポートされていません。
91
+
92
+ ### Ollamaとの切り替え
93
+
94
+ NullAIはTransformersとOllamaの両方をサポートしています:
95
+
96
+ **Ollama使用時の利点:**
97
+ - ✅ 高速な推論(モデルが常駐)
98
+ - ✅ GPUなしでも高速動作
99
+ - ✅ メモリ効率が良い
100
+ - ✅ 簡単なモデル管理
101
+
102
+ **Transformers使用時の利点:**
103
+ - ✅ より高品質な出力
104
+ - ✅ モデルの細かい制御
105
+ - ✅ インターネット不要
106
+
107
+ ### Ollama推論の使用方法
108
+
109
+ ```bash
110
+ # 1. Ollamaをインストール・起動
111
+ # start_null_ai.shが自動起動します
112
+ # または手動: ollama serve
113
+
114
+ # 2. モデルをダウンロード
115
+ ollama pull llama3.1
116
+ ollama pull qwen2.5:7b
117
+ ollama pull deepseek-r1:7b
118
+ ollama pull mistral
119
+
120
+ # 3. Ollamaモデルでdb拡充
121
+ /Users/motonishikoudai/project_locate/venv/bin/python null_ai/db_enrichment_cli.py \
122
+ --domain medical \
123
+ --model ollama-llama3 \
124
+ --count 10
125
+
126
+ # 4. 利用可能なOllamaモデル一覧
127
+ /Users/motonishikoudai/project_locate/venv/bin/python null_ai/db_enrichment_cli.py --list-models | grep Ollama
128
+ ```
129
+
130
+ ### プロバイダーの切り替え
131
+
132
+ 環境変数またはCLIオプションで簡単に切り替え可能:
133
+
134
+ ```bash
135
+ # Transformersを使用(デフォルト)
136
+ python null_ai/db_enrichment_cli.py --domain medical --count 10
137
+
138
+ # Ollamaを使用(高速)
139
+ python null_ai/db_enrichment_cli.py --domain medical --model ollama-llama3 --count 10
140
+
141
+ # 特定のOllamaモデルを使用
142
+ python null_ai/db_enrichment_cli.py --domain legal --model ollama-deepseek-r1 --count 20
143
+ ```
144
+
145
+ ## ユーザーロール
146
+
147
+ | ロール | 権限 |
148
+ |-------|-----|
149
+ | guest | 閲覧、質問 |
150
+ | viewer | + 提案閲覧 |
151
+ | editor | + 提案作成・レビュー |
152
+ | expert | + 認証マーク付き編集 |
153
+ | admin | + 全管理機能 |
154
+
155
+ ## 認証マーク
156
+
157
+ | マーク | 説明 |
158
+ |-------|-----|
159
+ | none | 未検証 |
160
+ | community | コミュニティレビュー済み(青) |
161
+ | expert | 専門家編集(緑) |
162
+ | multi_expert | 複数専門家検証(金) |
163
+
164
+ ## ドメイン一覧
165
+
166
+ | ID | 名前 |
167
+ |----|-----|
168
+ | medical | 医療・健康 |
169
+ | legal | 法律・法務 |
170
+ | economics | 経済・金融 |
171
+ | programming | プログラミング |
172
+ | general | 一般知識 |
173
+
174
+ ## API エンドポイント
175
+
176
+ ```
177
+ POST /api/auth/signup # ユーザー登録
178
+ POST /api/auth/token # ログイン
179
+ GET /api/auth/orcid/authorize # ORCID認証開始
180
+
181
+ POST /api/questions/ # 質問送信
182
+ WS /api/questions/ws/{id} # ストリーミング
183
+
184
+ GET /api/domains/ # ドメイン一覧
185
+ PUT /api/domains/{id} # ドメイン更新
186
+
187
+ GET /api/proposals/ # 提案一覧
188
+ POST /api/proposals/ # 提案作成
189
+ PUT /api/proposals/{id}/review # 提案レビュー
190
+
191
+ GET /api/models/ # モデル一覧
192
+ POST /api/models/{id}/test # モデルテスト
193
+
194
+ # Knowledge Base (DB) ダウンロード - 誰でも可能
195
+ GET /api/knowledge/export/iath # .iathファイルダウンロード
196
+ GET /api/knowledge/export/json # JSON形式でエクスポート
197
+ GET /api/knowledge/export/package # 完全パッケージ (ZIP)
198
+
199
+ # モデル世代交代(倒木システム)
200
+ GET /api/succession/status # 世代交代ステータス
201
+ POST /api/succession/trigger # 世代交代実行
202
+ POST /api/succession/create-standalone-package # DB付きパッケージ生成
203
+ GET /api/succession/history/inference # 推論履歴取得
204
+ GET /api/succession/history/succession # 世代交代履歴
205
+ GET /api/succession/exports # エクスポートファイル一覧
206
+ GET /api/succession/snapshots # DBスナップショット一覧
207
+ POST /api/succession/snapshots/restore # スナップショット復元
208
+ GET /api/succession/stats # 統計情報
209
+ ```
210
+
211
+ ## DBダウンロード(自由な編集)
212
+
213
+ ### 概要
214
+ **誰でも(ゲスト含む)**Knowledge Baseをダウンロードしてローカルで自由に編集できます。
215
+ エキスパート認証なしでも、ローカルで実験・カスタマイズが可能。
216
+
217
+ ### 使用方法
218
+
219
+ ```bash
220
+ # .iathファイルをダウンロード
221
+ curl http://localhost:8000/api/knowledge/export/iath -o knowledge.iath
222
+
223
+ # JSON形式でダウンロード(人間が読める)
224
+ curl http://localhost:8000/api/knowledge/export/json -o knowledge.json
225
+
226
+ # 完全パッケージ(DB + README + config)
227
+ curl http://localhost:8000/api/knowledge/export/package -o knowledge_package.zip
228
+ ```
229
+
230
+ ### ダウンロード後の利用
231
+
232
+ ```bash
233
+ # ZIPを展開
234
+ unzip knowledge_package.zip
235
+
236
+ # ローカルで編集
237
+ vim knowledge_base.json
238
+
239
+ # NullAIにインポート
240
+ cp knowledge_base.iath /path/to/null_ai/ilm_athens_medical_db.iath
241
+ ```
242
+
243
+ ### メリット
244
+ - ✅ エキスパート認証不要
245
+ - ✅ 完全にオープン、自由に編集
246
+ - ✅ フォークして独自バージョンを作成
247
+ - ✅ オフラインで実験可能
248
+ - ✅ バージョン管理が容易
249
+
250
+ ## モデル世代交代(倒木システム)
251
+
252
+ ### 概要
253
+ 推論履歴を自動保存し、高品質なデータが蓄積されたらトレーニングデータとしてエクスポート。
254
+ 森林の倒木が次世代の栄養となるように、古いモデルの知識を新モデルに継承。
255
+
256
+ ### 使用方法
257
+
258
+ ```bash
259
+ # ステータス確認
260
+ curl http://localhost:8000/api/succession/status
261
+
262
+ # 世代交代実行(手動)
263
+ curl -X POST http://localhost:8000/api/succession/trigger \
264
+ -H "Content-Type: application/json" \
265
+ -d '{"min_confidence": 0.8}'
266
+
267
+ # 推論履歴確認
268
+ curl "http://localhost:8000/api/succession/history/inference?limit=10"
269
+
270
+ # 統計情報
271
+ curl http://localhost:8000/api/succession/stats
272
+ ```
273
+
274
+ ### エクスポート形式
275
+ - **JSONL** (ChatML/Instruction/Completion形式)
276
+ - **CSV** (表形式)
277
+ - **Parquet** (大規模データ用)
278
+ - **HuggingFace Datasets** (transformers連携)
279
+
280
+ ### 自動トリガー
281
+ - 高品質推論(信頼度≥0.8)が1000件蓄積されると自動実行
282
+ - 推論結果は `inference_history/` に日別保存
283
+ - エクスポートデータは `training_data/` に保存
284
+ - DBスナップショットは `db_archives/` に世代管理
285
+
286
+ ### スタンドアロンパッケージ生成
287
+
288
+ **DB付き完全パッケージ**を生成し、単体で使える推論エンジンを作成:
289
+
290
+ ```bash
291
+ # スタンドアロンパッケージを生成
292
+ curl -X POST http://localhost:8000/api/succession/create-standalone-package \
293
+ -H "Content-Type: application/json" \
294
+ -d '{"min_confidence": 0.8}'
295
+
296
+ # 生成されたパッケージは succession_packages/ に保存
297
+ ls succession_packages/
298
+ # null_ai_model_gen1_20250125_123456.zip
299
+ ```
300
+
301
+ ### パッケージ内容
302
+
303
+ ```
304
+ null_ai_model_gen1_*.zip
305
+ ├── training_data/ # トレーニングデータ
306
+ │ ├── *.jsonl # ChatML/Instruction形式
307
+ │ ├── *.csv # CSV形式
308
+ │ ├── *.parquet # Parquet形式
309
+ │ └── dataset_*/ # HuggingFace Datasets
310
+ ├── knowledge_base/ # Knowledge Base(推論用DB)
311
+ │ ├── knowledge.iath # IATH形式DB
312
+ │ └── db_stats.json # DB統計
313
+ ├── run_inference.py # 推論実行スクリプト
314
+ ├── config.json # 設定ファイル
315
+ └── README.md # 使い方ガイド
316
+ ```
317
+
318
+ ### パッケージの使い方
319
+
320
+ ```bash
321
+ # 展開
322
+ unzip null_ai_model_gen1_*.zip
323
+ cd null_ai_model_gen1_*/
324
+
325
+ # 1. Knowledge Baseを使って推論
326
+ python run_inference.py --question "糖尿病の治療法は?"
327
+
328
+ # 2. ファインチューニング
329
+ # training_data/ のデータでモデルを訓練
330
+
331
+ # 3. ファインチューニング後のモデルで推論
332
+ python run_inference.py --model ./output/checkpoint-1000 --question "質問"
333
+ ```
334
+
335
+ ### 利点
336
+ - ✅ 完全に独立して動作
337
+ - ✅ トレーニングデータ + KB が一体化
338
+ - ✅ すぐに使える推論スクリプト付き
339
+ - ✅ 世代ごとにバージョン管理
340
+ - ✅ 他のプロジェクトで再利用可能
341
+
342
+ ## 多言語対応
343
+
344
+ ### サポート言語
345
+ - 🇯🇵 日本語
346
+ - 🇬🇧 English
347
+
348
+ ### 言語切り替え
349
+ - フロントエンド右上の言語スイッチャーで切り替え
350
+ - ブラウザの言語設定を自動検出
351
+ - 選択した言語はlocalStorageに保存
352
+
353
+ ## トラブルシューティング
354
+
355
+ ```bash
356
+ # HuggingFaceモデルダウンロード確認
357
+ python -c "from transformers import AutoModel; print('OK')"
358
+
359
+ # GPU確認
360
+ python -c "import torch; print(f'CUDA: {torch.cuda.is_available()}, MPS: {torch.backends.mps.is_available()}')"
361
+
362
+ # DB初期化
363
+ rm sql_app.db
364
+ python backend/create_db.py
365
+
366
+ # 依存関係インストール(HuggingFace対応)
367
+ pip install transformers torch accelerate
368
+ pip install llama-cpp-python # GGUF使用時
369
+ pip install -r requirements.txt
370
+ cd frontend && npm install
371
+ ```
372
+
373
+ ## ファイル構成
374
+
375
+ ```
376
+ project_locate/
377
+ ├── null_ai/ # コアフレームワーク
378
+ ├── backend/ # FastAPI バックエンド
379
+ ├── frontend/ # React フロントエンド
380
+ ├── ilm_athens_engine/ # 推論エンジン
381
+ ├── generated_tiles/ # 生成された知識タイル
382
+ ├── enrichment_output/ # DB拡充結果
383
+ └── documentation/ # ドキュメント
384
+ ```
TROUBLESHOOTING.md ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Ilm-Athens トラブルシューティングガイド
2
+
3
+ This document is a placeholder and will be filled out with relevant content.
4
+
5
+ ## 概要
6
+
7
+ このドキュメントは、Ilm-Athensシステムの運用中に発生する可能性のある一般的な問題とその解決策をまとめたものです。
8
+
9
+ ## DeepSeek統合の問題
10
+
11
+ ### 問題: 思考チェーンが短い
12
+ **原因:** ...
13
+ **解決策:** ...
14
+
15
+ ### 問題: 座標マッピングが失敗する
16
+ **原因:** ...
17
+ **解決策:** ...
18
+
19
+ ## 可逆圧縮の問題
20
+
21
+ ### 問題: 復号後のデータが一致しない
22
+ **原因:** ...
23
+ **解決策:** ...
24
+
25
+ ## パフォーマンスの問題
26
+
27
+ ### 問題: レイテンシが目標を超過する
28
+ **原因:** ...
29
+ **解決策:** ...
schema.sql ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -- SQL Schema for NullAI Public Knowledge Base
2
+ -- Compatible with PostgreSQL
3
+
4
+ -- Enables UUID generation
5
+ CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
6
+
7
+ -- Users Table
8
+ CREATE TABLE users (
9
+ id VARCHAR PRIMARY KEY DEFAULT uuid_generate_v4(),
10
+ email VARCHAR UNIQUE,
11
+ username VARCHAR UNIQUE,
12
+ display_name VARCHAR,
13
+ hashed_password VARCHAR,
14
+ auth_provider VARCHAR NOT NULL DEFAULT 'local',
15
+ google_id VARCHAR UNIQUE,
16
+ github_id VARCHAR UNIQUE,
17
+ orcid_id VARCHAR UNIQUE,
18
+ "role" VARCHAR NOT NULL DEFAULT 'viewer',
19
+ is_expert BOOLEAN NOT NULL DEFAULT false,
20
+ is_guest BOOLEAN NOT NULL DEFAULT false,
21
+ expert_verification_status VARCHAR DEFAULT 'none',
22
+ expert_credentials JSONB,
23
+ avatar_url VARCHAR,
24
+ bio TEXT,
25
+ affiliation VARCHAR,
26
+ google_access_token VARCHAR,
27
+ google_refresh_token VARCHAR,
28
+ github_access_token VARCHAR,
29
+ orcid_access_token VARCHAR,
30
+ orcid_refresh_token VARCHAR,
31
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
32
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
33
+ last_login_at TIMESTAMPTZ
34
+ );
35
+
36
+ CREATE INDEX idx_users_email ON users(email);
37
+ CREATE INDEX idx_users_username ON users(username);
38
+ CREATE INDEX idx_users_google_id ON users(google_id);
39
+ CREATE INDEX idx_users_github_id ON users(github_id);
40
+ CREATE INDEX idx_users_orcid_id ON users(orcid_id);
41
+
42
+
43
+ -- Workspaces Table
44
+ -- For the public DB, we will likely only have one main public workspace.
45
+ CREATE TABLE workspaces (
46
+ id VARCHAR PRIMARY KEY DEFAULT uuid_generate_v4(),
47
+ name VARCHAR NOT NULL,
48
+ slug VARCHAR UNIQUE NOT NULL,
49
+ description TEXT,
50
+ owner_id VARCHAR NOT NULL REFERENCES users(id),
51
+ is_public BOOLEAN NOT NULL DEFAULT false,
52
+ allow_guest_edit BOOLEAN NOT NULL DEFAULT false,
53
+ allow_guest_view BOOLEAN NOT NULL DEFAULT true,
54
+ db_type VARCHAR DEFAULT 'postgresql',
55
+ db_path VARCHAR,
56
+ db_connection_string VARCHAR,
57
+ tile_count INTEGER DEFAULT 0,
58
+ domain_count INTEGER DEFAULT 0,
59
+ member_count INTEGER DEFAULT 1,
60
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
61
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
62
+ );
63
+
64
+ CREATE INDEX idx_workspaces_slug ON workspaces(slug);
65
+ CREATE INDEX idx_workspaces_owner_id ON workspaces(owner_id);
66
+
67
+ -- Knowledge Tiles Table
68
+ CREATE TABLE knowledge_tiles (
69
+ id VARCHAR PRIMARY KEY DEFAULT 'ktile_' || uuid_generate_v4(),
70
+ workspace_id VARCHAR NOT NULL REFERENCES workspaces(id),
71
+ domain_id VARCHAR,
72
+ topic VARCHAR NOT NULL,
73
+ content TEXT NOT NULL,
74
+ tags JSONB,
75
+ version INTEGER NOT NULL DEFAULT 1,
76
+ is_latest_version BOOLEAN NOT NULL DEFAULT true,
77
+ based_on_version INTEGER,
78
+ contributor_id VARCHAR REFERENCES users(id),
79
+ confidence_score REAL DEFAULT 0.0,
80
+ verification_type VARCHAR NOT NULL DEFAULT 'none',
81
+ verification_count INTEGER NOT NULL DEFAULT 0,
82
+ last_verified_by_id VARCHAR REFERENCES users(id),
83
+ last_verified_at TIMESTAMPTZ,
84
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
85
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
86
+ );
87
+
88
+ CREATE INDEX idx_knowledge_tiles_workspace_id ON knowledge_tiles(workspace_id);
89
+ CREATE INDEX idx_knowledge_tiles_domain_id ON knowledge_tiles(domain_id);
90
+ CREATE INDEX idx_knowledge_tiles_verification_type ON knowledge_tiles(verification_type);
91
+ CREATE INDEX idx_knowledge_tiles_contributor_id ON knowledge_tiles(contributor_id);
92
+
93
+
94
+ -- Proposals Table
95
+ CREATE TABLE proposals (
96
+ id VARCHAR PRIMARY KEY DEFAULT 'prop_' || uuid_generate_v4(),
97
+ workspace_id VARCHAR NOT NULL REFERENCES workspaces(id),
98
+ tile_id VARCHAR REFERENCES knowledge_tiles(id),
99
+ proposer_id VARCHAR NOT NULL REFERENCES users(id),
100
+ status VARCHAR NOT NULL DEFAULT 'pending',
101
+ proposal_type VARCHAR NOT NULL,
102
+ justification TEXT,
103
+ proposed_content JSONB,
104
+ reviewer_id VARCHAR REFERENCES users(id),
105
+ reviewer_comment TEXT,
106
+ reviewed_at TIMESTAMPTZ,
107
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
108
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
109
+ );
110
+
111
+ CREATE INDEX idx_proposals_workspace_id ON proposals(workspace_id);
112
+ CREATE INDEX idx_proposals_tile_id ON proposals(tile_id);
113
+ CREATE INDEX idx_proposals_proposer_id ON proposals(proposer_id);
114
+ CREATE INDEX idx_proposals_status ON proposals(status);
115
+
116
+
117
+ -- OAuth State Table
118
+ CREATE TABLE oauth_states (
119
+ id VARCHAR PRIMARY KEY DEFAULT uuid_generate_v4(),
120
+ state VARCHAR UNIQUE NOT NULL,
121
+ provider VARCHAR NOT NULL,
122
+ redirect_url VARCHAR,
123
+ user_id VARCHAR REFERENCES users(id),
124
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
125
+ expires_at TIMESTAMPTZ NOT NULL
126
+ );
127
+
128
+ CREATE INDEX idx_oauth_states_state ON oauth_states(state);
129
+
130
+ -- Workspace Members Table (Optional for this setup, but good to have)
131
+ CREATE TABLE workspace_members (
132
+ id VARCHAR PRIMARY KEY DEFAULT uuid_generate_v4(),
133
+ workspace_id VARCHAR NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
134
+ user_id VARCHAR NOT NULL REFERENCES users(id) ON DELETE CASCADE,
135
+ "role" VARCHAR NOT NULL DEFAULT 'viewer',
136
+ can_read BOOLEAN DEFAULT true,
137
+ can_write BOOLEAN DEFAULT false,
138
+ can_delete BOOLEAN DEFAULT false,
139
+ can_invite BOOLEAN DEFAULT false,
140
+ joined_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
141
+ UNIQUE (workspace_id, user_id)
142
+ );
143
+
144
+ CREATE INDEX idx_workspace_members_workspace_id ON workspace_members(workspace_id);
145
+ CREATE INDEX idx_workspace_members_user_id ON workspace_members(user_id);