Portkey: Satu Gateway AI buat Ngatur Semua LLM dari Banyak Provider
Temen-temen, kalau kamu udah pernah bikin aplikasi yang manggil LLM, entah itu OpenAI, Anthropic, Google, atau model open source di Together, pasti kamu ngerasain satu hal yang sama: makin lama kodenya makin berantakan. Ada key yang kesebar di mana-mana, ada retry yang kamu tulis manual tiap kali API-nya timeout, ada fallback yang kamu bikin pakai try-except panjang, dan pas produksi kamu bingung kenapa biayanya membengkak karena nggak ada yang ngelacak berapa token yang kepake tiap hari. Aku sendiri udah ngalamin fase itu dan jujur bikin capek.
Nah, di tutorial kali ini aku mau ngenalin ke kamu satu tool yang menurutku wajib kamu tau kalau kamu serius bangun aplikasi berbasis LLM, namanya Portkey. Portkey ini adalah AI gateway sekaligus observability layer buat aplikasi LLM. Konsep intinya simpel banget: kamu taruh satu gateway di depan semua provider, terus semua request LLM kamu lewat gateway itu. Dari situ kamu dapet banyak fitur gratisan yang tadinya harus kamu bikin sendiri, kayak retry otomatis, fallback, load balancing, caching, logging, tracing, sampai guardrails.
Di artikel ini aku bakal ajak kamu jalan pelan-pelan dari nol. Kita mulai dari konsep, install, basic usage pakai SDK dan cara OpenAI-compatible, terus lanjut ke fitur-fitur advanced kayak virtual keys, retry, fallback, load balancing, semantic caching, observability, dan guardrails. Semua ada contoh kode Python yang bisa langsung kamu jalanin. Yuk kita mulai.
Introduction: Kenapa Butuh AI Gateway
Sebelum masuk ke kode, aku mau kamu paham dulu masalah yang mau diselesain sama Portkey. Bayangin kamu punya aplikasi chatbot. Awalnya kamu cuma pakai OpenAI. Kodenya bersih, tinggal panggil client.chat.completions.create. Tapi begitu aplikasi kamu makin serius, kebutuhan baru mulai muncul satu-satu.
Kebutuhan pertama biasanya soal keandalan. API LLM itu nggak selalu jalan mulus. Kadang timeout, kadang kena rate limit, kadang error 500 dari sisi provider. Kalau request-nya gagal, kamu nggak mau langsung nyerah kan. Kamu mau retry dulu beberapa kali. Kalau OpenAI lagi down parah, kamu mau otomatis pindah ke Anthropic biar aplikasi tetep jalan. Ini yang namanya fallback.
Kebutuhan kedua soal biaya dan visibilitas. Kamu perlu tau berapa banyak request yang masuk, berapa token yang kepake, berapa biayanya, model mana yang paling sering dipanggil, dan request mana yang lambat atau error. Tanpa observability, kamu buta total. Pas tagihan datang kamu cuma bisa kaget.
Kebutuhan ketiga soal efisiensi. Banyak request yang sebenernya mirip-mirip atau bahkan sama persis. Kalau tiap kali harus mukul LLM beneran, itu buang-buang duit dan bikin lambat. Di sinilah caching main peran, apalagi semantic caching yang bisa ngenalin pertanyaan yang mirip walau kata-katanya beda.
Kebutuhan keempat soal keamanan dan kualitas output. Kamu nggak mau model kamu bocorin data sensitif, atau ngeluarin output yang nggak sesuai format. Guardrails ngebantu kamu ngevalidasi input dan output secara otomatis.
Portkey ngejawab semua kebutuhan itu dalam satu tempat. Jadi alih-alih kamu nulis semua logika itu manual di tiap aplikasi, kamu cukup arahin request kamu lewat gateway Portkey dan atur semuanya lewat konfigurasi. Gateway-nya sendiri open source dan bisa kamu self-host, tapi Portkey juga punya versi hosted yang gratis buat mulai. Menariknya lagi, Portkey punya interface yang OpenAI-compatible, jadi kalau kode kamu udah pakai SDK OpenAI, migrasi ke Portkey itu cuma ganti base URL sama header doang. Nyaris nggak ada perubahan besar.
Instalasi
Oke sekarang kita mulai praktik. Pertama, install SDK Portkey buat Python. Buka terminal kamu terus jalanin perintah ini.
pip install portkey-ai
Kalau kamu mau pakai cara OpenAI-compatible, kamu juga bisa install SDK OpenAI karena Portkey bisa nempel di atasnya.
pip install openai portkey-ai
Setelah itu kamu butuh API key dari Portkey. Kamu bisa daftar gratis di dashboard Portkey, terus generate API key di menu settings. API key ini nanti dipakai buat autentikasi ke gateway Portkey. Aku saranin simpen key-nya di environment variable biar nggak ketulis di kode dan nggak kebawa ke git.
export PORTKEYAPIKEY="pk-xxxxxxxxxxxxxxxxx"
export OPENAIAPIKEY="sk-xxxxxxxxxxxxxxxxx"
Buat provider LLM kayak OpenAI atau Anthropic, kamu punya dua pilihan cara ngasih key-nya. Cara pertama, kamu kirim langsung key provider-nya lewat header tiap request. Cara kedua yang lebih rapi, kamu bikin virtual key di dashboard Portkey. Nanti aku bahas lebih detail soal virtual key di bagian advanced. Buat sekarang kita mulai dari cara paling dasar dulu.