커스텀 HTTP 핸들러
커스텀 HTTP 핸들러 (Custom HTTP Handler)
LiteLLM 컴플리션의 성능과 제어를 위해 커스텀 aiohttp 세션을 구성해요.
개요
이제 LiteLLM에 커스텀 aiohttp.ClientSession 인스턴스를 주입할 수 있어요:
- 커스텀 연결 풀링과 타임아웃
- 기업 프록시 및 SSL 구성
- 성능 최적화
- 요청 모니터링
기본 사용법
기본 (변경 필요 없음)
import litellm
# Works exactly as before
response = await litellm.acompletion(
model="gpt-5.6-luna",
messages=[{"role": "user", "content": "Hello!"}]
)
커스텀 세션
import aiohttp
import litellm
from litellm.llms.custom_httpx.aiohttp_handler import BaseLLMAIOHTTPHandler
# Create optimized session
session = aiohttp.ClientSession(
timeout=aiohttp.ClientTimeout(total=180),
connector=aiohttp.TCPConnector(limit=300, limit_per_host=75)
)
# Replace global handler
litellm.base_llm_aiohttp_handler = BaseLLMAIOHTTPHandler(client_session=session)
# All completions now use your session
response = await litellm.acompletion(model="gpt-5.6-luna", messages=[...])
일반적인 패턴
FastAPI 통합
from contextlib import asynccontextmanager
from fastapi import FastAPI
import aiohttp
import litellm
@asynccontextmanager
async def lifespan(app: FastAPI):
# Startup
session = aiohttp.ClientSession(
timeout=aiohttp.ClientTimeout(total=180),
connector=aiohttp.TCPConnector(limit=300)
)
litellm.base_llm_aiohttp_handler = BaseLLMAIOHTTPHandler(
client_session=session
)
yield
# Shutdown
await session.close()
app = FastAPI(lifespan=lifespan)
@app.post("/chat")
async def chat(messages: list[dict]):
return await litellm.acompletion(model="gpt-5.6-luna", messages=messages)
기업 프록시
import ssl
# Custom SSL context
ssl_context = ssl.create_default_context()
ssl_context.load_cert_chain('cert.pem', 'key.pem')
# Proxy session
session = aiohttp.ClientSession(
connector=aiohttp.TCPConnector(ssl=ssl_context),
trust_env=True # Use environment proxy settings
)
litellm.base_llm_aiohttp_handler = BaseLLMAIOHTTPHandler(client_session=session)
고성능
# Optimized for high throughput
session = aiohttp.ClientSession(
timeout=aiohttp.ClientTimeout(total=300),
connector=aiohttp.TCPConnector(
limit=1000, # High connection limit
limit_per_host=200, # Per host limit
ttl_dns_cache=600, # DNS cache
keepalive_timeout=60, # Keep connections alive
enable_cleanup_closed=True
)
)
litellm.base_llm_aiohttp_handler = BaseLLMAIOHTTPHandler(client_session=session)
생성자 옵션
BaseLLMAIOHTTPHandler(
client_session=None, # Custom aiohttp.ClientSession
transport=None, # Advanced transport control
connector=None, # Custom aiohttp.BaseConnector
)
출처: 문서
본문
리소스 관리
- 사용자 세션: 수명 주기를 직접 관리 (
await session.close()호출) - 자동 생성 세션: 핸들러가 자동으로 정리
- 100% 하위 호환: 기존 코드가 변경 없이 동작
구성 팁
개발
session = aiohttp.ClientSession(
timeout=aiohttp.ClientTimeout(total=60),
connector=aiohttp.TCPConnector(limit=50)
)
프로덕션
session = aiohttp.ClientSession(
timeout=aiohttp.ClientTimeout(total=300),
connector=aiohttp.TCPConnector(
limit=1000,
limit_per_host=200,
keepalive_timeout=60
)
)