LiteLLM
LiteLLM은 다양한 대형 언어 모델(LLM) 제공자의 API를 간편하게 통합하고 관리할 수 있도록 설계된 라이브러리이다.
OpenAI와 호환되는 API를 사용하여 이러한 모델들과의 상호작용을 표준화한다. 여러 LLM을 사용하는 프로젝트에서 LiteLLM은 통합, 관리, 그리고 비용 및 사용량 모니터링을 간편하게 만들어준다.
LiteLLM의 주요 기능에는 Completions, Embeddings, Image generation을 지원하는 여러 provider들 간의 일관된 요청 처리가 포함된다.
Completions : LLM이 주어진 입력(프롬프트)에 대한 응답으로 텍스트를 생성하는 작업
Embeddings : 자연어 처리에서 텍스트를 수치화된 벡터로 변환하는 방법
Image generation : 텍스트 입력을 기반으로 이미지를 생성하는 기술
OpenAI, Azure, AWS, HuggingFace 등 다양한 provider들을 지원하며, 로드 밸런싱, 속도 제한, 비용 추적 등의 기능도 제공하여 대규모 AI 애플리케이션 배포에 적합하다.
LiteLLM의 두 가지 사용법
LiteLLM Proxy Server - 100개 이상의 LLM을 호출하고, 로드 밸런싱하고, 프로젝트 전체에서 비용을 추적하는 서버(LLM 게이트웨이)
- LiteLLM은 다양한 LLM으로의 요청을 관리하고 라우팅할 수 있는 프록시 서버를 제공하며, 이 프록시는 개발자에게 통합된 인터페이스를 제공한다.
- 이 프록시는 로깅 및 가시성 기능도 제공하여 대규모 AI 배포를 제어하는데 중요한 역할을 한다.
- 일반적으로 Gen AI Enablement/ML 플랫폼에서 사용
LiteLLM 서버 (LLM 게이트웨이)는 아래의 것들을 관리한다.
통합 인터페이스
여러 LLM 제공자들의 API와 기능을 하나의 표준화된 인터페이스로 통합하여 제공하는 기능
각각의 고유한 api를 따로 학습하거나 처리할 필요 없이, 하나의 일관된 방법으로 모든 모델에 접근하고 사용 가능
OpenAI의 ChatCompletions & Completions 포맷으로 Huggingface/Bedrock/TogetherAI 등의 100개 이상의 LLM 호출
Cost tracking
여러 LLM 제공자와 상호작용할 때 발생하는 비용을 모니터링하고 관리할 수 있도록 도와주는 기능
각 모델 사용 시 소모되는 토큰 수, 호출 빈도, 그리고 이에 따른 비용 추적, 전체적인 사용 비용을 투명하게 파악 가능
Open image-20240827-080122.png
image-20240827-080122.png
스트리밍 비용, 사용량
import litellm
track_cost_callback
def track_cost_callback(
kwargs, # kwargs to completion
completion_response, # response from completion
start_time, end_time # start/end time
):
try:
response_cost = kwargs.get(“response_cost”, 0)
print(“streaming response_cost”, response_cost)
except:
pass
set callback
litellm.success_callback = [track_cost_callback] # set custom callback function
litellm.completion() call
response = completion(
model=”gpt-3.5-turbo”,
messages=[
{
“role”: “user”,
“content”: “Hi 👋 - i’m openai”
}
],
stream=True
)
로드밸런싱 : 여러 모델, 동일 모델의 여러 서버 배포 간 초당 1.5k 이상의 요청 처리 가능
config 예시 : 요청은 model=gpt-3.5-turbo 여러 인스턴스로 라우팅 됨.
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/
api_base:
api_key:
rpm: 6 # Rate limit for this deployment: in requests per minute (rpm) - model_name: gpt-3.5-turbo
litellm_params:
model: azure/gpt-turbo-small-ca
api_base: https://my-endpoint-canada-berri992.openai.azure.com/
api_key:
rpm: 6 - model_name: gpt-3.5-turbo
litellm_params:
model: azure/gpt-turbo-large
api_base: https://openai-france-1234.openai.azure.com/
api_key:
rpm: 1440
routing_strategy: simple-shuffle # Literal[“simple-shuffle”, “least-busy”, “usage-based-routing”,”latency-based-routing”], default=”simple-shuffle”
model_group_alias: {“gpt-4”: “gpt-3.5-turbo”} # all requests withgpt-4
will be routed to models withgpt-3.5-turbo
num_retries: 2
timeout: 30 # 30 seconds
redis_host:# set this when using multiple litellm proxy deployments, load balancing state stored in redis
redis_password:
redis_port: 1992
로깅 관찰성 : LLM 입력/출력 로딩
LiteLLM은 Lunary, Langfuse, Helicone, Promptlayer, Traceloop, Slack에 데이터를 전송하기 위해 미리 정의된 콜백을 제공
from litellm import completion
set env variables for logging tools
os.environ[“HELICONE_API_KEY”] = “your-helicone-key”
os.environ[“LANGFUSE_PUBLIC_KEY”] = “”
os.environ[“LANGFUSE_SECRET_KEY”] = “”
os.environ[“LUNARY_PUBLIC_KEY”] = “your-lunary-public-key”
os.environ[“OPENAI_API_KEY”]
set callbacks
litellm.success_callback = [“lunary”, “langfuse”, “helicone”] # log input/output to lunary, langfuse, supabase, helicone
#openai call
response = completion(model=”gpt-3.5-turbo”, messages=[{“role”: “user”, “content”: “Hi 👋 - i’m openai”}])
가드레일, 캐싱을 사용자 정의
LiteLLM은 다음을 지원한다
메모리 캐시
레디스 캐시
Quadrant 의미 캐시
Redis 의미론적 캐시
S3 버킷 캐시
Proxy 엔드포인트
프록시에 ChatCompletions 요청을 만들기
import openai # openai v1.0.0+
client = openai.OpenAI(api_key=”anything”,base_url=”http://0.0.0.0:8000“) # set proxy to base_url
request sent to model set on litellm proxy, litellm --model
response = client.chat.completions.create(model=”gpt-3.5-turbo”, messages = [
{
“role”: “user”,
“content”: “this is a test request, write a short poem”
}
])
print(response)
Swagger
Open swagger.png
swagger.png
LiteLLM python SDK
LiteLLM Python SDK란?
100개 이상의 LLM을 호출하고, 로드 밸런싱 및 비용 추적을 지원하는 Python 클라이언트
OpenAI, Azure OpenAI, Anthropic, Cohere, Replicate, Bedrock, Vertex AI 등
Python 코드에서 LiteLLM을 사용하여 여러 LLM에 액세스할 수 있는 통합 인터페이스 제공
Azure, OpenAI 등 여러 배포 환경에서 Retry/fallback 로직을 적용하여 안정성 확보
오픈소스 : GitHub에서 무료로 제공되어 개발자가 자신의 환경에서 배포하고 사용가능
litellm/litellm at main · BerriAI/litellm
가격
(1) 오픈 소스 (무료)
(2) 엔터프라이즈 기본 (월 $250)
(3) 엔터프라이즈 프리미엄 (월 $1000)
라우터 기능
로드 밸런싱 및 fallback: 여러 배포 간 로드 밸런싱과 요청 우선 처리
기본 안정성 로직: 쿨다운, fallback, 타임아웃, Retry(fixed + exponential backoff)
프로덕션 환경 지원: Redis를 사용해 쿨다운 서버, 사용량 추적, tpm/rpm 제한 관리
Callback: API 호출에 사용된 키, 엔드포인트, 모델 등을 추적
모델 캐싱: Azure와 OpenAI 같은 다른 모델 그룹 간 캐싱
이벤트 알림: LLM API 예외, 느린 응답 등의 이벤트를 Slack/웹훅 URL로 알림
비용 및 배포 추적: 배포 비용 추적, 라우터 배포 및 디버깅
기타 기능
커스텀 설정: API 키, API 베이스, 버전, 타입, 프로젝트, 위치, 토큰 등 사용자 지정 가능
완료 토큰 사용: 모든 완료 요청에서 토큰 사용량 반환
사용자 정의 가격 측정: SageMaker, Azure 등의 가격 모델 지원
비동기 임베딩 함수: embedding.aembedding 비동기 임베딩 지원
조정 엔드포인트: OpenAI의 조정 엔드포인트 지원
Budget Manager
예산 관리: LLM API 호출 시 예산 초과를 방지.
글로벌 예산 설정: litellm.max_budget으로 최대 예산(USD) 설정, 초과 시 BudgetExceededError 발생.
BudgetManager 클래스: 사용자별 예산 설정 및 비용 관리
LiteLLM Proxy Server: OpenAI 호환 엔드포인트로 LLM 호출, 예산 관리, 지출 추적, 부하 분산
캐싱
캐시 초기화: 메모리, Redis, S3 버킷, 디스크 캐시 등 다양한 캐시 옵션
캐시 제어: no-cache, no-store, ttl, s-maxage 등 캐시 설정 가능
캐시 컨텍스트 관리자: 캐시 활성화, 비활성화 및 매개변수 업데이트
사용자 정의 캐시: 필요에 따라 캐시 설정을 커스터마이즈
통합 기능
Langchain: ChatLiteLLM()을 통한 통합
Instructor: Function calling 기능 지원
우리꺼에서 어떻게 사용하는지, 유사 기술과 스택과 비교
LangChain: LangChain은 LLM을 활용한 애플리케이션 개발을 위한 프레임워크로, 다양한 LLM 제공자와의 통합을 지원한다.
LangChain은 특히 자연어 처리(NLP) 파이프라인을 구성하고, LLM의 출력을 후처리(post-processing)하거나 다양한 모델 간의 조합을 가능하게 하는 도구들을 제공한다.
Haystack: Haystack은 주로 검색 엔진과 NLP 애플리케이션을 구축하는 데 사용되는 오픈소스 프레임워크이다.
다양한 LLM을 포함한 모델을 손쉽게 통합할 수 있으며, 문서 검색, 질의응답, 텍스트 생성 등 다양한 기능을 제공한다.
Haystack은 Elasticsearch, OpenSearch, Hugging Face 모델과의 통합을 통해 다양한 데이터 소스와 LLM을 활용할 수 있다.
Rasa: Rasa는 주로 대화형 AI, 챗봇을 구축하기 위한 오픈소스 프레임워크로, 다양한 NLP 모델과 통합이 가능한다.
Rasa는 자연어 이해(NLU)와 대화 관리(Dialogue Management)를 처리하며, 사용자 정의 가능한 파이프라인을 통해 여러 LLM과의 연동을 지원한다.
OpenAI’s API: OpenAI는 자사의 API를 통해 GPT 시리즈 모델을 제공하며, 이를 다른 애플리케이션과 통합할 수 있는 다양한 도구들을 제공한다.
여러 언어 모델을 사용한 텍스트 생성, 자연어 이해, 번역 등의 작업을 API를 통해 쉽게 수행할 수 있다.
Hugging Face’s Transformers: Hugging Face는 다양한 LLM 모델을 포함한 Transformers 라이브러리를 제공하며, 여러 NLP 작업에 사용할 수 있는 모델들을 쉽게 통합하고 관리할 수 있는 도구를 제공한다.
이 플랫폼은 모델 허브(Model Hub)와 함께 제공되어, 다양한 LLM 모델을 탐색하고 활용할 수 있다.
Langchain과의 비교
LangChain과 LiteLLM은 모두 LLM(대형 언어 모델)을 효과적으로 통합하고 활용하는 것을 목표로 하는 도구이지만, 그 목적과 사용 사례에 있어 차이가 있다.
목적 및 사용 사례
LangChain: 주로 LLM을 기반으로 한 복잡한 NLP 파이프라인 및 애플리케이션을 구축하는 데 중점을 둔다.
LangChain은 데이터 소스 통합, 문서 검색, 질의응답, 대화형 에이전트와 같은 고급 애플리케이션에 강점을 가지고 있다.
특히, 여러 모듈과 LLM을 조합하여 복잡한 워크플로우를 생성하는 데 유용하다
LiteLLM: 여러 LLM 제공자 간의 API 통합을 단순화하는 데 초점을 맞추고 있다.
LiteLLM은 다양한 LLM 모델을 하나의 표준화된 API로 호출할 수 있게 하여, 여러 모델 간의 전환을 용이하게 한다.
비용 추적, 로드 밸런싱, 요청 최적화 등 여러 모델을 효율적으로 관리할 수 있는 기능을 제공하며, 다양한 LLM을 사용하는 프로젝트에서 일관된 인터페이스를 제공하는 것이 주요 목적이다.
기능 및 특징
LangChain:
모듈성: LangChain은 여러 모듈로 구성되어 있으며, 각 모듈을 자유롭게 조합할 수 있다. 이로 인해 복잡한 대화형 애플리케이션이나 데이터 파이프라인을 구축하는 데 적합하다.
다양한 작업 지원: 텍스트 생성, 문서 검색, 데이터 클러스터링 등 다양한 NLP 작업을 지원한다.
데이터 소스와의 통합: LangChain은 다양한 데이터 소스와 통합할 수 있으며, 이를 통해 LLM을 활용한 고급 검색 및 정보 처리 기능을 구현할 수 있다.
LiteLLM:
통합 인터페이스: 여러 LLM 제공자의 API를 하나의 표준화된 인터페이스로 통합하여, 사용자가 다양한 LLM을 쉽게 전환하고 사용할 수 있도록 힌다.
비용 추적 및 관리: 각 모델 사용에 따른 비용을 추적하고 관리할 수 있는 기능을 제공하여, 예산 관리 및 비용 최적화를 돕는다.
간소화된 사용: 복잡한 설정 없이 여러 LLM을 일관되게 호출할 수 있어, 빠르고 쉽게 프로젝트에 통합할 수 있다.
사용 편의성
LangChain: 다소 복잡한 설정과 구성을 요구할 수 있으며, 다양한 모듈과 기능을 잘 이해하고 조합해야 한다.
따라서, 강력한 커스터마이징이 필요하거나 복잡한 워크플로우를 구축하려는 사용자의 요구에 더 적합하다.
LiteLLM: 비교적 간단한 설정과 사용을 제공하며, 여러 LLM을 쉽게 통합하고 관리할 수 있는 단순한 인터페이스를 제공힌다. 여러 모델을 효율적으로 관리하고자 하는 사용자에게 적합히다
결론:
LangChain은 복잡한 NLP 애플리케이션을 구축하려는 사용자에게 더 적합하며, 다양한 모듈과 데이터를 통합하는 데 강점을 가지고 있다.
반면, LiteLLM은 여러 LLM 제공자를 사용하는 프로젝트에서 통합과 비용 관리를 단순화하려는 사용자에게 더 유용하다.
LiteLLM Python SDK
AWS 예시 조합(다른 기능 조합 가능) : Lambda + API Gateway + Sagemaker + Step Function
Google Cloud 예시 조합 : Functions + API Gateway + Vertex AI
Azure 예시 조합 : Functions + API Management + Azure ML
기능 / 솔루션
LiteLLM
AWS
Google Cloud
Azure
OpenAI API + LangChain + Redis + Prometheus/Grafana
로드 밸런싱 및 폴백
다중 배포 간 로드 밸런싱 및 폴백 제공
Lambda와 API Gateway로 자동 처리
Cloud Functions와 API Gateway로 지원
Functions와 API Management로 지원
LangChain에서 다양한 모델에 대한 로드 밸런싱 및 폴백 처리 가능
기본 안정성 로직 (쿨다운, 타임아웃, 재시도)
지원 (쿨다운, 타임아웃, Retry)
Lambda + Step Functions로 워크플로우 제어 가능
Functions + API Gateway로 제어 가능
Functions + API Management로 제어 가능
LangChain 및 Custom Logic으로 구현 가능
프로덕션 환경 지원
Redis로 쿨다운 및 사용량 추적 관리
Redis, CloudWatch, Step Functions로 지원
Cloud Memorystore, Cloud Monitoring으로 지원
Azure Cache, Azure Monitor로 지원
Redis, Prometheus/Grafana로 쿨다운 및 사용량 추적 가능
Callback 기능
지원
SNS, SQS, Step Functions를 통한 호출
Pub/Sub, Cloud Functions로 지원
Event Grid, Logic Apps로 지원
Webhooks 또는 Custom Logic으로 구현 가능
모델 캐싱
Redis 등 다양한 옵션 지원
ElastiCache (Redis) 및 S3 버킷을 통해 캐싱
Cloud Memorystore (Redis), Cloud Storage로 캐싱
Azure Cache for Redis, Blob Storage로 캐싱
Redis로 캐싱 가능
이벤트 알림
Slack/웹훅 URL로 알림 지원
SNS, CloudWatch, Step Functions, Lambda로 알림 설정 가능
Cloud Monitoring, Pub/Sub으로 알림 설정 가능
Azure Monitor, Logic Apps로 알림 설정 가능
Prometheus Alerts를 통해 Slack, 이메일 등으로 알림 가능
비용 및 배포 추적
비용 추적 및 라우터 배포 지원
AWS Cost Explorer, Budgets, CloudWatch로 비용 추적 및 관리
Google Cloud Billing, Budgets로 비용 추적 및 관리
Azure Cost Management로 비용 추적 및 관리
Prometheus/Grafana로 비용 추적 및 모니터링 가능
커스텀 설정 (API 키, 토큰 등)
사용자 지정 가능
AWS Parameter Store, Secrets Manager로 설정 관리
Secret Manager, Config Connector로 설정 관리
Azure Key Vault, Configurations로 설정 관리
환경 변수 및 Custom Scripts로 설정 관리
완료 토큰 사용
기본 지원
Lambda 및 Sagemaker에서 API 호출 시 사용
Cloud Functions 및 Vertex AI에서 API 호출 시 사용
Functions 및 Azure ML에서 API 호출 시 사용
OpenAI API, LangChain에서 기본 지원
사용자 정의 가격 측정
다양한 클라우드 가격 모델 지원
AWS Cost Explorer로 사용자 정의 비용 분석 가능
Google Cloud Billing에서 사용자 정의 비용 분석 가능
Azure Cost Management에서 사용자 정의 비용 분석 가능
Custom Scripts, Prometheus/Grafana로 비용 측정 가능
비동기 임베딩 함수
지원
Lambda + Sagemaker에서 비동기 임베딩 함수 구현 가능
Cloud Functions + Vertex AI에서 비동기 임베딩 함수 구현 가능
Functions + Azure ML에서 비동기 임베딩 함수 구현 가능
LangChain + OpenAI API에서 비동기 임베딩 함수 구현 가능
조정 엔드포인트
OpenAI Moderation API 지원
Sagemaker 또는 Comprehend로 조정 기능 구현 가능
Vertex AI 또는 Cloud Natural Language API로 구현 가능
Azure Cognitive Services로 구현 가능
OpenAI Moderation API로 직접 지원
Budget Manager
예산 관리 및 비용 추적 기능 지원
AWS Budgets 및 Cost Explorer로 예산 관리 가능
Google Cloud Budgets 및 Billing으로 예산 관리 가능
Azure Budgets 및 Cost Management로 예산 관리 가능
Custom Scripts, Prometheus로 예산 관리 가능
캐싱 초기화 및 제어
메모리, Redis, S3 등 지원
Redis, S3, ElastiCache로 캐싱 초기화 및 제어 가능
Cloud Memorystore, Cloud Storage로 캐싱 초기화 및 제어 가능
Azure Cache for Redis, Blob Storage로 캐싱 초기화 및 제어 가능
Redis, Local Disk Caching 등으로 초기화 및 제어 가능
통합 기능 (Langchain, Instructor 등)
통합 지원
AWS Lambda, Sagemaker, API Gateway로 통합 가능
Google Cloud Functions, Vertex AI, API Gateway로 통합 가능
Azure Functions, Azure ML, API Management로 통합 가능
LangChain, OpenAI API, Hugging Face로 통합 가능
LiteLLM Python SDK 장점:
다양한 LLM API 통합 관리
로드 밸런싱 및 쿨다운, 재시도 로직 지원
모델 캐싱, 예산 관리, 이벤트 알림 기능 제공
유연한 커스터마이징 옵션
LiteLLM Python SDK 단점:
특정 LLM 제공업체에 의존
추가 설정 및 구성이 필요함
제공업체별 기능에 대한 제한된 사용자 정의
참고자료
Simplifying Multi-Model LLM Development: A Developer’s Guide to LiteLLM and Databricks
LiteLLM | Technology Radar | Thoughtworks United States
Projects built on LiteLLM | liteLLM
LiteLLM - Getting Started | liteLLM
💥 LiteLLM Proxy Server (LLM Gateway) | liteLLM
Router - Load Balancing, Fallbacks | liteLLM
install_url
to use ShareThis. Please set it in _config.yml
.