"Litelm: LiteLLM phiên bản tinh gọn, chỉ còn 2.900 dòng mã và 2 phụ thuộc"
"Litelm là dự án tách lọc phần lõi định tuyến và chuyển đổi định dạng tin nhắn từ LiteLLM, loại bỏ proxy server, caching, tính toán chi phí và hàng loạt tính năng cồng kềnh. Với chỉ 2.900 dòng mã và 2 thư viện phụ thuộc, litelm giữ nguyên API tương thích, cho phép chuyển đổi chỉ bằng một dòng import."

Litelm: LiteLLM phiên bản tinh gọn, chỉ còn 2.900 dòng mã và 2 phụ thuộc
Phiên bản LiteLLM
Litelm là một dự án mã nguồn mở mới, ra đời nhằm giải quyết một vấn đề quen thuộc: LiteLLM ngày càng phình to với hơn 100.000 dòng mã, trong khi phần cốt lõi mà đa số người dùng thực sự cần chỉ chiếm một phần rất nhỏ. Litelm tách riêng đúng phần lõi đó — định tuyến model và chuyển đổi định dạng tin nhắn — rồi gói gọn trong khoảng 2.900 dòng mã cùng 2 thư viện phụ thuộc.
Vấn đề của LiteLLM
LiteLLM nổi tiếng nhờ khả năng định tuyến các lệnh gọi LLM qua nhiều nhà cung cấp khác nhau, đồng thời chuyển đổi giữa các định dạng tin nhắn đặc thù. Tuy nhiên, phần lõi hữu ích này lại bị chôn vùi dưới hàng loạt tính năng mà phần lớn người dùng không bao giờ chạm tới:
- Proxy server
- Các lớp caching
- Theo dõi chi phí và ngân sách
- Đếm token, tạo ảnh, xử lý âm thanh, OCR, tinh chỉnh model
- Hệ thống agent, guardrails, bộ lập lịch
Kết quả là một thư viện đồ sộ, nặng nề và khó bảo trì cho những ai chỉ cần gọi API đơn giản.
Litelm giữ lại gì?
Litelm chỉ giữ đúng đường dẫn gọi hàm (call path) — bao gồm:
- Định tuyến model (provider/model → đúng endpoint)
- Chuyển đổi tin nhắn (Anthropic, Bedrock, Cloudflare, Mistral)
- Streaming kèm
stream_chunk_builder - Tool use (function calling)
- Embeddings
- Text completions và OpenAI Responses API
- Mock responses
Không có lớp Router, không proxy, không caching.
Cài đặt và sử dụng
Việc cài đặt cực kỳ gọn nhẹ nhờ chỉ phụ thuộc vào openai và httpx:
pip install litelm # openai + httpx
pip install litelm[anthropic] # thêm SDK anthropic
pip install litelm[bedrock] # thêm boto3
pip install litelm[all] # tất cả
Cách dùng cũng hết sức quen thuộc với những ai từng làm việc cùng LiteLLM:
import litelm
# Completion cơ bản
response = litelm.completion("openai/gpt-4o", messages=[{"role": "user", "content": "Hello!"}])
print(response.choices[0].message.content)
# Streaming
for chunk in litelm.completion("groq/llama-3.1-70b-versatile", messages=[...], stream=True):
print(chunk.choices[0].delta.content or "", end="")
# Embeddings
response = litelm.embedding("openai/text-embedding-3-small", input=["hello world"])
Mỗi hàm đều có biến thể bất đồng bộ: acompletion, aembedding, aresponses, atext_completion.
Điểm đáng chú ý: API của litelm phản chiếu LiteLLM — cùng tên hàm, cùng tham số, cùng kiểu phản hồi. Nếu bạn đang dùng LiteLLM, việc chuyển đổi chỉ đơn giản là thay
litellmbằnglitelmtrong câu lệnh import.
Hỗ trợ 19 nhà cung cấp
Litelm định tuyến tới 19 nhà cung cấp thông qua cú pháp "provider/model-name". Bất kỳ endpoint tương thích OpenAI nào cũng hoạt động qua api_base.
Các nhà cung cấp đã được xác minh hoạt động gồm OpenAI, Anthropic, Groq, Mistral, xAI, OpenRouter và Azure. Nhiều cái tên khác như Bedrock, Cloudflare, Together, Fireworks, DeepSeek, Perplexity, DeepInfra, Gemini, Cohere, Ollama, vLLM và LM Studio cũng được hỗ trợ nhưng chưa qua kiểm thử đầy đủ.
Với các mô hình chạy cục bộ, bạn chỉ cần trỏ api_base về đúng cổng:
# vLLM
litelm.completion("openai/my-model", messages=[...], api_base="http://localhost:8000/v1")
# Ollama
litelm.completion("ollama/llama3", messages=[...], api_base="http://localhost:11434/v1")
# LM Studio
litelm.completion("openai/local-model", messages=[...], api_base="http://localhost:1234/v1")
Xử lý lỗi và gọi công cụ
Mọi lỗi từ nhà cung cấp đều được ánh xạ vào hệ thống ngoại lệ riêng của litelm, giúp việc bắt lỗi trở nên rõ ràng hơn:
from litelm import ContextWindowExceededError, RateLimitError, AuthenticationError
try:
response = litelm.completion("openai/gpt-4o", messages=messages)
except ContextWindowExceededError:
# prompt quá dài — cắt bớt và thử lại
pass
except RateLimitError:
# chờ và thử lại
pass
except AuthenticationError:
# API key sai
pass
Tính năng tool calling cũng được giữ nguyên với cú pháp tương tự LiteLLM, cho phép định nghĩa công cụ và yêu cầu model bắt buộc gọi công cụ đó.
Minh bạch trong phát triển
Điểm đáng chú ý về dự án này là sự minh bạch trong quy trình phát triển. Litelm tự mô tả là "phần mềm do con người định hướng, AI hỗ trợ" — phần lớn mã được viết với Claude Code sử dụng Claude Opus 4.6/4.7, và từ ngày 14/05/2026 trở đi được viết qua Pi với GPT-5.5. Các tuyên bố về khả năng tương thích dựa trên kiểm thử và đánh giá của người bảo trì, chứ không dựa trên việc AI viết mã.
Dự án cũng công bố văn bản chứng thực (attestation) từ người bảo trì, xác nhận đã rà soát các thay đổi định tuyến/định dạng của LiteLLM trong khoảng từ commit 649eb2d đến 9a715df2, phân loại 360 commit trên đường dẫn lõi và sửa các khoảng trống tương thích theo phương pháp test-first.
Trạng thái hiện tại
Litelm đang ở giai đoạn Alpha, với 262 bài kiểm thử riêng đều vượt qua. Baseline LiteLLM 9a715df2 hiện có 75 bài kiểm thử chuyển đổi thành công và không còn lỗi assertion/runtime nào cần xử lý.
Đáng chú ý, dự án đã xác minh khả năng thay thế trực tiếp cho DSPy — cả 7 đường dẫn thực thi đều được chứng minh hoạt động (Predict, CoT, typed signatures, streaming, embeddings, tool use, multi-output).
Phiên bản Python được hỗ trợ
Ý nghĩa với cộng đồng lập trình viên Việt Nam
Với các nhóm phát triển tại Việt Nam đang xây dựng sản phẩm AI, việc lựa chọn giữa một thư viện đồ sộ như LiteLLM và một giải pháp tinh gọn như litelm phụ thuộc vào nhu cầu thực tế. Nếu bạn chỉ cần gọi nhiều model từ nhiều nhà cung cấp khác nhau với định dạng thống nhất, litelm giúp giảm đáng kể dung lượng phụ thuộc, tăng tốc độ cài đặt và giảm bề mặt tấn công tiềm ẩn trong chuỗi cung ứng phần mềm.
Ngược lại, nếu bạn cần proxy server, load balancing, theo dõi chi phí hoặc các tính năng nâng cao khác, LiteLLM vẫn là lựa chọn phù hợp hơn.
Dự án được phát hành theo giấy phép MIT, mã nguồn mở tại github.com/kennethwolters/litelm.
Giấy phép MIT


