LangChain은 Harrison Chase에 의해 만들어진 것으로, 대형 언어 모델을 사용하여 응용 프로그램을 보다 효율적이고 효과적으로 구축하기 위한 도구 세트입니다. LangChain에서 "OpenAI Callback"은 LangChain 프레임워크 내에서 GPT-3 또는 GPT-4와 같은 OpenAI의 언어 모델과 상호 작용하기 위해 사용되는 함수나 메커니즘을 말합니다. 

LangChain의 OpenAI 콜백은 OpenAI 언어 모델로 쿼리를 보내고 그로부터 응답을 받는 인터페이스 역할을 합니다. 이것은 자연 언어 이해와 생성 기능을 필요로 하는 응용 프로그램에 있어 중요합니다. 콜백을 사용함으로써 개발자들은 대화 생성, 텍스트 요약, 질문 답변 등 다양한 기능을 포함한 응용 프로그램에 GPT-3 또는 GPT-4의 강력한 언어 처리 기능을 통합할 수 있습니다. 

이 콜백은 OpenAI의 API와 상호 작용하는 세부 사항을 추상화함으로써 개발자들이 API 통신의 복잡성에 대해 걱정하지 않고 자신들의 응용 프로그램의 고급 로직에 집중할 수 있게 해줍니다. 

 

LangChain의 get_openai_callback() 메소드를 사용하면 OpenAI LLM 모델 API 서비스에 대한 토큰 사용을 트래킹할 수 있습니다. (2024년.1월 현재 OpenAI API에 대해서만 구현이 되어 있음). 애플리케이션을 운영하는 입장에서는 사용하는 토큰 양(total tokens)과 소요되는 비용(total costs)을 트래킹하면서 적정 예산 범위 내 가용 가능한지를 점검하고 관리할 필요가 있을 것입니다. 

 

 

LangChain - OpenAI Callback - Tracking token usage

 

 

먼저, 터미널에서 pip install 을 사용해서 openai, langchain 모듈을 설치합니다. 

 

! pip install openai langchain

 

 

 

다음으로, 예제 실습에 필요한 모듈을 importing 합니다. 

LangChain의 Callbacks 클래스에서 get_openai_callback() 메소드를 import 해서 OpenAI API 서비스에서 사용한 토큰에 대해서 트래킹을 해보겠습니다. 

OpenAI의 GPT-4 Chat 모델을 사용하겠으며, OpenAI API Key를 환경변수로 입력해주었습니다. 

 

import os

from langchain.callbacks import get_openai_callback
from langchain.chat_models import ChatOpenAI

os.environ["OPENAI_API_KEY"]="sk-xxxx..." # set with yours

# initiate ChatOpenAI LLM model
model = ChatOpenAI(model="gpt-4")

 

 

 

매우 간단하게 1개의 호출에 대한 API token 사용에 대한 트래킹과, 복수의 API 호출에 대한 토큰 사용 트래킹을 나누어서 소개하겠습니다. 

 

(1) get_openai_callback()을 이용해 1개의 호출에 대한 토큰 사용 트래킹

 

# Track token usage for specific calls.
# It is currently only implemented for the OpenAI API.
with get_openai_callback() as cb:
    result = model.invoke("Tell me a joke about birds")
    print("result:", result)
    print("---" * 10)
    print(cb)
    
# result: content="Why don't birds use Facebook?\n\nBecause they already tweet enough!"
# ------------------------------
# Tokens Used: 26
# 	Prompt Tokens: 13
# 	Completion Tokens: 13
# Successful Requests: 1
# Total Cost (USD): $0.00117

 

 

 

(2) get_openai_callback()을 이용해 여러개의 호출에 대한 토큰 사용 트래킹

 

복수개의 API 호출에 대한 토근 사용 트래킹도 가능합니다. 아래에 Callback 의 각 속성 정보에 접근하는 방법도 소개하였습니다. 가령, 총 토근 수 (cb.total_tokens), 프롬프트 토큰 수 (cb.prompt_tokens), 답변 생성 토큰 수 (cb.completion_tokens), 총 소요 비용 (cb.total_cost) 등의 속성 정보를 개별적으로 접근해서 확인할 수 있습니다. 

 

# Anything inside the context manager will get tracked.
# Here’s an example of using it to track multiple calls in sequence.
with get_openai_callback() as cb:
    result_1 = model.invoke("Tell me a joke about birds")
    result_2 = model.invoke("Tell me a joke about dogs")
    
    print(f"Result 1: {result_1}")
    print(f"Result 2: {result_2}")
    print("-----" * 10)
    print(cb)
    print("-----" * 10)
    print(f"Total tokens: {cb.total_tokens}")
    print("-----" * 10)
    print(f"Prompt Tokens: {cb.prompt_tokens}")
    print("-----" * 10)
    print(f"Completion Tokens: {cb.completion_tokens}")
    print("-----" * 10)
    print(f"Total Cost (USD): ${cb.total_cost}")

    
# Result 1: content="Why do seagulls fly over the sea?\n\nBecause if they flew over the bay, they'd be bagels!"
# Result 2: content='Why did the scarecrow adopt a dog?\n\nBecause he needed a "barking" buddy!'
# --------------------------------------------------
# Tokens Used: 69
# 	Prompt Tokens: 26
# 	Completion Tokens: 43
# Successful Requests: 2
# Total Cost (USD): $0.0033599999999999997
# --------------------------------------------------
# Total tokens: 69
# --------------------------------------------------
# Prompt Tokens: 26
# --------------------------------------------------
# Completion Tokens: 43
# --------------------------------------------------
# Total Cost (USD): $0.0033599999999999997

 

 

 

[ Reference ]

* LangChain - Tracking token usage: 
https://python.langchain.com/docs/modules/model_io/chat/token_usage_tracking

 

이번 포스팅이 많은 도움이 되었기를 바랍니다. 

행복한 데이터 과학자 되세요!  :-)

 

728x90
반응형
Posted by Rfriend
,