๋ถ์ฐยท์ธ์ฐยท๊ฒฝ๋จ(๋ถ์ธ๊ฒฝ) 60โ69์ธ ์๋์ด๋ฅผ ๋์์ผ๋ก ํ๋ ์์ฑ ์ค์ฌ Zero-UI ์ปค๋ฆฌ์ด ๋ด๋น๊ฒ์ด์ ๋ฐ๋ชจ์ ๋๋ค. 10๊ฐ์ ๊ณ ์ ์ง๋ฌธ์ ์์ฑ์ผ๋ก ๋ตํ๋ฉด, LLM์ด ํ๋กํ์ ๋ง๋ค๊ณ JSON ๋ฐ์ดํฐ์์ ์ผ์๋ฆฌยท์ ์ฑ ยท๊ต์ก์ ์ถ์ฒํ ๋ค TTS๋ก ์ฝ์ด์ค๋๋ค.
- ๋ธ๋ผ์ฐ์ ์์ฑ ๋ น์ โ STT(Whisper) โ ๋ต๋ณ ๋์
- ๋ต๋ณ 10๊ฐ โ LLM(GPT-5) ๋จ์ผ ํธ์ถ๋ก ํ๋กํ/ํ๋ฅด์๋ JSON ์์ฑ
- ๋ก์ปฌ JSON(jobs, policies, educations) + ๊ฐ๋จ ํํฐ โ LLM ์ฌ๋ญํน ํ Top 3 ์ผ์๋ฆฌ ์ถ์ฒ
- ์ถ์ฒ ๊ฒฐ๊ณผ๋ฅผ TTS๋ก ์์ฑ ์๋ด
- ํ๊ฒฝ ๋ณ์ ์ค์
.env.example๋ณต์ฌ ํ ํค ์ ๋ ฅ:cp .env.example .env.localOPENAI_API_KEY: ํ์OPENAI_LLM_MODEL: ๊ธฐ๋ณธgpt-5OPENAI_STT_MODEL: ๊ธฐ๋ณธwhisper-1
OPENAI_TTS_MODEL: ๊ธฐ๋ณธgpt-4o-mini-ttsDEFAULT_REGION: ์ง์ญ ๋จ์ ์์ ๋ ์ฌ์ฉํ ๊ธฐ๋ณธ๊ฐ(๊ธฐ๋ณธ ๋ถ์ฐ)
- ๋ก์ปฌ ๊ฐ๋ฐ ์๋ฒ
๋ธ๋ผ์ฐ์ ์์
npm run devhttp://localhost:3000์ ์ โ โ์์ํ๊ธฐโ ๋ฒํผ์ ๋๋ฅด๊ณ ์์ฑ ํ๋ฆ์ ํ ์คํธํฉ๋๋ค.
POST /api/stt: ์์ฑ multipart/form-data(file) โ STT ํ ์คํธ ๋ฐํPOST /api/tts:{ text, voice? }โ mp3 ๋ฐ์ด๋๋ฆฌ ๋ฐํPOST /api/profile:{ answers }โ ์๋์ด ํ๋กํ/ํ๋ฅด์๋ JSONPOST /api/recommendations:{ profile }โ ์ผ์๋ฆฌ Top3 + ์ ์ฑ /๊ต์ก ์ถ์ฒ
src/data/jobs.json: id, title, region, work_days, activity_level, posture, ๊ธ์ฌ ๋ฒ์ ๋ฑsrc/data/policies.json: ์ง์ญยท์ฐ๋ น ๋์, ํํ, ์ค๋ชsrc/data/educations.json: ์ง์ญ/์จ๋ผ์ธ, ๊ธฐ๊ฐ, ๋น์ฉ, ์์ฝ
- Qdrant ๋ฑ ๋ฒกํฐ DB ๋์
์,
matching๋ชจ๋์ ๋ฉํ๋ฐ์ดํฐ ํํฐ + ๋ฒกํฐ ๊ฒ์์ผ๋ก ๋์ฒด - STT/TTS/LLM ๋ชจ๋ธ๋ช ์ env๋ก ๋ถ๋ฆฌํด ๋ค๋ฅธ ์ ๊ณต์ฌ ๋ชจ๋ธ๋ก ์ ํ ๊ฐ๋ฅ
- ์ง๋ฌธ ์ธํธ๋ ํ๋กฌํํธ๋ฅผ
src/constants/src/lib/prompts์์ ์ฝ๊ฒ ์์
- ๋ธ๋ผ์ฐ์ ์ ๋ง์ดํฌ ๊ถํ์ด ํ์ํฉ๋๋ค.
- ์ค์ OpenAI API ํค๊ฐ ํ์ํ๋ฉฐ, ๊ณผ๊ธ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
docker buildx build -t ghcr.io/paran-code/reborn:dev . --push