포트폴리오
AI / 엔지니어링 / 주간 활동 분류

주간 활동 분류모델을 부르는 일보다 그 바깥을 막는 일이 대부분이었다

구분

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을 붙이는 작업의 대부분은 프롬프트가 아니라 경계 설계였습니다. 비용·오염·절단·장애는 네 개 다 모델 호출 바깥에서 막아야 했고 그중 셋은 코드보다 쿼리 조건과 타입으로 막는 편이 확실했습니다.

연락
김성재 사진

함께 일할 팀을 찾고 있습니다

AI 엔지니어 · AX 엔지니어 정규직 포지션에 지원하고 있습니다. 편하게 메일 주세요.