ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toAI/ML
์๋ฌธ ์ฝ๊ธฐ
Gemini 1.5 Flash ๊ธฐ๋ฐ Zero-Backend AI ์์ธก ์์คํ ๊ตฌํ
๐ฎ Beat the Oracle: A FIFA World Cup 2026 AI Prediction Duel
AI ์์ฝ
Context
๊ฒ์ ์ผ์ ์ ์ฝ ์ฌํญ์ผ๋ก ์ธํด ๋น ๋ฅธ ๋ฐฐํฌ์ ํฌ๋ช ํ ์์ค ๊ณต๊ฐ๊ฐ ํ์ํ๋ ํ๊ฒฝ. ์๋ฒ ๋น์ฉ ์์ด ์ค์๊ฐ ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ AI ๊ฒฝ์ ์๋(Oracle)๋ฅผ ๊ตฌํํด์ผ ํ๋ ๊ธฐ์ ์ ๊ณผ์ ์ง๋ฉด.
Technical Solution
- Serverless Architecture: ๋จ์ผ HTML ํ์ผ ๋ด Vanilla JS์ CSS๋ง์ผ๋ก ๊ตฌ์ฑํ์ฌ ๋ฐฑ์๋ ์์ด ํด๋ผ์ด์ธํธ ์ฌ์ด๋์์ ๋ชจ๋ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ ์ค๊ณ
- LLM Integration: Gemini 1.5 Flash API๋ฅผ ํด๋ผ์ด์ธํธ์์ ์ง์ ํธ์ถํ์ฌ ์ฌ์ฉ์ API Key ๊ธฐ๋ฐ์ผ๋ก AI ๋ถ์ ๋ฐ JSON ์์ธก๊ฐ์ ์์ฑํ๋ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
- Data Pipeline: CORS ์ ์ฝ ํด๊ฒฐ์ ์ํด football-data.org ๋์ CORS-open ๊ตฌ์กฐ์ธ ESPN Public API๋ฅผ ์ฑํํ์ฌ ์ค์๊ฐ ํ ํผ(Form) ๋ฐ์ดํฐ ์์ง
- Deterministic Match Selection: xorshift32 ์๊ณ ๋ฆฌ์ฆ์ ํ์ฌ ๋ ์ง๋ฅผ Seed๋ก ์ ์ฉํ PRNG๋ฅผ ํตํด ์ ์ธ๊ณ ์ฌ์ฉ์๊ฐ ๋์ผํ ๊ฒฝ๊ธฐ ๋ฆฌ์คํธ๋ฅผ ๊ณต์ ํ๋ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ ๊ตฌํ
- State Management: LocalStorage๋ฅผ ํ์ฉํ ์์ธก๊ฐ ์ ์ฅ ๋ฐ ๋งค์น ์ํ(Finished/Upcoming)์ ๋ฐ๋ฅธ ์ฆ๊ฐ์ ์ ์ ์ฐ์ถ ๋ก์ง ์ ์ฉ
์ค์ฒ ํฌ์ธํธ
1. ์ธ๋ถ API ์ฑํ ์ CORS ์ ์ฑ ์ง์ ์ฌ๋ถ๋ฅผ ์ต์ฐ์ ์ผ๋ก ๊ฒํ ํ๋๊ฐ?
2. ์๋ฒ ์์ด ์ ์ญ ๋๊ธฐํ๊ฐ ํ์ํ ๋ ๋ ์ง ๊ธฐ๋ฐ Seed PRNG ํ์ฉ์ ๊ณ ๋ คํ๋๊ฐ?
3. LLM ์๋ต์ ์ผ๊ด์ฑ์ ์ํด JSON Mode์ ๊ฐ์ ๊ตฌ์กฐํ๋ ํ๋กฌํํธ๋ฅผ ์ค๊ณํ๋๊ฐ?
4. ์๋น์ค ๋น์ฉ ์ ๊ฐ์ ์ํด Client-side API Key ์ ๋ ฅ ๋ฐฉ์์ ๊ฒํ ํ๋๊ฐ?