AI 해설·챗봇 모델 전환 · 2026-07-31
앱을 배포하지 않고 워커 수정 + RC 설정만으로 AI 해설보기를 gpt-4.1-mini에서 gpt-5.6-luna로 전환하는 방법. 워커는 수정·배포 완료, vnkr 100항목 비교 검증까지 끝난 상태의 기록이다.
워커(all-ai-proxy, 버전 80aead51)가 구클라이언트 요청을 5.6이 받는 형태로
고쳐 쓰도록 수정·배포 완료. 품질·속도에 더해 2026-07-30 OpenAI 단가 인하(luna 80%↓,
$0.20/$1.20 per M)로 비용까지 역전됐다 — 실측 토큰 기준 회당 $0.00079로
4.1-mini($0.00109)보다 28% 저렴. 각 앱은 아래 전환 절차의 RC 작업만 하면 된다.
vnkr 단어 100개, 실서비스 프롬프트, 구클라이언트 형태 요청으로 워커 경로 실전 검증. 전체 문답 원문은 비교 리포트 참고.
| 기준 | gpt-4.1-mini | gpt-5.6-luna |
|---|---|---|
| 성공 / incomplete | 100 / 0 | 100 / 0 |
| 블라인드 저지 종합 | 0승 | 100승 |
| 총 소요 중앙값 | 6.5s | 4.4s |
| 해설을 베트남어로만 작성한 결함 | 7건 | 0건 |
| 마크다운 혼입(앱 노출 결함) | 0건 | 0건 (서식 규칙 반영) |
| 허용 외 태그·깨진 태그(앱 노출 결함) | 10건(꺾쇠 발음표기) | 0건 (서식 규칙 반영) |
| 단가 ($/M, 입력/출력) | 0.40 / 1.60 | 0.20 / 1.20 |
| 회당 비용 (실측 토큰) | $0.00109 | $0.00079 (-28%) |
luna는 프롬프트에 서식 규칙이 없으면 응답의 48%에 마크다운 **볼드**를, 7%에
<i> 같은 허용 외 태그를 섞는다(앱은 <b>/<fg>만
파싱하므로 전부 리터럴 노출). 아래 화이트리스트 규칙을 넣으면 두 유형 모두 0건이 된다 —
100건 전수 재테스트로 확인 완료. 참고로 4.1-mini도 발음을 꺾쇠로 감싸는(<깜 언>)
자체 결함이 10건 있었다(전환하면 자연 해소).
Formatting rule: The ONLY allowed tags are <b>...</b> and <fg:#4ED3F6>...</fg>, used
exactly as in the example output. Never use markdown formatting such as **bold**,
*italic*, or # headings. Never use any other HTML-like tags such as <i>, <em>,
<strong>, <u>, <fs>, or color codes in any other form. Write every pronunciation
only inside square brackets [ ], never inside angle brackets < >.
# 프롬프트의 "The structure should be as follows:" 바로 뒤에 삽입
앱 하나를 luna로 전환할 때마다 아래 순서대로. 앱 배포는 없다.
워커 키맵에 앱별 openai_5_key 등록
Firebase RC app_key_map(프로젝트 all-ai-keys-1a099, 매 정시 KV 동기화).
5.x는 이 키만 쓰고 4.x 키로 폴백하지 않으므로 없으면 503.
현재 등록: jpkr / ahanews / tmtm뿐 — vnkr 미등록.
RC 프롬프트에 서식 규칙 추가
위 02의 Formatting rule 한 줄. vnkr 단어 해설용 적용본:
~/Downloads/vnkr_step_word_prompt_luna.txt (RC JSON용 이스케이프본: _escaped.txt).
luna로 전환하는 다른 프롬프트(step_element/one/pattern/example/continue)에도 동일하게.
RC 값 변경 — gpt_prompt_{앱}_v2
gpt_model: "gpt-5.6-luna" · reasoning_effort: "none".
가능하면 RC 앱 버전 조건으로 Responses+워커 경로가 있는 버전에만 내리는 것을 권장.
RC gpt_endpoint_mode: "worker"
미설정이면 DIRECT 먼저 시도하는데 DIRECT 키로는 5.x가 안 돼서 매 요청 한 번씩 실패를 겪는다.
스모크 확인
RC 반영 후 앱(또는 curl)에서 해설 1건 요청 → 응답 정상, 워커 로그에서
proxy_key_selected의 keySource가 앱별 5키인지 확인.
구버전 분포 — RC는 앱 버전을 구분하지 않는다. Responses API 경로가 없는 아주 옛 버전(DIRECT 전용 등)은 전환 후 해설이 실패한다. RC 버전 조건으로 타게팅하거나 감수 여부를 결정할 것.
게이트 면제 범위 — 워커의 executionMode 게이트 면제는 gpt-5.6-luna 한 모델뿐이다.
다른 5.x 모델로 바꾸려면 워커의 GPT5_EXECUTION_MODE_EXEMPT_MODELS에 추가하고 재배포해야 한다.
체이닝 미적용 — previous_response_id는 클라이언트 구현이라 무배포 전환에서는
못 쓴다(매 턴 전체 히스토리 전송, 동작엔 지장 없음). 클라이언트 대응은 test/gpt5_chat
브랜치에 구현돼 있으며 머지 후 배포되면 자동으로 활용된다.
품질 판정 편향 — 100쌍 비교의 저지가 luna 자신이라 자기편향 가능성이 있다 (블라인드·순서 랜덤화로 완화, 형식 지표는 규칙 기반이라 무관). 수치는 참고치로 볼 것.