From 7e96dd4b9105c9e8e3d79c1d3d31cfe4c2459b8f Mon Sep 17 00:00:00 2001 From: jmj Date: Sun, 30 Aug 2026 10:17:53 +0900 Subject: [PATCH] =?UTF-8?q?fix(ai):=20flash=20=EB=AA=A8=EB=8D=B8=20?= =?UTF-8?q?=EA=B8=B0=EB=B3=B8=EA=B0=92=EC=9D=84=20=EA=B2=8C=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8=EC=9B=A8=EC=9D=B4=EC=97=90=20=EC=8B=A4=EC=9E=AC?= =?UTF-8?q?=ED=95=98=EB=8A=94=20gemini-3.5-flash-lite=20=EB=A1=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `gemini-3.1-flash-lite` 는 Mindlogic 게이트웨이 카탈로그에 없어(직접 호출 시 404 "Model not found") Flash 를 쓰는 모든 경로 — 약점추적 꼬리질문, 4축 실시간 채점, 답변별 코칭, 첫인상·인성 평가위원 — 이 프로덕션에서 매번 실패했다. Pro (`gemini-3.1-pro-preview`)는 카탈로그에 있어 질문 풀·피드백 패널은 정상이었다. 게이트웨이가 실제 서빙하는 flash-lite 티어(`gemini-3.5-flash-lite`)로 기본값을 교체. 저지연·저비용 의도 유지. prod `.env` 는 별도로 이미 교체·검증했고, 배포가 `.env` 를 보존하므로 이 커밋은 신규/초기화 배포의 회귀를 막는 목적. - settings.py / .env.example / ai/.env.example / docker-compose.yml fallback - 문서(environment.md, ai/CLAUDE.md, observability.md 예시, api-conventions.md 예시)의 없는 모델명(gemini-3.1-flash·flash-lite) 정리 --- .env.example | 2 +- ai/.env.example | 2 +- ai/CLAUDE.md | 4 ++-- ai/src/ai_server/config/settings.py | 2 +- docker-compose.yml | 2 +- docs/api-conventions.md | 2 +- docs/environment.md | 2 +- docs/observability.md | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index 8245767..98835f9 100644 --- a/.env.example +++ b/.env.example @@ -28,7 +28,7 @@ LLM_API_KEY= LLM_BASE_URL=https://factchat-cloud.mindlogic.ai/v1/gateway LLM_PRO_MODEL=gemini-3.1-pro-preview LLM_PRO_TIMEOUT_SEC=30.0 -LLM_FLASH_MODEL=gemini-3.1-flash-lite +LLM_FLASH_MODEL=gemini-3.5-flash-lite LLM_FLASH_TEMPERATURE=0.4 LLM_FLASH_MAX_TOKENS=512 LLM_FLASH_TIMEOUT_SEC=10.0 diff --git a/ai/.env.example b/ai/.env.example index 2254501..3c66831 100644 --- a/ai/.env.example +++ b/ai/.env.example @@ -19,7 +19,7 @@ LLM_BASE_URL=https://factchat-cloud.mindlogic.ai/v1/gateway LLM_PRO_MODEL=gemini-3.1-pro-preview LLM_PRO_TEMPERATURE=0.2 LLM_PRO_TIMEOUT_SEC=30.0 -LLM_FLASH_MODEL=gemini-3.1-flash-lite +LLM_FLASH_MODEL=gemini-3.5-flash-lite LLM_FLASH_TEMPERATURE=0.4 LLM_FLASH_MAX_TOKENS=512 LLM_FLASH_TIMEOUT_SEC=10.0 diff --git a/ai/CLAUDE.md b/ai/CLAUDE.md index 432a8ca..9ae395a 100644 --- a/ai/CLAUDE.md +++ b/ai/CLAUDE.md @@ -131,7 +131,7 @@ async def consume_resume_analyze(message: AbstractIncomingMessage) -> None: | 시점 | 모델 (env override 가능) | 용도 | |------|--------------------------|------| | 세션 시작 | Pro (`gemini-3.1-pro-preview` 기본) | 질문 풀 (품질) | -| 세션 중 | Flash (`gemini-3.1-flash-lite` 기본) | 꼬리질문 (저지연 < 3s) | +| 세션 중 | Flash (`gemini-3.5-flash-lite` 기본) | 꼬리질문 (저지연 < 3s) | | 분석 (이력서/레포) | Pro | 마크다운 구조화 | 설정은 `settings.py` + 환경변수로 모델명 주입 (코드에 하드코딩 금지). @@ -223,7 +223,7 @@ class Settings(BaseSettings): openai_api_key: str = "" google_api_key: str = "" llm_pro_model: str = "gemini-3.1-pro-preview" - llm_flash_model: str = "gemini-3.1-flash-lite" + llm_flash_model: str = "gemini-3.5-flash-lite" embedding_model: str = "gemini-embedding-001" embedding_dim: int = 1536 core_server_base_url: str = "http://core:8080" diff --git a/ai/src/ai_server/config/settings.py b/ai/src/ai_server/config/settings.py index f85441f..edf148c 100644 --- a/ai/src/ai_server/config/settings.py +++ b/ai/src/ai_server/config/settings.py @@ -110,7 +110,7 @@ class Settings(BaseSettings): llm_pro_timeout_sec: float = 30.0 # 꼬리질문용 Flash 모델 (저지연 < 3s) - llm_flash_model: str = "gemini-3.1-flash-lite" + llm_flash_model: str = "gemini-3.5-flash-lite" llm_flash_temperature: float = 0.4 llm_flash_max_tokens: int = 512 # Flash 는 저지연 요구사항이 있어 Pro 보다 짧게. diff --git a/docker-compose.yml b/docker-compose.yml index 9f54179..d842a1d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -87,7 +87,7 @@ services: LLM_API_KEY: ${LLM_API_KEY:-} LLM_BASE_URL: ${LLM_BASE_URL:-https://factchat-cloud.mindlogic.ai/v1/gateway} LLM_PRO_MODEL: ${LLM_PRO_MODEL:-gemini-3.1-pro-preview} - LLM_FLASH_MODEL: ${LLM_FLASH_MODEL:-gemini-3.1-flash-lite} + LLM_FLASH_MODEL: ${LLM_FLASH_MODEL:-gemini-3.5-flash-lite} LLM_FLASH_TEMPERATURE: ${LLM_FLASH_TEMPERATURE:-0.4} LLM_FLASH_MAX_TOKENS: ${LLM_FLASH_MAX_TOKENS:-512} STT_PROVIDER: ${STT_PROVIDER:-auto} diff --git a/docs/api-conventions.md b/docs/api-conventions.md index bc086c5..ade5b19 100644 --- a/docs/api-conventions.md +++ b/docs/api-conventions.md @@ -442,7 +442,7 @@ AI의 LLM 호출별 토큰·지연시간을 `ai_request_logs`에 기록 (US-30 "userId": 123, "sessionId": 99, "requestType": "generate.followup", - "modelName": "gemini-3.1-flash", + "modelName": "gemini-3.5-flash-lite", "inputTokens": 1820, "outputTokens": 210, "latencyMs": 1830, diff --git a/docs/environment.md b/docs/environment.md index e1c7458..459e5c5 100644 --- a/docs/environment.md +++ b/docs/environment.md @@ -106,7 +106,7 @@ LLM_BASE_URL=https://factchat-cloud.mindlogic.ai/v1/gateway LLM_PRO_MODEL=gemini-3.1-pro-preview LLM_PRO_TEMPERATURE=0.2 LLM_PRO_TIMEOUT_SEC=30.0 # 요청 타임아웃(초). 미설정 시 SDK 기본값까지 무기한 대기 위험 -LLM_FLASH_MODEL=gemini-3.1-flash-lite # 꼬리질문(US-19) 저지연 모델 +LLM_FLASH_MODEL=gemini-3.5-flash-lite # 꼬리질문(US-19) 저지연 모델 LLM_FLASH_TEMPERATURE=0.4 LLM_FLASH_MAX_TOKENS=512 LLM_FLASH_TIMEOUT_SEC=10.0 # Pro 보다 짧게 — 꼬리질문 저지연(<3s) 요구사항 diff --git a/docs/observability.md b/docs/observability.md index 7a5d047..0319d96 100644 --- a/docs/observability.md +++ b/docs/observability.md @@ -105,7 +105,7 @@ async def trace_middleware(request, call_next): ``` request_type 예: 'session.followup', 'resume.analyze' -model_name 예: 'gemini-3.1-pro', 'gemini-3.1-flash', 'whisper-1' +model_name 예: 'gemini-3.1-pro-preview', 'gemini-3.5-flash-lite', 'whisper-1' input_tokens 토큰 카운트 output_tokens latency_ms