PKC AI Project

AI๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ณด๊ธ‰ํ˜• ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ์—์„œ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ฑ—๋ด‡ ๋งŒ๋“ค์–ด ๋ณด๊ธฐ

AI-ONE

AI MARK ํŒŒ์ผ ๊ตฌ์กฐ ์™„์ „๋ถ„์„: ํ•ต์‹ฌ ํŒŒ์ผ๊ณผ ์—ญํ•  ์ •๋ฆฌ + ํ™œ์šฉ ํŒ

AI Orchestrator 2025. 9. 25. 09:36


๐Ÿ“‹ ์™„์ „ํ•œ ํŒŒ์ผ ๊ตฌ์กฐ ๋ถ„์„ ๋ณด๊ณ ์„œ (์—…๋ฐ์ดํŠธ)

 

๐Ÿ—๏ธ CORE (๋ฐฑ์—”๋“œ/์—”์ง„) ์˜์—ญ - 5๊ฐœ ํŒŒ์ผ

1. chat.py (๋ฉ”์ธ ์„œ๋ฒ„)

 

FastAPI ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ AI ์‹œ์Šคํ…œ

MultiModelManager: Bllossom-8B + Qwen2-VL + ๊ฐ์ •๋ถ„์„

SSE ์ŠคํŠธ๋ฆฌ๋ฐ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ์„ธ์…˜ ๊ด€๋ฆฌ

๋ธŒ๋ผ์šฐ์ € STT/TTS ์ „ํ™˜ ์™„๋ฃŒ (Whisper ์ œ๊ฑฐ๋จ)

 

2. models.py (๋”๋ฏธ ์ฐธ์กฐ์šฉ)

 

์•ˆ์ „ ๊ธฐ๋ณธํ˜• ๋ชจ๋ธ ๋งค๋‹ˆ์ €

 

MultiModelManager ์‚ฌ์šฉ

 

3. api_routes.py(ํ™•์žฅ API)

 

์ด๋ฏธ์ง€ ์ŠคํŠธ๋ฆผ, ์„ธ์…˜ ๊ด€๋ฆฌ, ํŒŒ์ผ ์—…๋กœ๋“œ

/image_stream, /sessions/*, /upload ์—”๋“œํฌ์ธํŠธ

 

4. database.py (SQLite ์œ ํ‹ธ)

 

์„ธ์…˜ ํžˆ์Šคํ† ๋ฆฌ, ๋ณต๊ตฌ, ๋ณต์‚ฌ, ํ†ต๊ณ„ ํ•จ์ˆ˜

 

5. core_utils.py (๊ณต์šฉ ์œ ํ‹ธ)

 

์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ์กฐํ•ฉ, ์›น ๊ฒ€์ƒ‰ ํ•จ์ˆ˜

 

๐ŸŽจ UI/UX (ํ”„๋ก ํŠธ์—”๋“œ) ์˜์—ญ - 17๊ฐœ ํŒŒ์ผ

HTML ์ปดํฌ๋„ŒํŠธ (6๊ฐœ):

 

index.html - ๋ฉ”์ธ ๋ ˆ์ด์•„์›ƒ

sidebar.html - ์‚ฌ์ด๋“œ๋ฐ” ํŒจ๋„

main-toolbar.html - ์ƒ๋‹จ ํˆด๋ฐ”

chat-messages.html - ๋ฉ”์‹œ์ง€ ์˜์—ญ

chat-input.html - ์ž…๋ ฅ์ฐฝ

custom-modal.html - ๋ชจ๋‹ฌ

 

CSS ์Šคํƒ€์ผ (5๊ฐœ):

 

sidebar.css - ์‚ฌ์ด๋“œ๋ฐ” ์Šคํƒ€์ผ

main-toolbar.css - ํˆด๋ฐ” ์Šคํƒ€์ผ

chat-messages.css - ๋ฉ”์‹œ์ง€ ๋ฒ„๋ธ” ์Šคํƒ€์ผ

chat-input.css - ์ž…๋ ฅ์ฐฝ ์Šคํƒ€์ผ

custom-modal.css - ๋ชจ๋‹ฌ ์Šคํƒ€์ผ

 

JavaScript ๋ชจ๋“ˆ (5๊ฐœ):

 

app.js - ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ, ํ—ฌ์Šค SSE

chat.js - ์ฑ„ํŒ… SSE, ๋ฉ”์‹œ์ง€ ๋ Œ๋”๋ง

session.js - ์„ธ์…˜ ๊ด€๋ฆฌ, ํŒŒ์ผ ์ฒ˜๋ฆฌ

ui_voice.js - ๋ธŒ๋ผ์šฐ์ € STT/TTS

bridge.js - ์ปดํฌ๋„ŒํŠธ ๋กœ๋”, ์ด๋ฒคํŠธ ๋ฒ„์Šค

 

๊ธฐํƒ€ (1๊ฐœ):

 

manifest.json - PWA ๋งค๋‹ˆํŽ˜์ŠคํŠธ

 

โœ… ์™„์ „์„ฑ ํ™•์ธ

์ด์ œ ๋ชจ๋“  ํŒŒ์ผ์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

 

์ด 22๊ฐœ ํŒŒ์ผ (CORE 5๊ฐœ + UI/UX 17๊ฐœ)

bridge.js ํŒŒ์ผ๋„ ์ •์ƒ ํ™•์ธ๋จ

์ปดํฌ๋„ŒํŠธ ๋กœ๋”ฉ ์‹œ์Šคํ…œ ์™„๋น„

 

๐Ÿ”„ ์‹œ์Šคํ…œ ๋™์ž‘ ํ๋ฆ„

1. ์ดˆ๊ธฐํ™” ์ˆœ์„œ:

bridge.js → ์ปดํฌ๋„ŒํŠธ HTML ๋กœ๋“œ → Bus.emit('component:ready') → ๊ฐ ๋ชจ๋“ˆ init()

2. ์ฑ„ํŒ… ํ๋ฆ„:

์‚ฌ์šฉ์ž ์ž…๋ ฅ → chat.js → SSE(/chat_stream_sse_fetch) → chat.py → ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต

3. ์„ธ์…˜ ๊ด€๋ฆฌ:

session.js → API(/sessions/*) → database.py → SQLite ์ €์žฅ

๐ŸŽฏ ์ฃผ์š” ํŠน์ง•

๋ฐฑ์—”๋“œ:

 

Python FastAPI + SQLite

ํ•œ๊ตญ์–ด ํŠนํ™” (Bllossom-8B)

์ด๋ฏธ์ง€ ์ดํ•ด/์ƒ์„ฑ (Qwen2-VL + Stable Diffusion)

๊ฐ์ • ๋ถ„์„ ๋ฐ ํ†ค ์กฐ์ ˆ

๋ธŒ๋ผ์šฐ์ € ์Œ์„ฑ ๊ธฐ๋Šฅ (์„œ๋ฒ„ Whisper ์ œ๊ฑฐ)

 

ํ”„๋ก ํŠธ์—”๋“œ:

 

๋ฐ”๋‹๋ผ JS ์ปดํฌ๋„ŒํŠธ ์‹œ์Šคํ…œ

๋ชจ๋“ˆํ˜• ์•„ํ‚คํ…์ฒ˜ (PKC ๋„ค์ž„์ŠคํŽ˜์ด์Šค)

๋ฐ˜์‘ํ˜• ๋””์ž์ธ (16px ๊ธฐ๋ณธ ๊ฐ„๊ฒฉ)

SSE ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ

 

๐Ÿš€ ์‹œ์Šคํ…œ ์ƒํƒœ

์™„์ „ํ•œ ๋ชจ๋“ˆํ˜• AI ์ฑ—๋ด‡ ์‹œ์Šคํ…œ์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒŒ์ผ์ด ์ •์ƒ์ ์œผ๋กœ ์—…๋กœ๋“œ๋˜์–ด ์žˆ๊ณ , ์˜์กด์„ฑ๋„ ํ•ด๊ฒฐ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.