o2o-triple-pick/docs/AI-PREDICTIONS.md

3.0 KiB

AI 예측 생성 — 3모델 (GPT · Claude · Gemini)

최종 갱신: 2026-06-10 KST 관련: lib/mockData.ts(FEATURED_PREDICTIONS), docs/BACKEND.md(자동화), .env.example

매일 KST 0시, 남은 경기를 GPT·Claude·Gemini 3개 모델로 예측 생성(immutable). 현재는 수동 주입, 추후 Cloud Functions 자동화.


1. 모델 ID (실측 확정 · 2026-06-10)

각 API의 GET /models 엔드포인트로 실제 사용 가능한 최신 ID를 확인해 고정. (추측 금지)

모델 최신 ID 호출 엔드포인트
GPT gpt-5.5 POST https://api.openai.com/v1/chat/completions
Claude claude-opus-4-8 POST https://api.anthropic.com/v1/messages (anthropic-version: 2023-06-01)
Gemini gemini-3.5-flash POST https://generativelanguage.googleapis.com/v1beta/models/{id}:generateContent?key=

키는 004. Dev/.env(저장소 밖, 시크릿). 저장소엔 .env.example의 빈 슬롯만.

2. ⚠️ 함정 / 운영 노트

  • Gemini는 generationConfig(responseMimeType·thinkingConfig) 주면 빈 응답 반환. → 평문 본문(contents만)으로 호출하고 응답 text에서 JSON 정규식 파싱할 것. thinking 모델이라 추론 토큰을 먼저 쓴다.
  • Anthropic 자동 호출엔 크레딧 필요: 현재 키는 credit balance too low. console.anthropic.com 결제 전까지 Claude는 수동 주입.
  • Python urllib는 macOS에서 SSL 인증서 실패 가능 → curl(시스템 인증서) 사용 권장.
  • 출력은 JSON 스키마로 강제: {winner, score_korea, score_czechia, confidence, reason}.

3. 체코전(한국 vs 체코) — 실제 출력 (2026-06-10)

lib/mockData.tsFEATURED_PREDICTIONS에 주입됨.

모델 결과 스코어(한:체) 확신 근거(KO)
GPT (gpt-5.5) 무승부 1 : 1 54% 한국 역습과 체코 제공권이 팽팽
Claude (claude-opus-4-8) 한국 승 2 : 1 57% 손흥민·이강인 측면 창의성이 체코 블록을 연다
Gemini (gemini-3.5-flash) 한국 승 2 : 1 55% 이강인·손흥민 공격력, 체코 수비에 근소 우세

→ "AI가 갈렸다": GPT 무승부 vs Gemini·Claude 한국 2-1.

4. 호출 프롬프트 (참고)

2026년 6월 한국(Korea Republic) vs 체코(Czechia) 축구 경기를 최근 전력 기반으로 예측해줘.
다른 설명 없이 이 JSON 한 줄만:
{"winner":"한국|무승부|체코","score_korea":정수,"score_czechia":정수,"confidence":0-100,"reason":"한국어 한 줄"}
  • winner는 teamA(한국)=score_korea, teamB(체코)=score_czechia 기준으로 매핑.
  • 랜딩 타입 변환: 한국 승=TEAM_A_WIN / 무승부=DRAW / 체코 승=TEAM_B_WIN.

5. 다음 단계

  • 나머지 Group A 5경기도 동일 호출로 주입
  • Cloud Functions로 매일 KST 0시 자동 생성 → Firestore 저장(immutable), 탈락팀 제외 (docs/BACKEND.md)
  • Anthropic 크레딧 충전 후 Claude 자동 호출 포함