AI & AUTOMATIONSELF HOSTING

LiteLLM – Biến mọi LLM thành một cổng OpenAI duy nhất

Tóm tắt nhanh:

  • LiteLLM là một LLM Gateway/OpenAI proxy giúp bạn gọi hàng trăm mô hình từ OpenAI, Azure, Anthropic, Google, Hugging Face, Bedrock… thông qua một API chuẩn OpenAI duy nhất, giảm cực mạnh độ phức tạp tích hợp và vendor lock-in.
  • Bạn có thể dùng LiteLLM như một Python SDK hoặc self-hosted proxy server để quản lý authentication, load balancing, fallback, tracking chi phí và rate limit cho từng user/virtual key – rất phù hợp cho SaaS, sản phẩm AI multi-tenant và hệ thống agent.
  • Bài viết hướng dẫn cách cài LiteLLM (pip/Docker), bật proxy, cấu hình nhiều provider trong config.yaml và drop-in replace OpenAI API trong app/web/self-hosted agent của bạn.

LiteLLM là một AI gateway mã nguồn mở (LLM Proxy) cho phép bạn gọi hơn 100 nhà cung cấp LLM thông qua cùng một format API tương thích OpenAI, thay vì phải dùng nhiều SDK riêng lẻ.

Nó hỗ trợ các provider phổ biến như OpenAI, Azure OpenAI, Anthropic, Cohere, Google, AWS Bedrock, Hugging Face, vLLM, NVIDIA NIM… và trừu tượng hóa các khác biệt về endpoint, tham số, exception để bạn chỉ làm việc với một API thống nhất.

Về kiến trúc, LiteLLM có hai cách dùng chính:

  • Python SDK: import litellm trong code, gọi completion()/router để truy cập nhiều model khác nhau.
  • Proxy server: chạy một OpenAI-compatible HTTP server, bất kỳ client nào hiểu API OpenAI đều có thể dùng (Node, Python, PHP, n8n, backend của bạn…).

Tại sao nên dùng LiteLLM cho dự án và agent của bạn?

Nếu bạn đang build nhiều website, API hoặc AI agent, việc trực tiếp tích hợp OpenAI, Anthropic, Google, Cohere… thường gặp vài vấn đề:

  • Mỗi provider một SDK, auth, quota, giới hạn request khác nhau.
  • Khó switch model khi giá thay đổi hoặc khi muốn tận dụng model rẻ hơn/nhanh hơn.
  • Khó track chi phí, chia budget cho từng user, project hay workspace.

LiteLLM giải quyết bằng cách:

  • Cung cấp một API OpenAI-compatible để wrap tất cả provider.
  • Tự dịch request sang format của từng provider và map response về schema chuẩn.
  • Hỗ trợ load balancing, retry/fallback, spend tracking, budget per key/user và rate limit.

Nhờ đó, bạn dễ dàng:

  • Tắt/bật model theo chi phí và hiệu năng mà không phải sửa app frontend/backend.
  • Chạy self-hosted gateway đứng trước mọi app/web/n8n workflow.
  • Tích hợp với các công cụ như Open WebUI, LangChain, LlamaIndex… chỉ bằng việc đổi base_url.

Cài đặt LiteLLM bằng Python SDK

Cách đơn giản nhất là cài LiteLLM như một package Python.

Bước 1: Cài gói

pip install litellm

Hoặc với trình quản lý mới như uv:

uv add litellm

Bước 2: Thiết Lập API Key

LiteLLM đọc key từ biến môi trường. Ví dụ:

export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export COHERE_API_KEY="..."

Bạn có thể set thêm key khác như HUGGINGFACE_API_KEY, AZURE_API_KEY, BEDROCK, v.v.

Bước 3: Gọi Model Qua SDK

Ví dụ gọi một model theo kiểu OpenAI:

from litellm import completion
import os

os.environ["OPENAI_API_KEY"] = "sk-..."

response = completion(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Xin chào, hãy tóm tắt LiteLLM giúp mình"}],
)

print(response["choices"][0]["message"]["content"])

Bạn cũng có thể gọi model từ nhà cung cấp khác bằng cách dùng prefix, ví dụ: azure/gpt-4o, anthropic/claude-3-sonnet, vertex_ai/gemini-1.5-pro, vllm/meta-llama-3-8b

Chạy LiteLLM như một OpenAI-Compatible Proxy Server

Đây là mode rất phù hợp với workflow self-hosted, app đa ngôn ngữ, hoặc khi bạn muốn cho nhiều service dùng chung gateway.

Bước 1: Cài bản proxy

pip install "litellm[proxy]"

Bước 2: Chạy proxy tối thiểu

Chạy server với một model cụ thể:

litellm --model openai/gpt-4o
# INFO: Proxy running on http://0.0.0.0:8000

Hoặc một model local như vLLM/Ollama:

litellm --model vllm/meta-llama-3-8b
# hoặc
litellm --model ollama/llama3

Proxy sẽ expose các endpoint OpenAI chuẩn như /v1/chat/completions, /v1/completions, /v1/embeddings tùy config.

Bước 3: Test với OpenAI SDK

Bên phía client, bạn chỉ cần đổi base_url sang proxy của mình:

import openai

openai.api_key = "sk-litellm-master-key"  # hoặc key bạn cấu hình
openai.api_base = "http://localhost:8000"

resp = openai.ChatCompletion.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello LiteLLM"}],
)

print(resp.choices[0].message["content"])

Mọi thay đổi model/provider giờ được xử lý ở gateway, không cần chỉnh code app.

Cấu hình nhiều provider trong config.yaml

Thay vì chỉ truyền --model, bạn có thể khai báo nhiều model/provider trong file cấu hình để:

  • Gắn alias dễ nhớ cho từng model.
  • Định nghĩa provider/backend, API base, API key, region…
  • Thiết lập load balancing, fallback logic giữa các model.

Ví dụ config.yaml giản lược:

model_list:
  - model_name: gpt4o
    litellm_params:
      model: azure/gpt-4o
      api_base: os.environ/AZURE_API_BASE
      api_version: "2024-02-15-preview"
      api_key: os.environ/AZURE_API_KEY

  - model_name: claude-sonnet
    litellm_params:
      model: anthropic/claude-3-sonnet
      api_key: os.environ/ANTHROPIC_API_KEY

  - model_name: local-llama
    litellm_params:
      model: vllm/meta-llama-3-8b
      api_base: http://vllm-server:8000

Chạy proxy với config:

litellm --config /path/to/config.yaml
# Proxy running on http://0.0.0.0:4000

Client chỉ cần gọi model="gpt4o" hoặc model="local-llama" mà không quan tâm backend là gì.

Dùng Docker để triển khai LiteLLM Proxy

Với hạ tầng self-hosted, bạn có thể bọc LiteLLM trong container và deploy lên server hoặc Kubernetes.

Một Docker run đơn giản (dựa trên hướng dẫn chung của LiteLLM và các proxy tương tự):

docker run -d \
  --name litellm-proxy \
  -p 4000:4000 \
  -e OPENAI_API_KEY="sk-..." \
  -v $(pwd)/config.yaml:/app/config.yaml \
  ghcr.io/berriai/litellm:latest \
  litellm --config /app/config.yaml

Bạn có thể:

  • Đặt container sau nginx/traefik với HTTPS.
  • Dùng Docker Compose để chia layer: LiteLLM, Postgres/Redis cho logging, các service khác.
  • Deploy lên Kubernetes và dùng Ingress để expose gateway cho nhiều microservice.

Admin UI, budget, rate limit và logging

LiteLLM đi kèm một Admin UI và các tính năng quản trị:

  • Admin UI: giao diện web để xem model, log, thêm/sửa model mà không cần chỉnh file config.
  • API keys/virtual keys: tạo key riêng cho từng app/user/team; mỗi key có thể gắn quota, budget, rate limit.
  • Spend tracking: track chi phí theo model, theo key, theo thời gian.
  • Logging + observability: đẩy log ra các hệ thống như Prometheus, OpenTelemetry, hoặc dùng tích hợp logging sẵn có.

Ví dụ bật UI:

litellm --config /path/to/config.yaml
# Proxy: http://0.0.0.0:4000
# UI:    http://0.0.0.0:4000/ui

Đừng quên set LITELLM_MASTER_KEY, UI_USERNAME, UI_PASSWORD để bảo vệ UI và API.

Tích hợp LiteLLM với ứng dụng và workflow thực tế

Với background dev/webmaster, bạn có thể tận dụng LiteLLM theo nhiều hướng:

  • Một gateway cho toàn bộ site/app: đổi endpoint OpenAI trong backend, n8n workflow, cron, script Python, Node… sang LiteLLM là xong, không cần đổi business logic.
  • Routing theo use case: nội dung SEO/blog dùng model rẻ, code generation hoặc agent phức tạp dùng model mạnh hơn, tất cả đằng sau một API duy nhất.
  • Kết nối với hệ thống agent: dùng LiteLLM cho mọi call LLM trong agent framework (kagent, LangGraph, custom agent) để linh hoạt swap provider, giảm chi phí, thêm fallback khi provider lỗi.
  • Multi-tenant SaaS: tạo virtual keys cho từng khách hàng, set budget và rate limit riêng, theo dõi usage dễ dàng mà không cần viết gateway riêng.

Một số lưu ý bảo mật khi self‑hosted

Vì LiteLLM là gateway trung tâm cho mọi traffic LLM, bạn nên:

  • Chạy proxy phía sau HTTPS, giới hạn IP hoặc dùng authentication bắt buộc (master key, virtual key).
  • Không commit file .env/config.yaml chứa key lên Git, dùng secret manager hoặc CI/CD secret.
  • Theo dõi security advisory của LiteLLM, thường xuyên cập nhật bản vá; gateway bị compromise có thể lộ token, log, payload của người dùng.
  • Đặt quota và rate limit hợp lý để tránh abuse hoặc bug trong app phía client khiến chi phí tăng đột biến.

LiteLLM cho bạn một lớp “LLM abstraction” rất hợp lý: vừa đơn giản để bắt đầu, vừa đủ mạnh để scale lên nhiều website, service, agent và khách hàng khác nhau.

Với việc chỉ cần đổi base URL hoặc import khác trong code, bạn đã có thể tách ứng dụng ra khỏi sự phụ thuộc vào một nhà cung cấp duy nhất, tối ưu chi phí và chuẩn bị tốt hơn cho một hệ sinh thái LLM ngày càng phân mảnh.

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất