Spaces:
Running
Running
# Gradio RAG ์ฑ๋ด & LocalPCAgent ์ ์ด ์น์ฑ ํตํฉ ํ๋ก์ ํธ ๊ณํ | |
## 1. ํ๋ก์ ํธ ๊ฐ์ | |
๋ณธ ํ๋ก์ ํธ๋ ๊ธฐ์กด์ ๊ตฌํ๋ RAG ์ฑ๋ด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ LocalPCAgent ์ ์ด ๊ธฐ๋ฅ์ ๊ฐ์ง ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋์ ํตํฉ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๊ฒฐํฉํ๋ ์์ ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋จ์ผ ์น ์ธํฐํ์ด์ค ๋ด์์ RAG ์ฑ๋ด๊ณผ ์ํธ์์ฉํ๋ฉด์ ๋์์ ์๊ฒฉ PC์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ฑฐ๋ ์ํ๋ฅผ ํ์ธํ๋ ๋ฑ์ ์ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. | |
## 2. ํ๋ก์ ํธ ํ์ฌ ์ํ | |
### ์๋ฃ๋ ์์ | |
- [x] ๋ฐฑ์๋ API ํ์ธ ๋ฐ ์ค๋น (app_device_routes.py) | |
- [x] HTML/CSS UI ์์ ์ถ๊ฐ (ํ ํ๋ฆฟ ์์ , CSS ์ถ๊ฐ) | |
- [x] JavaScript ์ฝ์ด ์ ํธ๋ฆฌํฐ ๋ชจ๋ ์์ฑ (app-core.js) | |
- [x] ์ฅ์น ์ ์ด UI ๋ชจ๋ ์์ฑ (app-device.js) | |
- [x] ๋ฉ์ธ JavaScript ์ฝ๋ ์ ๋ฐ์ดํธ (app.js) | |
### ๊ตฌ์ฑ ์์ | |
- **Flask ๋ฐฑ์๋** | |
- app_revised.py: ๋ฉ์ธ Flask ์ ํ๋ฆฌ์ผ์ด์ | |
- app_routes.py: RAG ์ฑ๋ด ๊ด๋ จ API ๋ผ์ฐํธ | |
- app_device_routes.py: ์ฅ์น ์ ์ด ๊ด๋ จ API ๋ผ์ฐํธ | |
- init_retriever.py: RAG ๊ฒ์๊ธฐ ์ด๊ธฐํ ๊ด๋ จ ์ฝ๋ | |
- **์น ํ๋ก ํธ์๋** | |
- index.html: ๋ฉ์ธ UI ํ ํ๋ฆฟ (์ฑํ , ๋ฌธ์ ๊ด๋ฆฌ, ์ฅ์น ์ ์ด ํญ ํฌํจ) | |
- app-core.js: ๊ณตํต ์ ํธ๋ฆฌํฐ JavaScript ๋ชจ๋ | |
- app-device.js: ์ฅ์น ์ ์ด ๊ด๋ จ JavaScript ๋ชจ๋ | |
- app.js: ๋ฉ์ธ JavaScript ์ฝ๋ | |
- device-style.css: ์ฅ์น ์ ์ด UI ๊ด๋ จ ์คํ์ผ | |
## 3. ๊ธฐ๋ฅ ์ค๋ช | |
### RAG ์ฑ๋ด ๊ธฐ๋ฅ | |
- ํ ์คํธ ๊ธฐ๋ฐ ์ง์์๋ต | |
- ์์ฑ ์ธ์์ ํตํ ์ง์์๋ต | |
- ๋ฌธ์ ์ ๋ก๋ ๋ฐ ๊ด๋ฆฌ | |
- ๋ค์ํ LLM ๋ชจ๋ธ ์ ํ ๊ฐ๋ฅ (OpenAI, DeepSeek ๋ฑ) | |
### LocalPCAgent ์ ์ด ๊ธฐ๋ฅ | |
- ์๊ฒฉ PC ์ํ ํ์ธ | |
- ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ ๋ชฉ๋ก ์กฐํ | |
- ์๊ฒฉ์ผ๋ก ํ๋ก๊ทธ๋จ ์คํ | |
## 4. ๊ธฐ์ ์คํ | |
### ๋ฐฑ์๋ | |
- Flask: ์น ์๋ฒ ๋ฐ API ์ ๊ณต | |
- OpenAI/DeepSeek: LLM ๋ชจ๋ธ ํต์ | |
- VITO STT: ์์ฑ-ํ ์คํธ ๋ณํ | |
- ์๋ฒ ๋ฉ/๊ฒ์: RAG ๊ธฐ๋ฅ ๊ตฌํ | |
### ํ๋ก ํธ์๋ | |
- HTML/CSS/JavaScript: ๊ธฐ๋ณธ ์น ์ธํฐํ์ด์ค | |
- Fetch API: ๋ฐฑ์๋ ํต์ | |
- MediaRecorder API: ์ค๋์ค ๋ น์ | |
## 5. ํตํฉ ์ํคํ ์ฒ | |
### ํตํฉ ๋ฐฉ์ | |
์ด ํ๋ก์ ํธ๋ "Flask ๋ฐฑ์๋ + HTML/JavaScript ํ๋ก ํธ์๋" ๊ตฌ์กฐ๋ก ๋์ด ์์ต๋๋ค. RAG ์ฑ๋ด๊ณผ ์ฅ์น ์ ์ด ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ด ํตํฉ๋์์ต๋๋ค: | |
1. **๋ฐฑ์๋ ํตํฉ** | |
- app_revised.py์์ RAG ์ฑ๋ด ๋ผ์ฐํธ(app_routes.py)์ ์ฅ์น ์ ์ด ๋ผ์ฐํธ(app_device_routes.py)๋ฅผ ๋ชจ๋ ๋ฑ๋ก | |
- ์ฅ์น ์ ์ด๋ ๋ฐฑ์๋์์ LocalPCAgent์ ํต์ (ํ๋ก์ ํจํด) | |
2. **ํ๋ก ํธ์๋ ํตํฉ** | |
- ํญ ๊ธฐ๋ฐ UI๋ก ๊ธฐ๋ฅ ๋ถ๋ฆฌ (์ฑํ , ๋ฌธ์ ๊ด๋ฆฌ, ์ฅ์น ์ ์ด) | |
- ๋ชจ๋ํ๋ JavaScript ํ์ผ๋ก ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ | |
- ๊ณตํต ์ ํธ๋ฆฌํฐ ํจ์๋ app-core.js์ ํตํฉ | |
### ๋ฐ์ดํฐ ํ๋ฆ | |
- ์ฌ์ฉ์ -(์์ฒญ)-> ์น UI -(API ํธ์ถ)-> Flask ๋ฐฑ์๋ -(ํ๋ก์ ์์ฒญ)-> LocalPCAgent/LLM | |
- LocalPCAgent/LLM -(์๋ต)-> Flask ๋ฐฑ์๋ -(JSON ์๋ต)-> ์น UI -(ํ์)-> ์ฌ์ฉ์ | |
## 6. ๋ณด์ ๊ณ ๋ ค์ฌํญ | |
- ๋ชจ๋ API์ `@login_required` ๋ฐ์ฝ๋ ์ดํฐ ์ ์ฉํ์ฌ ์ธ์ฆ๋ ์ฌ์ฉ์๋ง ์ ๊ทผ ๊ฐ๋ฅ | |
- ๋ธ๋ผ์ฐ์ ์์ ์ง์ LocalPCAgent URL์ ์ ๊ทผํ์ง ์๊ณ ํญ์ Flask ๋ฐฑ์๋๋ฅผ ํตํด ์ ๊ทผ | |
- DEVICE_SERVER_URL์ ์๋ฒ ํ๊ฒฝ๋ณ์๋ก๋ง ๊ด๋ฆฌ (ํด๋ผ์ด์ธํธ ์ฝ๋์ ๋ ธ์ถ ์ ํจ) | |
## 7. ํ ์คํธ ๋ฐฉ๋ฒ | |
### ๋ก์ปฌ ํ ์คํธ | |
1. LocalPCAgent ์๋ฒ ์คํ ๋ฐ ngrok URL ํ์ธ | |
2. ํ๊ฒฝ ๋ณ์ ์ค์ : `DEVICE_SERVER_URL=<ngrok-url>` | |
3. Flask ์ฑ ์คํ: `python app.py` | |
4. ์น ๋ธ๋ผ์ฐ์ ์์ `http://localhost:7860` ์ ์ | |
5. ๋ก๊ทธ์ธ ํ '์ฅ์น ์ ์ด' ํญ ํ ์คํธ | |
### ๋๋ฒ๊น | |
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ ์ฝ์: JavaScript ๋ก๊ทธ ๋ฐ ์ค๋ฅ ํ์ธ | |
- Flask ์๋ฒ ๋ก๊ทธ: API ์์ฒญ ๋ฐ ์๋ต ํ์ธ | |
- LocalPCAgent ์๋ฒ ๋ก๊ทธ: ์ค์ ์คํ ๊ฒฐ๊ณผ ํ์ธ | |
## 8. ํฅํ ๊ฐ์ ์ฌํญ | |
- ์ฅ์น ์ ์ด ๋ก๊ทธ ์ ์ฅ ๋ฐ ์ด๋ ฅ ์กฐํ ๊ธฐ๋ฅ | |
- ์คํ ๊ฒฐ๊ณผ ์คํฌ๋ฆฐ์ท ์๋ ์บก์ฒ ๋ฐ ํ์ | |
- ์คํ ํ๋ก๊ทธ๋จ ์ค์ผ์ค๋ง (์์ฝ ์คํ) | |
- ๋ ์์ธํ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ๋ณต๊ตฌ ๋ฉ์ปค๋์ฆ | |
- ์ฅ์น ๊ด๋ฆฌ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ด์ ์ฐ๋ (์ฑํ ์ผ๋ก ์ฅ์น ์ ์ด ๋ช ๋ น ๋ด๋ฆฌ๊ธฐ) | |