실수로 1,900달러짜리 밈을 만들어버림
I accidentally made a $1,900 meme
핵심 요약
파이썬 스크립트 오류로 Claude API를 무한 루프 돌려 250만 원 넘게 날린 작성자의 뼈아픈 실수담.
- API 비용 폭탄 — 스크립트 오류로 8시간 동안 2,700번의 API 호출이 발생함
- 무한 루프 원인 — 중복 검사 로직이 너무 엄격하고 재시도 횟수 제한이 없었음
- 비용 관리 부재 — 별도의 예산 설정 없이 높은 월간 한도만 믿고 방치함
- 교훈 공유 — '50개 성공'과 '50번 시도'는 다르다는 것을 몸소 체험함
진짜 쪽팔리긴 한데, 혹시라도 나 같은 놈 또 나올까 봐 돈 아끼라고 글 쓴다.
Claude Code한테 밈 템플릿용 캡션 여러 개 뽑아주는 파이썬 스크립트 하나 짜달라고 했거든. 템플릿은 내가 만든 도지랑 페페 섞은 건데, 이름은 그냥 '도페(dope) xd'라고 부르자. 아이디어는 간단했음. 중복 안 되는 캡션 50개 나올 때까지 계속 돌리다가 멈추는 거. API는 텍스트만 뱉고, 파이썬이 로컬에서 이미지에 박아주는 방식이었지.
아침에 돌려놓고 처음 몇 개는 잘 나오길래, 그냥 일하러 갔다가 까먹고 있었음.
오후 늦게 확인해 보니까 아직도 돌아가고 있더라. 진행 상황은 12/50에서 멈춰있음 ㅋㅋㅋ 근데 디버그 폴더 보니까 이미지가 수천 장 쌓여있더라. 수천 장의 도페, 내용은 거의 똑같은 농담인데 단어 몇 개만 바뀐 수준이었음.
바로 워커 둘 다 죽이고 그 워크스페이스 API 사용량 확인했다.
거의 1,900달러 찍혀있더라.
처음엔 날짜 필터 잘못 설정한 줄 알았다.
(누가 물어보기 전에 말하는데, 이건 스크립트가 쓴 API 사용량이지 Claude 구독료가 갑자기 튄 게 아님. Claude Code가 스크립트를 짰고, 그 스크립트가 지 혼자 API 호출을 계속 날린 거임.)
대체 무슨 일이 있었던 거냐면:
-
다른 프로젝트에서 복붙한 설정 그대로 썼는데 모델을 안 바꿨음. 그래서 일반 메시지 API에서 opus 4.6을 쓰고 있었던 거임. 와 진짜.
-
8시간 동안 요청 2,700번, 캐시 안 된 입력 토큰 약 3억 7,500만 개, 출력 토큰 100만 개 정도.
-
응답마다 캡션 하나랑, 왜 이게 이전 거랑 다른지 설명하는 글이 같이 딸려옴.
멈추는 조건이 '승인된 캡션 50개 달성'밖에 없었음. 거절된 시도는 카운트도 안 됐고. 최대 시도 횟수 제한도 없고, 타임아웃도 없고, 아무것도 없었음.
게다가 중복 체크가 너무 빡빡했어. 같은 주제면 무조건 거절하고 다른 버전 내놓으라고 시키는데... 재시도할 때마다 이전 캡션이랑 설명까지 대화 내역에 다 포함해서 보낸 거임.
히스토리 잘라내는 함수가 있긴 해서 컨텍스트 문제는 아닐 거라 생각했거든. 근데 알고 보니 토큰 18만 개 넘어가야 덩어리로 잘라내는 거였음. 작업이 멈추지도 않고, 새로 시작하지도 않으니까, 컨텍스트 제한에 걸리지도 않은 채로 계속 거대한 요청만 날려댄 거지.
당연히 프롬프트 캐싱도 안 썼고.
내 계정은 원래 다른 작업 때문에 레이트 리밋이 높게 잡혀있었고, 월간 한도도 5,000달러로 설정해놔서 아무것도 나를 막지 못했음. 이 작업만을 위한 별도의 소액 예산 같은 건 없었으니까.
아, 그리고 이미지는 중복 체크하기 전에 디버그 폴더에 저장됐음. 그래서 카운터는 거의 안 올랐는데 파일만 수천 개 쌓인 거임.
뭐, 지금은 꺼놨다. 재시도 로직 다시 짜고, 시도 횟수 제한 걸고, 소액 예산 설정하기 전까진 절대 안 건드릴 거임.
교훈 하나 얻었다. "50개 승인되면 멈춰라"는 "50번 시도해라"랑은 차원이 다른 문제라는 거.
아무튼 여기 도페 나간다. 이 새끼가 나한테 1,900달러 뜯어감.


