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}")
코드 설명
- LLM 인스턴스 생성
- OpenAI 클래스를 사용해 기본 세팅으로 LLM 인스턴스를 하나 만들어둡니다.
- with get_openai_callback() 블록
- 이 블록 안에서 일어나는 모든 OpenAI 호출(프롬프트, 응답)에 대한 토큰 사용량을 자동으로 추적합니다.
- 블록이 끝나면, cb 객체에 정보를 담은 상태로 반환됩니다.
- 토큰 사용량 & 비용 출력
- prompt_tokens, completion_tokens, total_tokens, total_cost 등 다양한 속성을 조회해,
어떤 요청에 얼마나 토큰이 들어갔는지 한눈에 파악할 수 있습니다.
- prompt_tokens, completion_tokens, total_tokens, total_cost 등 다양한 속성을 조회해,
3. 왜 써야 할까?
- 비용 관리
- 토큰 사용량을 정확히 알고 있으면, 어떤 요청이 과도한 비용을 유발하는지 파악해 최적화할 수 있습니다.
- 개발 & 테스트 효율
- 디버깅할 때, 특정 함수나 로직이 예상보다 많은 토큰을 소비하는지 빠르게 확인 가능합니다.
- 프로덕션 모니터링
- 서비스 단계에서, 특정 시나리오나 유저 입력이 지나치게 많은 토큰을 소모하지 않는지 체크할 수 있어요.
4. 추가 활용 팁
- 블록 범위 조절
- with 블록을 짧게 잡으면 특정 함수나 특정 로직만 추적할 수 있고,
- 길게 잡으면 하나의 세션 전체를 추적할 수도 있습니다.
원하는 범위에 따라 유연하게 적용해 보세요.
- 다중 콜백 사용
- LangChain에서 다른 콜백 핸들러들과 함께 쓸 수 있습니다.
- 예: StreamingStdOutCallbackHandler 로 실시간 출력 & get_openai_callback 로 사용량 트래킹 등.
- 실시간 로깅
- 더 정교하게 모니터링하고 싶다면, cb 객체로부터 정보를 가져와 로그나 DB에 저장해둘 수도 있습니다.
5. 주의 사항
- 블록 내부에서만 추적: with 블록이 끝나면, 그 안에서 사용했던 추적이 종료됩니다.
블록 밖에서 다시 사용하려면, 또 다른 with 문을 써야 해요. - API Key 필요: OpenAI LLM 호출이므로, 당연히 OpenAI API Key가 설정되어 있어야 합니다.
- 무료 툴링 아님: 토큰 사용량을 알려주지만, 실제로는 유료 API를 쓰는 것이니 비용에 유의하세요.
6. 마무리
get_openai_callback 을 이용하면,
- 몇 개의 토큰을 써서
- 얼마나 비용이 발생했는지를 실시간으로 추적할 수 있습니다.
LLM을 활용한 프로젝트를 하다 보면,
모델 정확도나 응답 품질뿐만 아니라, 비용 관리도 똑같이 중요한 요소가 되는데요.
이런 모니터링 도구를 잘 활용하면, 최적의 성능과 효율을 함께 잡을 수 있을 겁니다.
만약 지금 “토큰이 얼마나 들고 있는지 감이 안 온다” 라며 고민하고 계셨다면,
바로 이 기능으로 지금부터 수시로 체크해 보세요!
궁금한 점이 있거나, 더 자세한 내용이 필요하다면 댓글로 남겨주세요!
이 글이 도움이 되셨다면 공유와 좋아요도 부탁드립니다. 감사합니다!
'Data Analysis > AI' 카테고리의 다른 글
ConversationBufferWindowMemory: 핵심만 기억하는 효율적인 대화 메모리 (0) | 2025.01.29 |
---|---|
LangChain의 메모리 개념과 ConversationBufferMemory 완벽 이해하기 (0) | 2025.01.29 |
LLM 활용도를 높이는 꿀팁: set_llm_cache, set_debug, 그리고 InMemoryCache (0) | 2025.01.28 |
LLM을 제대로 활용하는 꿀팁: FewShotPromptTemplate & StreamingStdOutCallbackHandler (0) | 2025.01.28 |
LLM langchain - OutputParser and LCEL (0) | 2025.01.19 |
댓글