Spaces:
Running
Running
A newer version of the Gradio SDK is available:
5.42.0
Gradio RAG ์ฑ๋ด & LocalPCAgent ์ ์ด ์น์ฑ ํตํฉ ํ๋ก์ ํธ ๊ณํ
1. ํ๋ก์ ํธ ๊ฐ์
๋ณธ ํ๋ก์ ํธ๋ ๊ธฐ์กด์ ๊ตฌํ๋ RAG ์ฑ๋ด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ LocalPCAgent ์ ์ด ๊ธฐ๋ฅ์ ๊ฐ์ง ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋์ ํตํฉ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๊ฒฐํฉํ๋ ์์ ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋จ์ผ ์น ์ธํฐํ์ด์ค ๋ด์์ RAG ์ฑ๋ด๊ณผ ์ํธ์์ฉํ๋ฉด์ ๋์์ ์๊ฒฉ PC์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ฑฐ๋ ์ํ๋ฅผ ํ์ธํ๋ ๋ฑ์ ์ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
2. ํ๋ก์ ํธ ํ์ฌ ์ํ
์๋ฃ๋ ์์
- ๋ฐฑ์๋ API ํ์ธ ๋ฐ ์ค๋น (app_device_routes.py)
- HTML/CSS UI ์์ ์ถ๊ฐ (ํ ํ๋ฆฟ ์์ , CSS ์ถ๊ฐ)
- JavaScript ์ฝ์ด ์ ํธ๋ฆฌํฐ ๋ชจ๋ ์์ฑ (app-core.js)
- ์ฅ์น ์ ์ด UI ๋ชจ๋ ์์ฑ (app-device.js)
- ๋ฉ์ธ 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 ์ฑ๋ด๊ณผ ์ฅ์น ์ ์ด ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ด ํตํฉ๋์์ต๋๋ค:
๋ฐฑ์๋ ํตํฉ
- app_revised.py์์ RAG ์ฑ๋ด ๋ผ์ฐํธ(app_routes.py)์ ์ฅ์น ์ ์ด ๋ผ์ฐํธ(app_device_routes.py)๋ฅผ ๋ชจ๋ ๋ฑ๋ก
- ์ฅ์น ์ ์ด๋ ๋ฐฑ์๋์์ LocalPCAgent์ ํต์ (ํ๋ก์ ํจํด)
ํ๋ก ํธ์๋ ํตํฉ
- ํญ ๊ธฐ๋ฐ 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. ํ ์คํธ ๋ฐฉ๋ฒ
๋ก์ปฌ ํ ์คํธ
- LocalPCAgent ์๋ฒ ์คํ ๋ฐ ngrok URL ํ์ธ
- ํ๊ฒฝ ๋ณ์ ์ค์ :
DEVICE_SERVER_URL=<ngrok-url>
- Flask ์ฑ ์คํ:
python app.py
- ์น ๋ธ๋ผ์ฐ์ ์์
http://localhost:7860
์ ์ - ๋ก๊ทธ์ธ ํ '์ฅ์น ์ ์ด' ํญ ํ ์คํธ
๋๋ฒ๊น
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ ์ฝ์: JavaScript ๋ก๊ทธ ๋ฐ ์ค๋ฅ ํ์ธ
- Flask ์๋ฒ ๋ก๊ทธ: API ์์ฒญ ๋ฐ ์๋ต ํ์ธ
- LocalPCAgent ์๋ฒ ๋ก๊ทธ: ์ค์ ์คํ ๊ฒฐ๊ณผ ํ์ธ
8. ํฅํ ๊ฐ์ ์ฌํญ
- ์ฅ์น ์ ์ด ๋ก๊ทธ ์ ์ฅ ๋ฐ ์ด๋ ฅ ์กฐํ ๊ธฐ๋ฅ
- ์คํ ๊ฒฐ๊ณผ ์คํฌ๋ฆฐ์ท ์๋ ์บก์ฒ ๋ฐ ํ์
- ์คํ ํ๋ก๊ทธ๋จ ์ค์ผ์ค๋ง (์์ฝ ์คํ)
- ๋ ์์ธํ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ๋ณต๊ตฌ ๋ฉ์ปค๋์ฆ
- ์ฅ์น ๊ด๋ฆฌ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ด์ ์ฐ๋ (์ฑํ ์ผ๋ก ์ฅ์น ์ ์ด ๋ช ๋ น ๋ด๋ฆฌ๊ธฐ)