AI API 호출을 수동으로 기록하는 것을 멈추세요 — OpenAI 및 Anthropic을 위한 한 줄 자동 로깅
요약
OpenAI와 Anthropic API 호출 비용을 자동으로 기록해주는 미들웨어 라이브러리 AICostTracker를 소개합니다. 단 한 줄의 코드로 클라이언트를 감싸 사용량을 추적하며, 프로젝트별 상세 비용 요약을 제공합니다.
핵심 포인트
- OpenAI 및 Anthropic 클라이언트를 감싸는 한 줄의 코드로 자동 로깅 구현
- 기존 코드 변경 없이 미들웨어 방식으로 사용량(usage) 데이터 추출
- 프로젝트별 태그 기능을 통해 에이전트나 도구별 비용 분리 관리 가능
- 지연 시간(latency)이 없으며 로깅 실패 시에도 API 호출에 영향을 주지 않음
AI API를 호출할 때마다 비용이 발생합니다. 하지만 매 세션이 끝난 후 대시보드를 확인하지 않는 한, 어떤 프로젝트나 모델이 비용을 유발하고 있는지 알 수 없습니다.
저는 모든 호출을 자동으로 기록하는 한 줄짜리 미들웨어(middleware)로 AI 클라이언트(client)를 감싸는 방식으로 이 문제를 해결했습니다.
수동 로깅의 문제점
AICostTracker를 사용하면 aicost log myapp gpt-4o 1500 800을 실행하여 호출을 기록할 수 있습니다. 유용하지만, 아무도 이를 일관되게 수행하지 않습니다. 흐름(flow)에 집중하다 보면 잊어버리게 되고, 나중에 하겠다고 미루게 됩니다.
결국 로그는 불완전해지고 요약본은 쓸모없게 됩니다.
track()을 이용한 자동 로깅
v0.1.2 버전에서 OpenAI 또는 Anthropic 클라이언트를 감싸는 track() 함수를 추가했습니다:
npm install @ozperium/aicost-tracker
import OpenAI from 'openai';
import { track } from '@ozperium/aicost-tracker';
...
이것이 전부입니다. 감싸는 작업 외에 기존 코드에 변경할 사항은 없습니다.
Anthropic에서도 동일하게 작동합니다:
import Anthropic from '@anthropic-ai/sdk';
import { track } from '@ozperium/aicost-tracker';
...
기록되는 내용
몇 번의 세션을 거친 후:
aicost summary
AI Cost Tracker — Summary
══════════════════════════════════════════════════
Total cost: $1.2847
...
작동 원리
track()은 client.chat.completions.create (OpenAI) 또는 client.messages.create (Anthropic)를 패치(patch)하여 응답을 가로채고, usage 필드에서 사용량(usage)을 추출한 뒤, 응답을 반환하기 전에 logUsage()를 호출합니다. 이는 얇은 동기식 래퍼(synchronous wrapper)로, 추가적인 지연 시간(latency)이 전혀 없습니다.
어떤 이유로든 로깅에 실패하더라도 오류는 조용히 처리(swallowed)됩니다. 귀하의 API 호출은 항상 응답을 받게 됩니다.
프로젝트별 상세 내역
{ project: 'myapp' } 옵션을 사용하면 모든 호출에 프로젝트 이름을 태그할 수 있습니다. 동일한 코드베이스에서 여러 에이전트(agent)나 도구를 실행하는 경우, 각 에이전트에 고유한 프로젝트 태그를 부여하세요:
const researchAgent = track(new OpenAI(), { project: 'research' });
const summaryAgent = track(new OpenAI(), { project: 'summary' });
그러면 aicost summary가 프로젝트별 내역을 자동으로 보여줍니다.
GitHub: https://github.com/Ozperium/aicost-tracker
기타: AI 에이전트 (AI agent) 동작 테스트를 위한 AgentSpec, 속도 제한 (rate limits) 모니터링을 위한 quota.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기