AI 기능에 사용량 제한을 설정해야 하는 이유
요약
AI 기능 개발 시 예상치 못한 비용 지출을 막기 위한 필수적인 방어 전략들을 제시합니다. 하드 스펜드 캡 설정, 토큰 단위의 일일 할당량 관리, 입력/출력 제한, IP 및 계정별 속도 제한 등 실질적이고 기본적인 조치들이 핵심입니다.
핵심 포인트
- 월별 하드 스펜드 캡과 소프트 알림을 반드시 설정하세요.
- 요청 건수 대신 사용자별 토큰 단위의 일일 할당량을 관리해야 합니다.
- 모든 호출에 최대 출력 토큰(max output tokens)을 설정하여 비용 폭증을 막으세요.
- IP 및 계정별 속도 제한(Rate limiting)으로 남용 시도를 방지하세요.
무료 플랜으로 제공되는 AI 기능의 무서운 점은 청구서가 사용자에게 가는 것이 아니라 당신에게 간다는 것입니다. 엔드포인트(endpoint)를 대상으로 루프 스크립트(loop script)를 돌리는 한 사람이 잠자는 동안 한 달 치 예산을 소진시킬 수 있으며, 그들은 해커라기보다는 단순히 모델 자체 비용을 지불하는 것보다 저렴하기 때문에 그러는 경우일 뿐입니다.
아래에 나오는 내용은 아무것도 기발한 것이 아닙니다. AI 기능이 출시되기 전에 제가 배포할 평범하지만 필수적인 내용들이며, 순서대로 정리했습니다.
1. 제공사 측에서 설정하는 하드 스펜드 캡(hard spend cap)을 너무 여유롭지 않게 설정하기
가장 먼저 할 일은 코드를 작성하기 전에: 제공사 대시보드에 들어가 월별 하드 제한(monthly hard limit)을 설정하고, 그 절반 지점에서 소프트 알림(soft alert)도 설정하는 것입니다. 대부분의 모델 제공사는 프로젝트별로 이것을 할 수 있게 해줍니다.
제 규칙은 캡이 나를 망가뜨릴 정도가 아니라, 짜증나게 만들 정도의 숫자여야 한다는 것입니다. 캡에 도달하면 기능이 중단되고 이메일을 받습니다. 이는 예상치 못한 청구서보다 훨씬 좋은 실패 방식입니다.
또한, 환경별로 별도의 프로젝트/키(key)를 만드세요. 제한이 없는 스테이징 키는 깜짝 놀랄 수 있는 전형적인 방법입니다.
2. 요청 건수가 아닌 토큰 단위의 사용자별 일일 할당량 설정하기
가장 명백한 첫 번째 조치는 '하루에 50개 요청'과 같은 것입니다. 이것은 함정입니다. 거대한 PDF를 붙여넣는 단 하나의 요청이 작은 요청 50개보다 더 많은 비용을 발생시킬 수 있습니다.
모든 호출(call)마다 다음 정보를 담아 한 행을 기록하도록 하세요: 사용자 ID, 입력 토큰(input tokens), 출력 토큰(output tokens), 모델, 타임스탬프. 매번 새로운 호출이 발생하기 전에 지난 24시간 동안 해당 사용자의 합계를 확인해야 합니다. 무료 사용자는 적은 토큰 예산을 받고, 유료 사용자는 더 큰 예산을 받으며, 누구도 무제한을 얻지 못하게 해야 합니다.
저의 규모에서는 평범한 테이블과 (user_id, created_at)에 인덱싱된 쿼리 하나만으로 충분합니다. 아직 Redis가 필요하지 않습니다.
3. 모델에 도달하기 전에 입력 제한하기
크기 제한을 초과하는 입력은 잘라내거나 거부하고, 모든 호출에 최대 출력 토큰(max output tokens)을 설정하세요. 사용자가 보내는 내용을 그대로 통과시키면 누군가 전체 문서를 붙여넣고 모델이 기꺼이 소설 같은 것을 작성하게 할 수 있습니다.
4. IP 및 계정별 속도 제한 설정하기
할당량(Quota)은 일 단위로 적용되고, 속도 제한(Rate limiting)은 분 단위로 적용됩니다. 스크립트는 일반적인 UI를 사용하는 사람이 하는 것보다 몇 초에 걸쳐 여러 번의 호출을 수행합니다. 계정당 (그리고 로그아웃 상태에서의 경우에는 IP당) 분당 소수의 호출만 허용하는 제한은 밤새도록 막는 것이 아니라, 1분 동안 루프(loop)가 발생하는 것을 막습니다.
무료 계정이 바로 남용이 일어나는 곳이기도 합니다. 저는 이전에 가짜 가입 및 카드 테스트에 대비한 작은 방어 스택에 대해 글을 썼는데, 동일한 이메일 인증 단계가 이러한 종류의 남용도 늦춥니다.
5. 아침 점검 시 일별 비용 항목 추가하기
아침에 확인하는 정보에 오늘 모델 사용량과 토큰 기준으로 상위 3명의 사용자라는 숫자를 하나 더 추가해 보세요. 10초면 충분합니다. 만약 한 사람의 이름이 다른 모든 사람보다 10배 높다면, 주목해야 합니다.
6. 제한 메시지를 인간적으로 만들기
누군가 할당량에 도달하면
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기