← Kembali ke Blog

Satu API untuk Semua LLM: LiteLLM Proxy sebagai AI Gateway

Satu API untuk Semua LLM: LiteLLM Proxy sebagai AI Gateway

Aplikasi kamu ngobrol ke tiga provider LLM yang beda-beda. Tiap provider punya SDK sendiri, auth sendiri, error handling sendiri. Mau ganti dari OpenAI ke Anthropic, kamu harus nulis ulang lapisan client, update handling tool call, terus tes ulang. Dan di tengah semua itu, belum tentu ada yang tahu tim ini sebenernya keluar duit berapa buat API. Proxy yang duduk di depan semua provider nyelesain ini. Kamu dapet satu endpoint, satu format, satu tempat buat pantau biaya. LiteLLM itu gateway self-hosted yang paling sering dipilih tim, dan dia open source.

Panduan ini bawa kamu dari instalasi kosong sampai gateway jalan dengan banyak provider, virtual key, budget, pelacakan biaya, dan load balancing. Semua command di bawah sesuai dokumentasi resmi sekarang (September 2026).

Prasyarat

  • Python 3.10+. LiteLLM 1.84.0 ke atas butuh versi segitu.
  • uv terinstall, atau pip. uv tool install otomatis nyiapin Python yang cocok.
  • Docker, cuma kalau mau ikut step budget dan biaya (buat PostgreSQL lokal).
  • Opsional: API key OpenAI, API key Anthropic, dan server Ollama yang jalan.

Yang kamu bangun

Request masuk ke satu endpoint (http://0.0.0.0:4000). Proxy yang mutusin provider asli mana yang dipanggil, nerapin rate limit dan budget, nyatet biaya, terus balikin respons format OpenAI. Aplikasi kamu cuma kenal format OpenAI.

Langkah 1: Instal

Cara yang didukung:

uv tool install 'litellm[proxy]'

Utamakan uv. pip install 'litellm[proxy]' biasa di interpreter di bawah 3.10 diam-diam jatuh ke versi terakhir yang masih ngizinin, yaitu 1.83.9. Kalau hasilnya kelihatan ke-pin, cek python --version terus install ulang pake uv.

Langkah 2: Satu model, jalan pertama

Buat satu provider aja, kamu nggak perlu file config. Set key di environment terus jalanin:

export OPENAI_API_KEY=sk-...
litellm --model gpt-4o

Proxy mulai di http://0.0.0.0:4000. Buka terminal kedua terus cek:

litellm --test

Ini ngirim request openai.chat.completions beneran lewat proxy. Command test butuh OpenAI Python package v1.0.0+.

Langkah 3: Route banyak provider dengan config.yaml

Di sini gateway mulai berasa gunanya. Bikin config.yaml:

model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY

  - model_name: claude-opus
    litellm_params:
      model: anthropic/claude-opus-5
      api_key: os.environ/ANTHROPIC_API_KEY

  - model_name: llama3.1
    litellm_params:
      model: ollama_chat/llama3.1
      api_base: http://localhost:11434

litellm_settings:
  drop_params: true

general_settings:
  master_key: sk-key-admin-kamu

Aturan yang penting diinget:

  • model_name itu nama yang dikirim client. litellm_params.model itu string provider aslinya.
  • Prefix openai/ dan anthropic/ ngasih tau LiteLLM mau pake SDK provider mana. Ollama punya prefix khusus ollama_chat/ yang nembak endpoint /api/chat dan hasilnya umumnya lebih bagus daripada varian ollama/ mentah.
  • os.environ/OPENAI_API_KEY baca key dari environment variable, bukan naro key mentah di file.
  • master_key nge-set key admin proxy dan wajib diawali sk-.

Jalanin:

litellm --config config.yaml

Di log harusnya keliatan LiteLLM: Proxy initialized with Config, Set models:. Kalau nggak, jalanin pake --detailed_debug.

Langkah 4: Panggil

Dari OpenAI SDK. Di sisi client nggak ada lagi logika pindah provider, justru itu intinya:

from openai import OpenAI

client = OpenAI(api_key="anything", base_url="http://localhost:4000")

resp = client.chat.completions.create(
    model="claude-opus",          # nama model_name dari config.yaml
    messages=[{"role": "user", "content": "Ringkas ini dalam tiga kalimat."}],
)
print(resp.choices[0].message.content)

api_key di client nggak dicek kecuali kamu set master_key. Arahin aja client OpenAI-compatible apa pun ke http://localhost:4000, kamu dapet endpoint chat, completion, dan embeddings yang udah biasa.

Langkah 5: Virtual key dan pelacakan biaya

Key, budget, dan biaya butuh database. LiteLLM pake PostgreSQL. Opsi termudah buat lokal, pake container:

docker run --name litellm-db \
  -e POSTGRES_USER=user -e POSTGRES_PASSWORD=pass -e POSTGRES_DB=litellm \
  -p 5432:5432 -d postgres:16

Daftarin di config dengan nambahin di bawah general_settings::

general_settings:
  master_key: sk-key-admin-kamu
  database_url: "postgresql://user:pass@localhost:5432/litellm"

Restart proxy. Sekarang virtual key beneran bisa dibuat, dan cuma master key yang bisa ngebuatnya:

curl 'http://localhost:4000/key/generate' \
  -H 'Authorization: Bearer sk-key-admin-kamu' \
  -H 'Content-Type: application/json' \
  -d '{"models": ["claude-opus", "gpt-4o"], "duration": "30d"}'

Key sk-... yang dihasilkan kasih ke teman satu tim. Aplikasi mereka manggil proxy pake key itu, dan proxy nyatet tiap request. Cek biaya sebuah key kapan aja:

curl 'http://localhost:4000/key/info?key=<key-user>' \
  -H 'Authorization: Bearer sk-key-admin-kamu'

Responsnya ada field spend dalam USD. Biaya juga dicatat per user dan per team kalau kamu bikin key lewat /user/new dan /team/new. Baris itu punya max_budget yang bisa kamu set biar request yang buang-buang duit langsung ditolak dari pada diam-diam nagih ke kartu kamu.

Langkah 6: Load balancing dan rate limit

Buat nyebar traffic ke beberapa deployment model yang sama, kasih model_name yang sama ke dua entri. Proxy yang load balance di antara keduanya, dan rpm ngecap tiap deployment:

model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY
      rpm: 100
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o-backup
      api_key: os.environ/OPENAI_API_KEY
      rpm: 50

Dokumen resmi nyebut proxy bisa nanganin 1.5k+ request per detik di load test mereka. Itu angka buat server GPU gede, bukan sesuatu yang bakal kamu temuin di laptop. Buat kebanyakan tim, nilai pentingnya di routing, budget, dan key yang dibagi, bukan throughput puncak.

Kapan pake LiteLLM dibanding alternatif

  • SDK provider langsung. Pilihan pas buat prototipe satu provider, tapi kamu kehilangan kemudahan ganti provider di belakang tanpa nyentuh kode.
  • OpenRouter. Router hosted dengan virtual key gratis, tapi data dan key kamu numpang di infrastruktur mereka, dan analitik biaya nempel ke katalog model mereka.
  • Cloudflare AI Gateway. Bagus kalau udah jalan di Cloudflare, tapi tertutup dan dibangun di sekitar platform CF.
  • Kong AI Gateway atau Portkey. API management enterprise penuh. Kebanyakan kecuali kamu butuh SSO, kebijakan level organisasi, dan plugin custom.
  • LiteLLM. Self-hosted, open source, jalan buat model lokal dan data privat, dan biaya tercatat di database yang kamu punya. Taruhan dari self-hosted: kamu yang jalanin dan jagain sendiri.

Langkah selanjutnya

  • Tambahin model embedding ke list dan pake /embeddings buat pipeline RAG.
  • Pasang model alias biar sebuah key bisa naikin request dari gpt-4o ke claude-opus tanpa ngubah kode client.
  • Sambungin success_callback ke Langfuse atau Slack buat logging dan alert.
  • Baca FAQ dulu sebelum nge-expose proxy ke internet. Master key itu yang ngejaga orang lain nggak pake provider kamu gratisan.

Referensi

Butuh Bantuan Implementasi?

Saya membantu tim mendesain dan membangun infrastruktur cloud scalable, pipeline DevOps, dan sistem production-grade.

Konsultasi Gratis