m97j commited on
Commit
e1d7e7b
Β·
1 Parent(s): fcb3a91

Initial commit

Browse files
Files changed (1) hide show
  1. README.md +100 -1
README.md CHANGED
@@ -8,4 +8,103 @@ pinned: false
8
  license: mit
9
  ---
10
 
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  license: mit
9
  ---
10
 
11
+ ## βš™οΈ AI μ„œλ²„ (ai_server/)
12
+
13
+ ### μ—­ν•  & 데이터 흐름
14
+
15
+ 1. **κ²Œμž„ μ„œλ²„ μš”μ²­ μˆ˜μ‹ (`app.py`)**
16
+ - μ΅œμ†Œ μž…λ ₯만 와도 λ™μž‘: `{ text, npc_id, player_id, ... }`
17
+ - μ˜΅μ…˜: μƒνƒœ/μ»¨ν…μŠ€νŠΈ λΆ€μ‘± μ‹œ `rag/docs/npc_config.json` λ“±μ—μ„œ NPC 메타λ₯Ό μ‘°νšŒν•΄ 보강
18
+
19
+ 2. **μ „μ²˜λ¦¬Β·ν”„λ‘¬ν”„νŠΈ ꡬ성(`pipeline/preprocess.py`, `utils/context_parser.py`, `manager/prompt_builder.py`)**
20
+ - νƒœκ·Έ/μ»¨ν…μŠ€νŠΈ/ν”Œλ ˆμ΄μ–΄ λ°œν™”λ₯Ό λ¬Άμ–΄ `<SYS>`, `<CTX>`, `<PLAYER>`, `<NPC>` 포맷으둜 ꡬ성
21
+
22
+ 3. **μΆ”λ‘  μš”μ²­(`utils/hf_client.py`, `models/fallback_model.py`, `pipeline/generator.py`)**
23
+ - 쑰건 뢈좩쑱 input β†’ `fallback_model.py`μ—μ„œ λŒ€μ²΄ 응닡 생성
24
+ - 쑰건 μΆ©μ‘± input β†’ `generator.py`μ—μ„œ payload ꡬ성 ν›„ HF Space `/predict_main` POST
25
+
26
+ 4. **ν›„μ²˜λ¦¬(`pipeline/postprocess.py`)**
27
+ - λͺ¨λΈ μ‘λ‹΅μ—μ„œ **λŒ€μ‚¬ ν…μŠ€νŠΈ, delta, flag**λ₯Ό νŒŒμ‹±Β·μ •κ·œν™”
28
+ - flags β†’ μ‹œκ·Έλͺ¨μ΄λ“œ+threshold, delta β†’ λ²”μœ„ ν΄λž¨ν”„Β·λΌμš΄λ”©
29
+
30
+ 5. **κ²Œμž„ μ„œλ²„ 응닡(`schemas.py`)**
31
+ - ν‘œμ€€ JSON으둜 λ°˜ν™˜
32
+ ```json
33
+ {
34
+ "text": "NPC의 λŒ€λ‹΅...",
35
+ "delta": {"trust": 0.10, "relationship": 0.08},
36
+ "flags": {"give_item": true, "npc_main_story": false},
37
+ "meta": {"npc_id": "mother_abandoned_factory"}
38
+ }
39
+ ```
40
+
41
+ ---
42
+
43
+ ### πŸ“ 디렉토리 ꡬ쑰
44
+
45
+ ```bash
46
+ ai-server/
47
+ β”œβ”€β”€ app.py # FastAPI μ—”νŠΈλ¦¬ν¬μΈνŠΈ
48
+ β”œβ”€β”€ config.py # μ„œλ²„ μ„€μ • 및 λͺ¨λΈ 경둜 관리
49
+ β”œβ”€β”€ schemas.py # μš”μ²­/응닡 데이터 ꡬ쑰 μ •μ˜
50
+ β”œβ”€β”€ requirements.txt # μ˜μ‘΄μ„± νŒ¨ν‚€μ§€ λͺ©λ‘
51
+ β”œβ”€β”€ pipeline/ # λŒ€ν™” 흐름 처리 λͺ¨λ“ˆ
52
+ β”‚ β”œβ”€β”€ preprocess.py # μž…λ ₯ μ „μ²˜λ¦¬ 및 ν”„λ‘¬ν”„νŠΈ ꡬ성
53
+ β”‚ β”œβ”€β”€ postprocess.py # λͺ¨λΈ 좜λ ₯ ν›„μ²˜λ¦¬
54
+ β”‚ └── generator.py # λͺ¨λΈ μΆ”λ‘  μš”μ²­ 처리
55
+ β”œβ”€β”€ rag/ # RAG 기반 flag 해석 λͺ¨λ“ˆ
56
+ β”‚ β”œβ”€β”€ rag_manager.py
57
+ β”‚ └── docs/npc_config.json
58
+ β”œβ”€β”€ utils/ # μœ ν‹Έλ¦¬ν‹° λͺ¨λ“ˆ
59
+ β”‚ β”œβ”€β”€ hf_client.py # HF API 톡신
60
+ β”‚ └── context_parser.py # λŒ€ν™” λ§₯락 νŒŒμ‹±
61
+ β”œβ”€β”€ models/ # λͺ¨λΈ λ‘œλ”© 및 fallback 처리
62
+ β”‚ └── model_loader.py
63
+ ```
64
+
65
+ ---
66
+
67
+ ### 🧩 μ΅œμ‹  RAG νƒ€μž…λ³„ λ§€ν•‘ (11μ’…)
68
+
69
+ | **type** | **쑰회 μ‹œμ ** | **쑰회 쑰건** | **μ‚¬μš© λͺ¨λ“ˆ/ν•¨μˆ˜** | **μ£Όμš” λͺ©μ ** |
70
+ |----------|--------------|---------------|--------------------|---------------|
71
+ | `trigger_def` | preprocess_input | npc_id, quest_stage | retrieve(...) | 메인 경둜 쑰건 νŒμ • |
72
+ | `fallback` | preprocess_input | npc_id, quest_stage | retrieve(...) | fallback prompt ꡬ성 |
73
+ | `forbidden_trigger_list` | preprocess_input | npc_id | _load_forbidden_trigger_data | κΈˆμ§€ 트리거 감지 |
74
+ | `trigger_meta` | preprocess_input | npc_id, trigger | _load_trigger_meta | 특수 fallback μ‹œ delta/action ν™•μ • |
75
+ | `lore` | build_main_prompt | npc_id, quest_stage/any | RAG main docs | 세계관/λ°°κ²½ μ„€λͺ… |
76
+ | `description` | build_main_prompt | npc_id, quest_stage | RAG main docs | ν˜„μž¬ 상황 μ„€λͺ… |
77
+ | `flag_def` | postprocess_pipeline | npc_id, quest_stage, flag_name | pre_data["rag_main_docs"] | flag threshold/μ˜ˆμ‹œ λ¬Έμž₯ |
78
+ | `main_res_validate` | postprocess_pipeline | npc_id, quest_stage | pre_data["rag_main_docs"] | 응닡 검증 κΈ°μ€€ |
79
+ | `npc_persona` | build_main_prompt | npc_id | retrieve(...) | NPC μ„±κ²©Β·νŠΉμ„± 반영 |
80
+ | `dialogue_turn` | postprocess_pipeline | npc_id, quest_stage | retrieve(...) | λŒ€ν™” μ˜ˆμ‹œ μ°Έμ‘° |
81
+ | *(μ—†μŒ)* | fallback_final_check | pre_data["trigger_meta"] | - | 응닡 의미 일치 검증 |
82
+
83
+ ---
84
+
85
+ ### πŸ“Œ 데이터 흐름 μš”μ•½
86
+
87
+ 1. **preprocess_input()**
88
+ - trigger_def β†’ 메인 쑰건 νŒμ •
89
+ - forbidden_trigger_list + trigger_meta β†’ 특수 fallback 감지
90
+ - fallback β†’ 일반 fallback μŠ€νƒ€μΌ
91
+
92
+ 2. **build_main_prompt()**
93
+ - lore + description + npc_persona β†’ 메인 prompt μ»¨ν…μŠ€νŠΈ ꡬ성
94
+
95
+ 3. **build_fallback_prompt()**
96
+ - fallback_style + trigger_meta β†’ fallback prompt ꡬ성
97
+
98
+ 4. **postprocess_pipeline()**
99
+ - flag_def β†’ flag threshold/μ˜ˆμ‹œ
100
+ - main_res_validate β†’ 응닡 검증
101
+
102
+ 5. **fallback_final_check()**
103
+ - trigger_meta β†’ delta/action 의미 일치 검증
104
+
105
+ ---
106
+
107
+ ### πŸ”— ν…ŒμŠ€νŠΈ
108
+ μ—…λ°μ΄νŠΈ μ˜ˆμ •
109
+
110
+ ---