본문 바로가기
Data Analysis/AI

OpenAI 사용량 추적의 비밀병기: get_openai_callback

by Hagrid 2025. 1. 28.
반응형

LLM(Language Model)을 활용할 때, 가장 골치가 아픈 점 중 하나가 사용량 관리입니다.
토큰 사용량이 많아지면 비용이 기하급수적으로 늘어날 수 있기 때문이죠.
그렇다면 어떤 요청에 얼마나 많은 토큰이 쓰이고 있는지, 총 비용이 얼마나 되는지를
실시간으로 추적할 수 있으면 어떨까요?

오늘은 LangChain에서 제공하는 get_openai_callback 을 소개해 드리겠습니다.
이걸 활용하면 OpenAI API를 쓰는 과정에서 토큰 사용량비용을 한눈에 파악할 수 있어요.


1. get_openai_callback 이 뭔가요?

get_openai_callback 은 OpenAI API에 요청을 보낼 때마다,
몇 개의 토큰을 사용했는지, 얼마의 비용이 발생했는지 등을 콜백(callback) 방식으로 알려주는 기능입니다.
with 문법을 사용해 일시적으로 콜백을 적용하고, 그 안에서 일어나는 모든 요청의 기록을 추적할 수 있죠.

 

2. 기본 사용 예시

아래 코드 예시를 통해 사용법을 쉽게 이해해 봅시다.

 

from langchain.llms import OpenAI
from langchain.callbacks import get_openai_callback

# LLM 인스턴스 생성 (OpenAI 예시)
llm = OpenAI(temperature=0.5)

# get_openai_callback을 사용하면, with 블록 안에서의 모든 OpenAI 호출을 추적
with get_openai_callback() as cb:
    response = llm("안녕, 오늘 날씨는 어때?")
    print("AI 응답:", response)
    
# 블록이 끝난 후에는 cb 객체를 통해 사용량 확인
print("--- 사용량 요약 ---")
print(f"총 프롬프트 토큰: {cb.prompt_tokens}")
print(f"총 응답 토큰: {cb.completion_tokens}")
print(f"총 토큰: {cb.total_tokens}")
print(f"예상 비용(USD): {cb.total_cost}")

코드 설명

  1. LLM 인스턴스 생성
    • OpenAI 클래스를 사용해 기본 세팅으로 LLM 인스턴스를 하나 만들어둡니다.
  2. with get_openai_callback() 블록
    • 이 블록 안에서 일어나는 모든 OpenAI 호출(프롬프트, 응답)에 대한 토큰 사용량을 자동으로 추적합니다.
    • 블록이 끝나면, cb 객체에 정보를 담은 상태로 반환됩니다.
  3. 토큰 사용량 & 비용 출력
    • prompt_tokens, completion_tokens, total_tokens, total_cost 등 다양한 속성을 조회해,
      어떤 요청에 얼마나 토큰이 들어갔는지 한눈에 파악할 수 있습니다.

3. 왜 써야 할까?

  1. 비용 관리
    • 토큰 사용량을 정확히 알고 있으면, 어떤 요청이 과도한 비용을 유발하는지 파악해 최적화할 수 있습니다.
  2. 개발 & 테스트 효율
    • 디버깅할 때, 특정 함수나 로직이 예상보다 많은 토큰을 소비하는지 빠르게 확인 가능합니다.
  3. 프로덕션 모니터링
    • 서비스 단계에서, 특정 시나리오나 유저 입력이 지나치게 많은 토큰을 소모하지 않는지 체크할 수 있어요.

4. 추가 활용 팁

  1. 블록 범위 조절
    • with 블록을 짧게 잡으면 특정 함수나 특정 로직만 추적할 수 있고,
    • 길게 잡으면 하나의 세션 전체를 추적할 수도 있습니다.
      원하는 범위에 따라 유연하게 적용해 보세요.
  2. 다중 콜백 사용
    • LangChain에서 다른 콜백 핸들러들과 함께 쓸 수 있습니다.
    • 예: StreamingStdOutCallbackHandler 로 실시간 출력 & get_openai_callback 로 사용량 트래킹 등.
  3. 실시간 로깅
    • 더 정교하게 모니터링하고 싶다면, cb 객체로부터 정보를 가져와 로그DB에 저장해둘 수도 있습니다.

5. 주의 사항

  • 블록 내부에서만 추적: with 블록이 끝나면, 그 안에서 사용했던 추적이 종료됩니다.
    블록 밖에서 다시 사용하려면, 또 다른 with 문을 써야 해요.
  • API Key 필요: OpenAI LLM 호출이므로, 당연히 OpenAI API Key가 설정되어 있어야 합니다.
  • 무료 툴링 아님: 토큰 사용량을 알려주지만, 실제로는 유료 API를 쓰는 것이니 비용에 유의하세요.

6. 마무리

get_openai_callback 을 이용하면,

  • 몇 개의 토큰을 써서
  • 얼마나 비용이 발생했는지를 실시간으로 추적할 수 있습니다.

LLM을 활용한 프로젝트를 하다 보면,
모델 정확도나 응답 품질뿐만 아니라, 비용 관리똑같이 중요한 요소가 되는데요.
이런 모니터링 도구를 잘 활용하면, 최적의 성능과 효율을 함께 잡을 수 있을 겁니다.

만약 지금 “토큰이 얼마나 들고 있는지 감이 안 온다” 라며 고민하고 계셨다면,
바로 이 기능으로 지금부터 수시로 체크해 보세요!

궁금한 점이 있거나, 더 자세한 내용이 필요하다면 댓글로 남겨주세요!
이 글이 도움이 되셨다면 공유와 좋아요도 부탁드립니다. 감사합니다!

반응형

댓글