File size: 4,192 Bytes
d93e680
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# RAG5_2_ChooseLLM ํ”„๋กœ์ ํŠธ ๊ณ„ํš์„œ

## ํ”„๋กœ์ ํŠธ ๊ฐœ์š”
์ด ํ”„๋กœ์ ํŠธ๋Š” RAG(Retrieval-Augmented Generation) ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ์ฑ—๋ด‡์œผ๋กœ, ์ง€์‹๋ฒ ์ด์Šค์—์„œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์งˆ์˜์— ๋‹ต๋ณ€ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ํŠน์ง•์œผ๋กœ๋Š” OpenAI์™€ DeepSeek ๋“ฑ ๋‹ค์–‘ํ•œ LLM์„ ์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๊ณผ ์žฅ์น˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

## ์ฃผ์š” ๊ธฐ๋Šฅ
1. ์ง€์‹๋ฒ ์ด์Šค ๊ด€๋ฆฌ
   - ๋ฌธ์„œ ์—…๋กœ๋“œ (.txt, .md, .csv ๋“ฑ)
   - ๋ฌธ์„œ ์ฒญํฌ ๋ถ„ํ•  ๋ฐ ๋ฒกํ„ฐ ์ธ๋ฑ์‹ฑ
   - ์ง€์‹๋ฒ ์ด์Šค ๋ฌธ์„œ ๋ชฉ๋ก ์กฐํšŒ

2. LLM ์„ ํƒ
   - OpenAI, DeepSeek ๋“ฑ ๋‹ค์–‘ํ•œ LLM ์„ ํƒ ๊ฐ€๋Šฅ
   - LLM ๋ณ€๊ฒฝ ์‹œ ์‹ค์‹œ๊ฐ„ ์ „ํ™˜
   - ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ LLM ์ •๋ณด ํ‘œ์‹œ

3. ์ฑ—๋ด‡ ๊ธฐ๋Šฅ
   - ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์งˆ์˜์‘๋‹ต
   - ์Œ์„ฑ ์ธ์‹ ๋ฐ ์งˆ์˜์‘๋‹ต (VITO STT ํ™œ์šฉ)
   - ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ •๋ณด ์ถœ์ฒ˜ ํ‘œ์‹œ

4. ์žฅ์น˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ
   - ๋กœ์ปฌ PC์™€ ํ†ต์‹ ํ•˜๋Š” ๊ธฐ๋Šฅ
   - ์žฅ์น˜ ์ƒํƒœ ํ™•์ธ ๋ฐ ์žฅ์น˜ ๋ชฉ๋ก ์กฐํšŒ
   - ํ”„๋กœ๊ทธ๋žจ ๋ชฉ๋ก ์กฐํšŒ ๋ฐ ์‹คํ–‰

## ๊ธฐ์ˆ  ์Šคํƒ
- **๋ฐฑ์—”๋“œ:** Flask (Python)
- **ํ”„๋ก ํŠธ์—”๋“œ:** HTML, CSS, JavaScript
- **LLM ํ†ตํ•ฉ:** OpenAI API, DeepSeek API
- **๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ:** ๋ฒกํ„ฐ ๊ฒ€์ƒ‰, ์žฌ์ˆœ์œ„ํ™”
- **STT ์„œ๋น„์Šค:** VITO API
- **ํ†ต์‹  ํ”„๋กœํ† ์ฝœ:** RESTful API

## ์™„๋ฃŒ๋œ ์ž‘์—…
- [X] ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์„ค์ •
- [X] Flask ์›น ์„œ๋ฒ„ ๊ตฌํ˜„
- [X] ๋‹ค์ค‘ LLM ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ (OpenAI, DeepSeek)
- [X] ์‚ฌ์šฉ์ž ์ธ์ฆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
- [X] ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ๋ฐ ์žฌ์ˆœ์œ„ํ™” ๊ธฐ๋Šฅ ๊ตฌํ˜„
- [X] ๋ฌธ์„œ ์ฒ˜๋ฆฌ ๋ฐ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„
- [X] ์›น ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„
- [X] ์žฅ์น˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ํ†ตํ•ฉ
- [X] ์žฅ์น˜ ๊ด€๋ฆฌ UI ๊ตฌํ˜„

## ์ง„ํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…
- [ ] LLM ์„ ํƒ UI ๊ฐœ์„ 
  - ๋“œ๋กญ๋‹ค์šด์— ์•„์ด์ฝ˜ ์ถ”๊ฐ€
  - ๊ฐ LLM๋ณ„ ์ƒ์„ธ ๋ชจ๋ธ ์ •๋ณด ํ‘œ์‹œ
- [ ] ์‘๋‹ต ๋‚ด ์†Œ์Šค ๋งํฌ ํด๋ฆญ ์‹œ ์›๋ฌธ ํ‘œ์‹œ ๊ธฐ๋Šฅ
- [ ] ์‘๋‹ต ์†๋„ ๊ฐœ์„ 
- [ ] ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ฐ•ํ™”
- [ ] ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ ๋ฐ ์œ ๋‹› ํ…Œ์ŠคํŠธ ๊ตฌํ˜„
- [ ] ์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ ๋ฌธ์„œ ์ž‘์„ฑ

## ํ†ตํ•ฉ ๊ตฌํ˜„ ๋‚ด์šฉ

### 1. ์›น์•ฑ ํ†ตํ•ฉ
- ๋‹จ์ผ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— RAG ๊ฒ€์ƒ‰ ์ฑ—๋ด‡๊ณผ ์žฅ์น˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ํ†ตํ•ฉ
- ํƒญ ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ธฐ๋Šฅ ๋ถ„๋ฆฌ (๋Œ€ํ™”, ๋ฌธ์„œ๊ด€๋ฆฌ, ์žฅ์น˜๊ด€๋ฆฌ)
- Flask๋ฅผ ํ†ตํ•œ ์ค‘์•™ ์ง‘์ค‘์‹ ์„œ๋ฒ„ ๊ด€๋ฆฌ

### 2. ์žฅ์น˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ
- ์žฅ์น˜ ์ƒํƒœ ํ™•์ธ ๊ธฐ๋Šฅ
- ์—ฐ๊ฒฐ๋œ ์žฅ์น˜ ๋ชฉ๋ก ์กฐํšŒ
- ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ ๋ชฉ๋ก ์กฐํšŒ ๋ฐ ์‹คํ–‰
- ์„œ๋ฒ„์™€์˜ RESTful API ํ†ต์‹ 

### 3. ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌํ˜„
- ์ง๊ด€์ ์ธ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค
- ์‹ค์‹œ๊ฐ„ ์ƒํƒœ ์—…๋ฐ์ดํŠธ
- ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐ ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต
- ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ์ ์šฉ

## ํŒŒ์ผ ๊ตฌ์กฐ
```
RAG5_2_ChooseLLM/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ app.py                   # ๋ฉ”์ธ Flask ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
โ”‚   โ”œโ”€โ”€ app_routes.py            # ๊ธฐ๋ณธ ๋ผ์šฐํŠธ ์ •์˜
โ”‚   โ”œโ”€โ”€ app_device_routes.py     # ์žฅ์น˜ ๊ด€๋ฆฌ ๊ด€๋ จ ๋ผ์šฐํŠธ
โ”‚   โ”œโ”€โ”€ static/
โ”‚   โ”‚   โ”œโ”€โ”€ css/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ style.css        # ์Šคํƒ€์ผ์‹œํŠธ
โ”‚   โ”‚   โ””โ”€โ”€ js/
โ”‚   โ”‚       โ”œโ”€โ”€ app.js           # ๋ฉ”์ธ JavaScript
โ”‚   โ”‚       โ””โ”€โ”€ app-device.js    # ์žฅ์น˜ ๊ด€๋ฆฌ JavaScript
โ”‚   โ””โ”€โ”€ templates/
โ”‚       โ”œโ”€โ”€ index.html           # ๋ฉ”์ธ ํŽ˜์ด์ง€ ํ…œํ”Œ๋ฆฟ
โ”‚       โ””โ”€โ”€ login.html           # ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ํ…œํ”Œ๋ฆฟ
โ”œโ”€โ”€ data/                        # ์—…๋กœ๋“œ๋œ ๋ฌธ์„œ ์ €์žฅ
โ”œโ”€โ”€ docs/                        # ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ
โ”œโ”€โ”€ retrieval/                   # ๊ฒ€์ƒ‰ ๊ด€๋ จ ๋ชจ๋“ˆ
โ””โ”€โ”€ utils/                       # ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ชจ๋“ˆ
```

## ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
- `ADMIN_USERNAME`: ๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž๋ช… (๊ธฐ๋ณธ๊ฐ’: admin)
- `ADMIN_PASSWORD`: ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ (๊ธฐ๋ณธ๊ฐ’: rag12345)
- `DEVICE_SERVER_URL`: ์žฅ์น˜ ๊ด€๋ฆฌ ์„œ๋ฒ„ URL (๊ธฐ๋ณธ๊ฐ’: http://localhost:5050)
- `OPENAI_API_KEY`: OpenAI API ํ‚ค
- `DEEPSEEK_API_KEY`: DeepSeek API ํ‚ค
- `VITO_API_KEY`: VITO STT API ํ‚ค

## ์ฐธ๊ณ  ์‚ฌํ•ญ
- ์žฅ์น˜ ๊ด€๋ฆฌ ์„œ๋ฒ„๋Š” ๋ณ„๋„๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•จ (ํฌํŠธ 5050)
- OpenAI, DeepSeek ๋ฐ VITO API ํ‚ค๋Š” .env ํŒŒ์ผ์— ์„ค์ •ํ•ด์•ผ ํ•จ
- ์ดˆ๊ธฐ ๋กœ๊ทธ์ธ ๊ณ„์ • ์ •๋ณด๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉ