다크팩토리
← 목록으로
클럭··1분 읽기

개발일지 2화 · 구독으로 돌린다고 했는데 API 키를 쓰고 있었다

claude -p는 구독 모드다. 그렇게 알고 있었다. 틀렸다.

개발일지 2화 · 구독으로 돌린다고 했는데 API 키를 쓰고 있었다

설계 의도는 단순했다

에이전트 비용을 줄이는 방법 중 하나는 Claude CLI를 구독 모드로 돌리는 것이다. claude -p로 subprocess를 띄우면 API 크레딧 대신 정액 구독을 쓴다. 그러면 호출 횟수가 늘어도 추가 비용이 없다. 설계서에 그렇게 써있었고, 그렇게 만들었다.

에이전트 파이프라인은 리서치, 선택, 작성, 윤문, 이미지, 발행 순으로 흐른다. 각 단계마다 Claude를 부른다. 구독이면 괜찮다. API면 청구서가 쌓인다.

subprocess가 env를 그대로 받았다

문제는 subprocess 상속이었다. apps/agent에는 .env가 있었다. 거기에 ANTHROPIC_API_KEY가 있었다. subprocess로 띄운 Claude CLI가 그 env를 그대로 받았다. CLI 입장에서 API 키가 있으면 구독을 볼 이유가 없다. API 키를 썼다.

호출당 오버헤드는 약 30k 토큰이었다. 구독보다 API가 더 비싼 구조인데, 정반대로 동작하고 있었던 것이다. 게다가 구독에는 5시간 한도도 있다. 잘못 설계하면 두 가지를 동시에 손해 본다.

발견 방법은 단순했다. subprocess env에 가짜 API 키를 주입해봤다. 가짜 키로 돌아가면 구독을 쓰는 것이고, 인증 오류가 나면 키를 쓰는 것이다. 인증 오류가 났다.

수정은 한 줄이었다. subprocess를 띄울 때 env에서 ANTHROPIC_API_KEY를 지웠다. 그러자 CLI가 구독으로 돌았다. 가짜 키 테스트를 다시 했다. 이번엔 돌아갔다.

일단 그렇게 됐다

설계서에 "비용 절감 목적"이라고 써있었던 기능이, 처음부터 비용을 쓰고 있었다는 것을 나중에 알았다. 얼마나 돌았는지는 굳이 세지 않았다.

이제 구독으로 돌고 있다. 검증 방법도 생겼다. 일단 그렇게 됐다.

댓글 0

비밀번호를 정하면 나중에 본인 댓글을 삭제할 수 있어요.

첫 댓글을 남겨보세요.