← Mealplanning 페이지로
모델 별칭 드리프트와 버전 고정근거 기반 정리
출처 · Git 커밋 d6488da (팀 저장소)  |  시점 · 2026-07-22
지표 · 변경 파일 12 · 정렬한 컴포넌트 6
이 근거로 내린 판단 · 장애가 난 기능만이 아니라 재발 가능 지점 전부를 고정함

커밋에 남은 조치 범위

$ git show --stat d6488da

fix(gemini): 전 컴포넌트 -latest 별칭 → 3.5 버전 핀 고정(드리프트 근절)

벤치마크(docs/ocr-model-benchmark.md)가 선정한 실체는 3.5 세대이므로
`-latest` 별칭을 특정 버전으로 고정. 별칭 롤링으로 계약이 바뀌어
깨지는 일(OCR 400 사고)을 전 컴포넌트에서 원천 차단.

매핑: flash-lite-latest → gemini-3.5-flash-lite, flash-latest → gemini-3.5-flash
- chat(config·build_alias), ner(gemini_dict), video-recipe(extract·pipeline),
  chat-insights(reports), compose(chat·ocr GEMINI_MODEL 기본값)
- 운영 문서(ocr README/INTEGRATION, video README, reports README, 벤치마크) 갱신
- 2.5-*는 404(신규 사용자 불가·벤치 확인)라 핀 불가 → 3.5 채택
- 전 컴포넌트 thinking_budget=0은 OCR 한 곳뿐(PR 앞 커밋서 처리), 나머지 미사용

Co-Authored-By: (AI 협업 표기)

deploy/app/docker-compose.yml      | 4 ++--
docs/ocr-model-benchmark.md        | 7 ++++++-
ml/chat-insights/reports.py        | 2 +-
ml/ingredient-ner/gemini_dict.py   | 2 +-
ml/video-recipe/README.md          | 6 +++---
ml/video-recipe/extract.py         | 8 ++++----
ml/video-recipe/pipeline.py        | 4 ++--
reports/chat/README.md             | 2 +-
services/chat/app/config.py        | 5 ++++-
services/chat/tools/build_alias.py | 2 +-
services/ocr/INTEGRATION.md        | 2 +-
services/ocr/README.md             | 2 +-
12 files changed, 27 insertions(+), 19 deletions(-)

왜 한 곳만 고치지 않았나

별칭으로 부르던 외부 모델이 상위 세대로 바뀌면서 기존 파라미터가 거부돼 기능이 실패했습니다. 문제가 드러난 곳은 한 기능이었지만, 실측으로 고른 모델과 런타임이 실제로 부르는 모델이 어긋날 수 있는 지점은 여러 곳이었습니다. 그 지점을 전부 찾아 6개 컴포넌트를 특정 버전으로 고정했습니다. 벤치마크로 고른 모델이 아닌 것이 돌면 그 벤치마크 결과 자체가 무효가 되기 때문입니다.

실패를 처음 인지한 주체가 저라는 기록은 없습니다. 제가 한 것은 수정 범위를 어디까지로 할지 정한 판단이고, 변경 반영은 AI 협업으로 진행했습니다.