๋ณด๋ด๊ธฐ ์ด๋ ค์ด ๋ฉ์์ง๋ฅผ ๋ ์์ฐ์ค๋ฝ๊ฒ ๋ค๋ฌ์ด์ฃผ๋ AI ๋ฉ์์ง ์ฝ์น ์น์ฑ
๋ยท์ ์ฐ, ๋ถํ, ๊ฑฐ์ , ์ฌ๊ณผ์ฒ๋ผ
๊ด๊ณ์ ์ํฅ์ ์ค ์ ์๋ ๋ฏผ๊ฐํ ๋ฉ์์ง๋ฅผ ๋จ์ ์์ฑ์ด ์๋๋ผ
์ํฉ๊ณผ ๊ฐ์ ์ ๊ณ ๋ คํ ํํ์ผ๋ก ๋ณด์กฐํ๊ธฐ ์ํด ๋ง๋ ํ๋ก์ ํธ์
๋๋ค.
์ฌ์ฉ์๊ฐ ์
๋ ฅํ ์ํฉ๊ณผ ๊ฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฉ์์ง ์ด์์ ์์ฑํ๊ณ ,
๋งํฌ ๊ฒ์ยท์คํด ๊ฐ๋ฅ์ฑยท์ถ์ฒ ํํ์ ํจ๊ป ์ ๊ณตํ ์ ์์ต๋๋ค.
๐ Live Demo
https://message-guard-phi.vercel.app/
๋ฉ์์ง ํ๋ ๋ณด๋ด๋ ๊ฒ๋ ์๊ฐ๋ณด๋ค ์ด๋ ต๋ค๊ณ ๋๊ผ์ต๋๋ค.
ํนํ:
- ๋/์ ์ฐ ์์ฒญ
- ๋ถํํ๊ธฐ
- ๊ฑฐ์ ํ๊ธฐ
- ์ฌ๊ณผํ๊ธฐ
๊ฐ์ ์ํฉ์์๋
โ๋๋ฌด ์ธ๊ฒ ๋ค๋ฆฌ๋ ๊ฑด ์๋๊น?โ โ์๋๊ฐ ๋ถ๋ด์ค๋ฝ๊ฒ ๋๋ผ์ง ์์๊น?โ
๋ฅผ ๊ณ ๋ฏผํ๊ฒ ๋ฉ๋๋ค.
๊ธฐ์กด AI ์ฑํ
์ ๋งค๋ฒ ์ํฉ์ ์ฒ์๋ถํฐ ์ค๋ช
ํด์ผ ํ๊ณ ,
ํน์ ์ํฉ(์ ์ฐ, ๋ถํ, ๊ฑฐ์ )์ ๋ง๋ ๋งํฌ ์กฐ์ ์ ๋ฒ๊ฑฐ๋กญ๋ค๊ณ ๋๊ผ์ต๋๋ค.
Message Guard๋ ๋ฏผ๊ฐํ ๋ฉ์์ง ์ํฉ์์:
์ํฉ ์
๋ ฅ
โ ๊ฐ์ ์ ํ
โ ๋ฉ์์ง ์ด์ ์์ฑ
โ ๋งํฌ ๊ฒ์
โ ์คํด ๊ฐ๋ฅ์ฑ ์ฒดํฌ๋ก ์ด์ด์ง๋ ๋ฉ์์ง ์ฝ์นญ ๊ฒฝํ ๋ฃจํ๋ฅผ ์ค๊ณํ์ต๋๋ค.
๋จ์ ๋ฌธ์ฅ ์์ฑ์ด ์๋๋ผ,
โ์ด ์ ๋ ๋งํฌ๋ฉด ๋ณด๋ด๋ ๋๊ฒ ๋คโ
๋ผ๋ ์ฌ๋ฆฌ์ ํ์ ์ ์ ๊ณตํ๋ ๊ฒ์ด ๋ชฉํ์์ต๋๋ค.
์ ๋ ฅํ ์ํฉ๊ณผ ๋ชฉ์ ์ ๋ง๋ ๋ฉ์์ง ์ด์์ ์ ๊ณตํฉ๋๋ค.
์:
- ๋ถ๋๋ฌ์ด ๋ฒ์
- ๋จํธํ ๋ฒ์
- ์งง๊ณ ์์ฐ์ค๋ฌ์ด ๋ฒ์
๋จ์ ๋ฌธ์ฅ ๋ณํ์ด ์๋๋ผ
์ํฉ๊ณผ ๊ฐ์ ์ ๋ฐ๋ฅธ ๋งํฌ ์ฐจ์ด๋ฅผ ๋ฐ์ํ๋๋ก ์ค๊ณํ์ต๋๋ค.
๊ฐ์ ์ํฉ์ด๋ผ๋ ๊ฐ์ ์ ๋ฐ๋ผ ํํ ๋ฐฉ์์ด ๋ฌ๋ผ์ง๋๋ค.
์:
- ๐ฅ ๋ฏธ์ํจ
- ๐ค ๋ต๋ตํจ
- ๐ ์ด์ํจ
- ๐ ํธ์ํจ
์์:
์ ์ฐ ์์ฒญ + ๋ฏธ์ํจ
โ ์กฐ์ฌ์ค๋ฝ๊ณ ์๊ณกํ ํํ
์ ์ฐ ์์ฒญ + ๋ต๋ตํจ
โ ๋ถ๋๋ฝ์ง๋ง ๋ถ๋ช
ํ ํํ์ฌ์ฉ์์ ๊ฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํํ ๊ฐ๋๋ฅผ ์กฐ์ ํฉ๋๋ค.
๋ ์ด์ผ๊ธฐ๋ ๊ด๊ณ๋ฅผ ์ด์ํ๊ฒ ๋ง๋ค ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ํ๋จํด
๋ณ๋ ์นดํ
๊ณ ๋ฆฌ๋ก ๊ฐํํ์ต๋๋ค.
์ง์ ์ํฉ:
- ๋ ๋ณด๋ด๋ฌ๋ผ๊ณ ํ๊ธฐ
- ์ ์ฐ ๋ฆฌ๋ง์ธ๋
- ์์ก์ด๋ผ ๋งํ๊ธฐ ์ ๋งคํจ
- ๊ณ์ ๋ฏธ๋ฃจ๋ ์ฌ๋
- ๋ชจ์/์ฌํ ์ ์ฐ
- ํ์ฌ/ํ ๋น์ฉ ์ ์ฐ
- ๋น๋ ค์ค ๋ ๋๋ ค๋ฐ๊ธฐ
์์ฑ๋ ๋ฉ์์ง์ ๋ํด:
- ์คํด ๊ฐ๋ฅ์ฑ
- ๋งํฌ ์จ๋
- ์กฐ์ฌํ๋ฉด ์ข์ ํํ
- ์ถ์ฒ ํ ์ค
๊ตฌ์กฐ์ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋จ์ โ๋ฌธ์ฅ ์ถ์ฒโ์ด ์๋๋ผ,
์ ์ด๋ฐ ํํ์ด ๋ ์ ์ ํ์ง
์ดํดํ ์ ์๋๋ก ์ค๊ณํ์ต๋๋ค.
๋ฌด๋ฃ AI ๋ชจ๋ธ ํน์ฑ์ ์๋ต ์คํจ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํ์ต๋๋ค.
AI ์๋ต ์คํจ ๋๋ ํ์ง ์ ํ ์:
์์ ๊ฒฐ๊ณผ(fallback)๋ฅผ ์๋ ์ ๊ณต
ํ๋๋ก ์ค๊ณํ์ต๋๋ค.
์ฌ์ฉ์๊ฐ:
โ๋ฒํผ ๋๋ ๋๋ฐ ์๋ฌด ๋ฐ์ ์์โ
์ ๊ฒฝํํ์ง ์๋๋ก ์ฒ๋ฆฌํ์ต๋๋ค.
- React
- TypeScript
- Vite
- Tailwind CSS
- Groq API
- Llama 3.3 70B
- Structured JSON Response
- Emotion-based Prompt Design
- Tone Review Logic
- Vercel
- GitHub
- lucide-react
User Input
โ
Emotion / Situation Selection
โ
Prompt Generation
โ
Groq API
โ
JSON Response
โ
Response Validation
โ
UI RenderingFallback ํ๋ฆ:
AI Response Failure
โ
Fallback Result
โ
Service Continue- ๋ฌด๋ฃ AI ํ๊ฒฝ ๊ธฐ๋ฐ MVP ์ค๊ณ
- ๊ฐ์ ๊ธฐ๋ฐ ๋งํฌ ์กฐ์
- ๋/์ ์ฐ ์ํฉ ํนํ
- ๋ฌด๋ฃ ๋ชจ๋ธ ์คํจ ๋์ fallback UX
- Vercel ๋ฌด๋ฃ ๋ฐฐํฌ
- 1~2์ฃผ MVP ๋ฒ์ ์ค๊ณ
- ์ถํ AI ๋ชจ๋ธ ๊ต์ฒด ๊ฐ๋ฅํ ๊ตฌ์กฐ ์ค๊ณ
์ด๊ธฐ์๋ OpenRouter ๋ฌด๋ฃ ๋ชจ๋ธ์ ์ฌ์ฉํ์ต๋๋ค.
ํ์ง๋ง:
- 404 (์ง์ ์ข ๋ฃ ๋ชจ๋ธ)
- 429 (Rate Limit)
- ์ธ๊ตญ์ด ํผํฉ ์๋ต
- ํ์ง ํธ์ฐจ
๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ฌด๋ฃ ํ๊ฒฝ์ ์ ์งํ๋ฉด์๋
๋ ์์ ์ ์ธ ํ๊ตญ์ด ์๋ต ํ์ง์ ์ ๊ณตํ๊ธฐ ์ํด:
Groq ๊ธฐ๋ฐ ๋ชจ๋ธ
๋ก ์ ํํ์ต๋๋ค.
๋ฌด๋ฃ AI ๋ชจ๋ธ์:
- ์๋ต ์คํจ
- Rate Limit
- ํ์ง ์ ํ
๋ฌธ์ ๊ฐ ์์ฃผ ๋ฐ์ํ์ต๋๋ค.
์๋น์ค๊ฐ ๋ฉ์ถ๋ ๊ฒฝํ์ ๋ฐฉ์งํ๊ธฐ ์ํด:
AI ์คํจ
โ ์์ ๊ฒฐ๊ณผ ์ ๊ณต๊ตฌ์กฐ๋ฅผ ์ค๊ณํ์ต๋๋ค.
LLM ์๋ต์ ํญ์ ์ผ์ ํ ํ์์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
UI๋ฅผ ์์ ์ ์ผ๋ก ๋ ๋๋งํ๊ธฐ ์ํด:
- JSON ํ์ฑ
- ์๋ต ๊ตฌ์กฐ ๊ฒ์ฆ
- ์์ธ ์ฒ๋ฆฌ
๊ตฌ์กฐ๋ฅผ ์ ์ฉํ์ต๋๋ค.
์ถํ ๋ชจ๋ธ ๋ณ๊ฒฝ ์์๋:
UI ์์ ์์ด ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
ํ๋๋ก ์ค๊ณํ์ต๋๋ค.
๋ฌด๋ฃ ๋ชจ๋ธ ์ฌ์ฉ ์:
- 429 Rate Limit
- ์ธ๊ตญ์ด ํผํฉ ์๋ต
- ํ๊ตญ์ด ํ์ง ์ ํ
๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ฌด๋ฃ ๋ชจ๋ธ ํน์ฑ์
๊ฐ์ฉ์ฑ๊ณผ ํ์ง ์์ ์ฑ์ด ๋ฎ์์ต๋๋ค.
OpenRouter โ Groq API ์ ํ
fallback ๊ฒฐ๊ณผ ๊ตฌ์กฐ ์ถ๊ฐ
AI API๋ ํญ์ ์ฑ๊ณตํ๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ ๋๋ฉฐ,
์คํจ ์ํฉ๊น์ง ํฌํจํด UX๋ฅผ ์ค๊ณํด์ผ ํ๋ค๋ ์ ์ ๊ฒฝํํ์ต๋๋ค.
AI ์๋ต์ด Markdown ๋๋ ์ค๋ช ํ ์คํธ๋ฅผ ํฌํจํด JSON ํ์ฑ ์ค๋ฅ ๋ฐ์
LLM ์๋ต ํ์์ด ํญ์ ์ผ์ ํ์ง ์์์ต๋๋ค.
์๋ต์์ JSON ๋ถ๋ถ๋ง ์์ ํ๊ฒ ์ถ์ถํ๋ ๋ก์ง ๊ตฌํ
AI ์๋ต์ ํญ์ ์์ธ ์ํฉ์ ๊ณ ๋ คํ ํ์ฑ ๊ตฌ์กฐ๊ฐ ํ์ํจ์ ์ดํดํ์ต๋๋ค.
๋ก์ปฌ์์๋ ๋์ํ์ง๋ง ๋ฐฐํฌ ํ AI ๊ธฐ๋ฅ ๋ฏธ๋์
Vercel์ ๋ก์ปฌ .env ํ์ผ์ ์๋ ๋ฐฐํฌ ํ๊ฒฝ๋ณ์์ ๋ฑ๋กํ์ง ์์ต๋๋ค.
Environment Variables์:
VITE_GROQ_API_KEY๋ฑ๋ก
Frontend ๋ฐฐํฌ ์ ํ๊ฒฝ๋ณ์ ๊ด๋ฆฌ๊ฐ ์๋น์ค ๋์์ ์ง์ ์ ์ธ ์ํฅ์ ์ค๋ค๋ ์ ์ ๊ฒฝํํ์ต๋๋ค.
npm installnpm run devnpm run buildnpm run lint- ์ต๊ทผ ๊ฒ์ ๋ด์ญ ์ ์ฅ
- ๋ฉ์์ง ํ์คํ ๋ฆฌ
- ์๋ ๊ด๊ณ ๊ธฐ๋ฐ ๋งํฌ ์ถ์ฒ
- ๋ฉ์์ง ๊ธธ์ด ์ต์
- AI ํ์ง ๊ฐ์
- ๋ชจ๋ฐ์ผ UX ์ต์ ํ
Dasom Kim
GitHub: https://github.com/dskim21