주간 활동 분류모델을 부르는 일보다 그 바깥을 막는 일이 대부분이었다
구분
CASE 05 · AI 설계
AI 설계 · Workers AI
상태
운영 중 · 측정됨
2026
역할
설계 · 판정 · 운영
코드는 AI
분야
AI + 엔지니어링
LLM · 비용 상한 · 출력 검증
CASE-05AI
주 1회
사용자당 추론 상한 · 성공한 행 기준
개요
주간 활동 분류
주간 리포트에서 일정을 카테고리로 자동 분류하는 기능을 붙였습니다. LLM 호출은 사용량에 비례해 비용이 붙고 모델이 내놓은 값을 그대로 DB에 쓰면 지어낸 값이 데이터를 오염시킵니다. 프롬프트를 잘 쓰는 것만으로는 둘 다 막을 수 없었습니다.
01
설계
호출 바깥에 경계를 다섯 겹 두었습니다.
비용 상한을 쿼리 조건에 내장. 분류가 비어 있는 행만 추론 대상으로 삼습니다. 분류된 행은 다시 추론할 경로가 없어, 사용자당 주 1회라는 상한이 규칙 없이도 구조로 성립합니다
빠진 행도 채운다. 응답에 없는 행을 미분류로 남기면 리포트를 열 때마다 그 행만 재추론해 위 상한이 샙니다. 파싱에 성공하면 누락분을
기타로 채웁니다출력을 신뢰하지 않는다. 화이트리스트 밖의 분류는
기타로 강제하고 요청하지 않은 id는 폐기합니다. 프롬프트 인젝션이 성공해도 영향 반경은 본인 행 1건입니다출력 토큰을 입력으로 역산. 기본
max_tokens가 256인데 항목당 5~8토큰이라 30~40행에서 응답이 잘립니다. 상한을 올리고 입력 행 수에도 상한을 걸었습니다실패해도 화면은 뜬다. 500 대신 degraded 플래그를 내려 미분류 상태로 렌더합니다. degraded로 가는 경로가 넷(AI 미바인딩 · 추론 예외 · 파싱 실패 · 매치 0건)이라 각각 다른 로그를 남겨 운영에서 어느 층이 죽었는지 바로 읽힙니다. 초판은 셋이라 적었다가 설정 드리프트로 전량 degraded가 되는 표면 하나를 놓친 적이 있습니다. degraded 행은 다음 열람 때 재시도하므로, 주 1회 상한은 추론이 성공한 행에만 성립합니다
기록
잰 숫자와 출처
측정 · 쿼리 조건
주 1회사용자당 추론 상한 · 성공한 행 기준
측정 · 출력 검증
1행인젝션이 성공해도 영향 반경
측정 · 설계
5겹호출 바깥의 경계
측정 · 운영 로그
4degraded 경로 · 경로마다 다른 로그
결과
성공한 행에 한해 주 1회 추론 상한이 구조적으로 성립 · 인젝션 성공 시에도 영향 반경 1행 · 응답 절단 제거 · AI 장애가 리포트 장애로 번지지 않고 실패 층이 로그로 구분됨
배운 것
LLM을 붙이는 작업의 대부분은 프롬프트가 아니라 경계 설계였습니다. 비용·오염·절단·장애는 네 개 다 모델 호출 바깥에서 막아야 했고 그중 셋은 코드보다 쿼리 조건과 타입으로 막는 편이 확실했습니다.
