← Mealplanning 페이지로

팀 프로젝트에서 작성한 당시 기록을 바탕으로 한 공개용 정제 사본입니다. 원본 문서 · 챗 refine 대규모 계측  |  작성 시점 · 2026-07-29
계정·내부 주소·팀 내부 식별정보는 공개용으로 정리했으며, 공개된 측정값과 기술적 판단의 의미는 원본과 같습니다.

왜 쟀나

30건 규모의 스위트로는 잡히지 않는 문제가 있었습니다. 특히 재료가 많은 답변에서 품목이 잘리거나 금액이 빠지는 경우입니다. 규모를 키워 튜닝 전후를 같은 조건으로 비교하려고 대량 계측을 돌렸습니다.

무엇이 나왔나

말투·난이도·품목 수를 조합해 1,138건을 만들고 튜닝 전후로 두 번, 총 2,276회를 호출했습니다(생성은 seed 고정).

실제 서비스가 다듬는 경로에서 치명 결함이 88건에서 21건으로 줄었습니다. 다만 같은 변경에서 금액 손실은 26건에서 31건으로 늘었고 재료비 카테고리 통과율은 떨어졌습니다. 1차 계측에서는 채점기 자체의 오탐도 함께 드러났습니다.

무엇을 얻고 무엇을 포기했나

다른 실험과 구분

이 문서는 2,276회 대량 비교입니다. 별도로 진행한 9회차 반복 검증(회차당 30건 · 270 호출)과는 다른 실험이며 합산하지 않습니다.

아래부터 당시 작성한 기록을 공개용으로 정제한 전문입니다.

챗 refine 대규모 계측 — 1,138건 × 2라운드

서비스에 맞게 튜닝하기 위해 다양한 질문으로 허점을 뽑아낸다 · 건우(AI) · 2026-07-28

대상 apac.amazon.nova-micro-v1:0(서울) · 총 2,276 호출(기준 1,138 + 튜닝 후 1,138)

질문 수
1,138
10개 카테고리 · 말투 8변형
프로덕션 경로 치명결함
12.2→2.9%
재료추천·예산추천·지식경계 720건
이름 누락
87→21
최대 결함 · 76% 감소
추가 비용
<0.01원
입력 997→1,676토큰/콜

결과 요약

지표튜닝 전튜닝 후변화
치명 결함(금액 손실+이름 누락)113건52건-61
— 이름 누락87건21건-66
— 금액 손실26건31건+5
메타숫자 손실(경미)62건57건-5
프로덕션 경로 치명결함88건21건-67

1. 어떤 질문들을 던졌나

실제 TemplateGenerator 출력형식을 그대로 쓰고, 말투·난이도·품목 수를 조합해 1,138건을 결정적 생성(seed 고정)했다.

카테고리건수내용프로덕션 refine
재료추천260재료 1~3개로 요리 추천 — 근거에 요리 1~6개✅ refine 대상
예산추천260예산 금액으로 추천 — 근거에 요리+가격 1~5쌍✅ refine 대상
지식경계200상세(양념비율·조리시간 등)를 요구하나 근거엔 이름만✅ refine 대상
가격조회90품목 가격 — 2개 소스·할인율 포함⚪ refine 우회
영양조회90영양성분 — 수치 6개(kcal·탄단지·당·나트륨)⚪ refine 우회
재료비90레시피 재료비 — 재료 3~6개 목록 + 합계⚪ refine 우회
외부링크40티어2 외부 레시피 안내(URL 텍스트 노출 금지)⚪ refine 우회
제안형30표준품목명 제안⚪ refine 우회
예산미달30예산에 맞는 요리 없음 안내⚪ refine 우회
거절48근거 없음(오프토픽·인젝션·쓰레기 입력)⚪ refine 우회

말투 변형(같은 의도를 8가지로): 기본 · 존댓말 · ?/!! · 공백 제거("연근랑계란로뭐해먹지") · "혹시~" · ㅠㅠ · 이모지 😀
금액 표기 변형: 20,000원 · 20000원 · 2만원 · 만이천원 · 만오천원 · 8천원

📋 카테고리별 실제 질문·근거 예시
카테고리질문근거(template 출력)
재료추천시금치로 뭐 해먹지 😀'오징어볶음', '고등어조림' 같은 요리는 어때요?
재료추천돼지고기랑시금치로뭐해먹지'삼계탕', '오징어볶음', '미역국', '무생채', '찜닭' 같은 요리는 어때요?
재료추천오징어로 뭐 해먹지'감자채볶음', '찜닭' 같은 요리는 어때요?
예산추천25000원으로 뭐 해먹지 ㅠㅠ25000원으로 만들 수 있는 요리예요! '비빔밥'(약 8,400원), '알탕'(약 13,900원), '육개장'(약 17,200원), '버섯전골'(약 23,100원) 어때요?
예산추천20,000원으로 뭐 해먹지20000원으로 만들 수 있는 요리예요! '콩나물무침'(약 5,100원), '콩나물국'(약 5,500원), '감바스'(약 6,500원), '감자채볶음'(약 11,800원), '찜닭'(약 12,200원) 어때요?
예산추천6,000원으로 뭐 해먹지!!6000원으로 만들 수 있는 요리예요! '감자채볶음'(약 3,700원), '볶음밥'(약 4,900원) 어때요?
지식경계계란찜 재료 그램수까지 알려줘'계란찜' 같은 요리는 어때요?
지식경계된장찌개 양념 비율 정확히 알려줘'된장찌개' 같은 요리는 어때요?
지식경계제육볶음 보관은 어떻게 해'제육볶음' 같은 요리는 어때요?
가격조회마늘 가격 알려줘?마늘 (1단) 가격은? · 컬리마켓 기준 6,400원 · 오아시스마켓 기준 5,300원 (정가 7,900원 · 33%↓) 현재 오아시스마켓이 가장 저렴해요!
가격조회토마토 가격 알려줘토마토 (30구) 가격은? · 컬리마켓 기준 9,900원 · 오아시스마켓 기준 8,200원 (정가 10,700원 · 23%↓) 현재 오아시스마켓이 가장 저렴해요!
가격조회오징어 가격 알려주세요오징어 (500g) 가격은? · 컬리마켓 기준 6,700원 · 오아시스마켓 기준 5,200원 (정가 8,300원 · 37%↓) 현재 오아시스마켓이 가장 저렴해요!
영양조회상추 영양성분 알려줘상추 영양성분은? · 열량 311kcal · 탄수화물 36.9g · 단백질 8.6g · 지방 7.5g · 당류 14.7g · 나트륨 363mg
영양조회계란 영양성분 알려줘계란 영양성분은? · 열량 305kcal · 탄수화물 30.2g · 단백질 2.0g · 지방 9.7g · 당류 10.3g · 나트륨 394mg
영양조회양파영양성분알려줘양파 영양성분은? · 열량 120kcal · 탄수화물 3.7g · 단백질 17.9g · 지방 26.5g · 당류 4.0g · 나트륨 285mg
재료비닭강정 재료비 얼마나 들어'닭강정'(3인분) 재료비는 약 24,600원이에요. · 애호박 6,300원 · 우엉 2,900원 · 대파 4,100원 (팩값) · 깻잎 7,700원 · 양배추 3,600원 (재료 5개 · 소금·양념 등 상비 제외 · 레시피 용량 반영)
재료비오므라이스 재료비 얼마나 들어'오므라이스'(2인분) 재료비는 약 28,900원이에요. · 목살 4,800원 · 팽이버섯 5,700원 · 감자 1,900원 (팩값) · 브로콜리 4,200원 · 고구마 6,900원 · 파프리카 5,400원 (팩값) (재료 6개 · 소금·양념 등 상비 제외 · 레시피 용량 반영)
재료비콩나물무침 재료비 얼마나 들어'콩나물무침'(3인분) 재료비는 약 22,700원이에요. · 대파 1,100원 · 연근 7,400원 · 감자 6,700원 (팩값) · 새우 4,000원 · 양배추 3,500원 (재료 5개 · 소금·양념 등 상비 제외 · 레시피 용량 반영)
외부링크감바스 레시피 있어?우리 서비스엔 아직 없지만, 다른 레시피 서비스에서 '감바스' 레시피를 찾았어요! 아래 버튼으로 확인해보세요.
외부링크카레 레시피 있어?우리 서비스엔 아직 없지만, 다른 레시피 서비스에서 '카레' 레시피를 찾았어요! 아래 버튼으로 확인해보세요.
외부링크감자채볶음 레시피 있어?우리 서비스엔 아직 없지만, 다른 레시피 서비스에서 '감자채볶음' 레시피를 찾았어요! 아래 버튼으로 확인해보세요.
제안형참돔로 뭐 만들지찾으시는 레시피를 바로 찾지 못했어요. 대신 '김치'·'고등어' 요리를 찾아드릴까요?
제안형참돔로 뭐 만들지찾으시는 레시피를 바로 찾지 못했어요. 대신 '버섯'·'브로콜리' 요리를 찾아드릴까요?
제안형흑돼지로 뭐 만들지찾으시는 레시피를 바로 찾지 못했어요. 대신 '계란'·'삼겹살' 요리를 찾아드릴까요?
예산미달2000원으로 뭐 먹지2,000원 예산에 맞는 요리를 아직 못 찾았어요. 예산을 조금 늘려보실래요?
예산미달3천원으로 뭐 먹지3,000원 예산에 맞는 요리를 아직 못 찾았어요. 예산을 조금 늘려보실래요?
예산미달3000원으로 뭐 먹지3,000원 예산에 맞는 요리를 아직 못 찾았어요. 예산을 조금 늘려보실래요?
거절오늘 날씨 어때모르겠어요 — 관련 정보를 찾지 못했습니다.
거절오늘 날씨 어때모르겠어요 — 관련 정보를 찾지 못했습니다.
거절오늘 날씨 어때모르겠어요 — 관련 정보를 찾지 못했습니다.

2. 1차 계측에서 드러난 허점

허점건수심각도실제 내용
이름 누락87🔴 치명근거의 요리 6개 중 1개만 언급하는 등 요약해버림
금액 손실26🔴 치명재료 목록 전체를 "앱에서 확인하세요"로 대체
메타숫자 손실62🟡 경미(재료 5개 …) 개수 표기만 빠짐 — 금액은 보존
인프라(스로틀)4⚪ 무관벤치 병렬 12로 인한 ThrottlingException — 모델 결함 아님

가장 심각했던 것 — 다품목에서 이름을 잘라먹음

누락된 요리언급된 요리
3개 중 0개
13건
4개 중 1개
12건
3개 중 1개
12건
6개 중 1개
11건

버그성 동작 — 질문 텍스트를 요리 이름으로 인용

Q: 연근랑계란로뭐해먹지          (공백 없는 입력)
근거: '새우튀김', '닭볶음탕' 같은 요리는 어때요?
출력: '연근랑계란' 같은 요리는 어때요?   ← 질문을 요리명처럼 인용

작은따옴표를 근거의 요리 이름이 아닌 질문 텍스트에 붙이는 동작이 11건. 사용자에겐 존재하지 않는 요리를 추천하는 것처럼 보인다.

채점기 자체의 오탐도 발견

초기 채점은 num_drop 91건을 보고했으나 분해해보니 대부분 실제 손실이 아니었다(재료 5개 …)개수 표기가 빠진 것(금액은 100% 보존), 근거 20000 → 출력 2만원 표기 변환. → 금액 손실과 메타 손실을 분리하는 채점기로 고쳐 재집계했다. 이 분리가 없었으면 재료비 카테고리를 과잉 진단할 뻔했다.

3. 무엇을 어떻게 고쳤나 (튜닝)

허점추가한 규칙
이름 누락근거의 작은따옴표 요리가 N개면 답변에도 N개 전부 — 좋은 예/나쁜 예 few-shot 동반
질문 에코작은따옴표는 근거의 요리 이름 전용 — 질문 텍스트 인용 금지
금액 손실여러 줄 · 재료 금액 근거는 항목을 접지 말 것
📋 추가한 프롬프트 전문
[요리 이름 전량 나열 — 가장 흔한 실수]
근거에 작은따옴표(')로 묶인 요리 이름이 N개면 **답변에도 반드시 N개가 모두** 나와야 한다. 개수를 줄이거나 대표 하나만 고르지 마라.
좋은 예)
  [근거] '탕수육', '애호박전', '무생채', '알탕', '카레', '삼계탕' 같은 요리는 어때요?
  [답변] '탕수육', '애호박전', '무생채', '알탕', '카레', '삼계탕' 어때요? 자세한 재료는 앱에서 확인해 보세요!
나쁜 예) '알탕' 같은 요리는 어때요? ← **6개 중 1개만 언급. 절대 금지.**

[작은따옴표는 요리 이름 전용]
질문에 나온 재료명·문장을 작은따옴표로 인용하지 마라. 작은따옴표는 **근거에 적힌 요리 이름에만** 쓴다.
나쁜 예) 질문 "연근이랑 계란으로 뭐 해먹지" → 답변 "'연근랑계란' 같은 요리는 어때요?" ← **질문을 요리 이름처럼 인용. 절대 금지.**

[여러 줄 근거는 항목을 접지 마라]
근거가 `· 재료 금액` 형태로 여러 줄이면 **모든 줄의 재료와 금액을 답변에 포함**하라. "자세한 내용은 앱에서 확인하세요"로 대체하고 항목을 생략하면 안 된다.

4. 튜닝 결과

카테고리튜닝 전튜닝 후변화
재료추천66.9%91.9%+25.0%p
예산추천99.2%100.0%+0.8%p
지식경계100.0%100.0%+0.0%p
가격조회100.0%98.9%-1.1%p
영양조회100.0%100.0%+0.0%p
재료비72.2%66.7%-5.6%p
외부링크100.0%100.0%+0.0%p
제안형100.0%100.0%+0.0%p
예산미달100.0%100.0%+0.0%p
거절100.0%100.0%+0.0%p
📋 개선 실사례 (튜닝 전/후 원문)
질문근거튜닝 전튜닝 후
연근랑계란로뭐해먹지'새우튀김', '닭볶음탕' 같은 요리는 어때요?'연근랑계란' 같은 요리는 어때요? 자세한 재료와 조리법은 앱에서 확인해 보세요!연근랑 계란으로 뭐 해먹지? '새우튀김', '닭볶음탕' 같은 요리는 어때요? 자세한 내용은 앱에서 확인하세요!
오징어로 뭐 해먹지 😀'탕수육', '애호박전', '무생채', '알탕', '카레', '삼계탕' 같은 요리는 어때요?'오징어'로 '알탕' 같은 요리는 어때요? 자세한 재료와 조리법은 앱에서 확인해 보세요!'탕수육', '애호박전', '무생채', '알탕', '카레', '삼계탕' 같은 요리는 어때요? 자세한 재료와 조리법은 앱에서 확인해 보세요!
감자랑 콩나물로 뭐 해먹지 😀'고등어구이', '잡채' 같은 요리는 어때요?감자랑 콩나물로 뭐 해먹지? 상세한 레시피는 앱에서 확인하도록 안내하세요!'고등어구이', '잡채' 같은 요리는 어때요? 자세한 재료와 조리법은 앱에서 확인해 보세요!
소고기랑 목살랑 시금치로 뭐 해먹지?'시금치나물', '카레' 같은 요리는 어때요?소고기와 목살, 시금치로 '시금치나물' 같은 요리는 어때요? 자세한 재료와 조리법은 앱에서 확인해 보세요!'시금치나물', '카레' 같은 요리는 어때요? 자세한 재료와 조리법은 앱에서 확인해 보세요!

5. 동시성 재측정 — 스로틀·지연의 진짜 원인

1차 계측에서 튜닝본의 스로틀·지연이 나빠 보였다. 이것이 프롬프트 길이 탓인지 벤치 동시성 탓인지 가리기 위해 동시성만 12 → 2로 낮춰 동일 1,138건을 재실행했다(두 프롬프트 순차 + 30초 쿨다운으로 상호 간섭 차단).

프롬프트동시성성공스로틀p50p90p95p99평균 입력토큰
base121134/11384718ms2565ms3415ms7636ms997
tuned121111/1138271881ms4802ms6603ms13124ms1,676
base21138/11380416ms539ms584ms1076ms997
tuned21138/11380410ms516ms554ms936ms1,677
동시성 2(실서비스 근사)동시성 12(벤치 부하)
base · c2
p95 584ms
tuned · c2
p95 554ms
base · c12
p95 3,415ms
tuned · c12
p95 6,603ms

결론 ① 스로틀은 전적으로 벤치 동시성 탓

동시성만 낮췄더니 스로틀이 base 4→0건, tuned 27→0건으로 양쪽 모두 0이 됐다. 프롬프트 길이와 무관하며, 1차의 "빈 응답 27건"은 모델 결함이 아니라 측정 하네스의 부하였다.

결론 ② 프롬프트가 길어져도 지연은 늘지 않는다

동시성 2에서 입력 토큰이 997 → 1,677 (+680) 늘었는데도 지연은 오히려 미세하게 낮았다 — p50 416→410ms(-6), p95 584→554ms(-30), p99 1076→936ms(-140). 입력 토큰 증가는 prefill이라 비용에만 영향을 주고, 지연을 지배하는 것은 출력 토큰 수(양쪽 ~90tok)이기 때문이다. 차이는 측정 오차 범위다.

결론 ③ 실서비스 기준 지연은 ~410ms

1차의 p50 1881ms는 동시성 12의 큐잉·재시도가 섞인 값이었다. 캡스톤 규모(DAU 500 = 하루 ~100 refine ≈ 시간당 4건)에서 동시성은 1~2가 현실적이므로 실서비스 기대 지연은 p50 410ms · p95 554ms · p99 936ms로 보는 것이 타당하다. 현행 Gemini의 챗 refine p50은 936ms였으므로 nova-micro가 약 2.3배 빠르다는 기존 결론이 재확인됐다.

6. Gemini 회귀 검증 — 튜닝 프롬프트를 공유해도 되는가

튜닝 프롬프트는 nova-micro에서만 측정했다. 그런데 _SYSTEM은 현재 generator/gemini.py에만 있고 현행 프로덕션(Gemini)이 쓰는 프롬프트다. 그대로 반영하면 검증 안 된 변경이 프로덕션에 들어가므로, 동일 1,138건·동일 채점기·동시성 2로 Gemini 회귀를 먼저 측정했다.

지표현행 프롬프트튜닝 프롬프트변화
치명 결함(금액+이름)5건0건-5
— 이름 누락0건0건+0
— 금액 손실5건0건-5
메타 손실(경미)49건55건+6
에러0건0건+0
프로덕션 경로(720건)0건0건±0
p50 지연929906-23
p95 지연1,2161,212-4
입력 토큰570931+361

판정: 개선(회귀 없음) → 공유 _SYSTEM에 반영 가능

결론: 튜닝 프롬프트는 두 모델 모두에서 개선 또는 무해하므로 generator/의 공유 _SYSTEM에 반영해도 안전하다. Bedrock 전용으로 이원화할 필요가 없다.

7. 정직한 한계 · 남은 문제

8. 다음 액션

  1. 검증 완료(§6) — 튜닝 프롬프트를 generator/gemini.py 공유 _SYSTEM에 반영(가드레일 수정·temp 0.0과 함께)
  2. 동시성 재측정완료(§5) — 실서비스 기대 지연 p50 410ms·p95 554ms 확보
  3. 계측(Prometheus) 배포 후 실트래픽 기준선과 대조
재현: pool_mass.py(풀 생성) · run_mass.py(병렬 실행) · score_mass.py(허점 분류) · final_mass.py(금액/메타 분리). 채점은 프로덕션 check_output_grounded import. 측정 2026-07-28.