Memilih sebuah gateway API AI bukan lagi masalah yang sama seperti dua tahun lalu. Pada 2024, sebagian besar pengembang langsung memanggil OpenAI atau men-deploy LiteLLM secara lokal. Kini ada opsi hosted dengan dasbor harga, batas kredit per kunci, dan katalog model yang mencakup puluhan penyedia. Kategori ini telah berkembang cukup jauh sehingga memilih yang keliru berarti harus mengulang pekerjaan integrasi yang nyata di kemudian hari.
Artikel ini membandingkan empat gateway yang sering muncul dalam diskusi pengembang: CometAPI, Portkey, LiteLLM, dan Cloudflare AI Gateway. Tujuannya bukan memilih pemenang — masing-masing masuk akal untuk situasi berbeda — melainkan menjelaskan apa yang sebenarnya dilakukan tiap alat agar Anda dapat mencocokkannya dengan kasus penggunaan Anda.
Catatan tentang nama model: Pengidentifikasi model yang digunakan dalam artikel ini (seperti
gpt-5.4,claude-opus-4-7) adalah pengidentifikasi platform CometAPI. Itu bukan nama resmi dari OpenAI atau Anthropic, yang memiliki konvensi penamaan berbeda.
Apa Sebenarnya yang Dilakukan Alat-Alat Ini
Sebelum membandingkan fitur, ada baiknya memperjelas apa yang dilakukan sebuah gateway API AI. Minimalnya: ia berada di antara aplikasi Anda dan satu atau lebih penyedia AI, meneruskan permintaan dan mengembalikan respons. Di luar minimum itu, gateway berbeda cukup signifikan.
Beberapa gateway — misalnya Cloudflare AI Gateway — terutama merupakan lapisan pass-through yang menambahkan logging dan caching tanpa menyentuh kunci API atau harga Anda. Lainnya, seperti CometAPI, bertindak sebagai reseller: Anda membayar mereka, mereka membayar penyedia di bawahnya, dan selisih harga adalah bagian dari proposisi nilai. LiteLLM berbeda lagi — ini adalah perangkat lunak yang Anda jalankan sendiri, bukan layanan hosted.
Memahami perbedaan ini penting sebelum Anda mengevaluasi fitur spesifik apa pun.
Perbandingan Fitur
Tabel di bawah menggunakan informasi dari dokumentasi resmi tiap produk atau dasbor publik per Mei 2026. Fitur yang ditandai dengan tanda hubung (—) tidak dikonfirmasi di sumber resmi saat penulisan.
| Fitur | CometAPI | Portkey | LiteLLM | Cloudflare AI Gateway |
|---|---|---|---|---|
| Penempatan | Dihost (SaaS) | Dihost + self-host | Self-hosted (sumber terbuka) | Dihost (Cloudflare edge) |
| Katalog model | 500+ model lintas penyedia | 1,600+ LLM melalui API terpadu | Bergantung pada konfigurasi Anda | OpenAI, Anthropic, Workers AI |
| Model harga | Reseller (bayar CometAPI) | Pass-through + biaya platform | Hanya biaya infrastruktur | Pass-through (tier gratis tersedia) |
| API kompatibel OpenAI | Ya (api.cometapi.com/v1) | Ya (api.portkey.ai/v1) | Ya (lokal atau remote) | Ya (via URL gateway) |
| Batas kredit per kunci | Ya (dasbor) | Ya | Ya (via konfigurasi) | — |
| Rasio harga berbasis grup | Ya (0.8x default, 0.1x internal) | — | — | — |
| Pencatatan permintaan | Ya (4 tipe log) | Ya | Ya | Ya |
| Pemantauan tingkat sukses | Ya (tampilan uptime 30 hari) | Ya | Ya | Ya |
| Tier gratis | Ya (akun baru) | Ya | Sumber terbuka (biaya infra) | Ya |
| Opsi self-hosting | Tidak (enterprise: server khusus) | Ya | Ya (kasus penggunaan inti) | Tidak |
Sumber: CometAPI dashboard, Portkey beranda, LiteLLM GitHub, Cloudflare AI Gateway dokumentasi
Menghubungkan ke Setiap Gateway
Keempat gateway mengekspos endpoint yang kompatibel dengan OpenAI, yang berarti struktur klien yang sama bekerja untuk semuanya — Anda mengubah base_url, kredensial, dan pada kasus Portkey, cara Anda menentukan model.
Python
import osfrom openai import OpenAIdef require_env(name: str) -> str: """Angkat error yang jelas jika variabel lingkungan wajib tidak ada.""" val = os.environ.get(name) if not val: raise ValueError(f"Variabel lingkungan yang diperlukan tidak ada: {name}") return val# ── CometAPI ────────────────────────────────────────────────────────────────# Reseller hosted dengan 500+ model. Gunakan pengidentifikasi model CometAPI (mis. "gpt-5.4").cometapi_client = OpenAI( base_url="https://api.cometapi.com/v1", api_key=require_env("COMETAPI_KEY"),)# ── Portkey ─────────────────────────────────────────────────────────────────# Gateway hosted dengan observabilitas dan 1,600+ LLM.# Rute ke penyedia dengan menambahkan prefiks pada nama model: "@openai/gpt-4o", "@anthropic/claude-3-5-sonnet", dll.# x-portkey-api-key wajib; ini mengautentikasi permintaan ke gateway Portkey.portkey_client = OpenAI( base_url="https://api.portkey.ai/v1", api_key=require_env("PORTKEY_API_KEY"), default_headers={ "x-portkey-api-key": require_env("PORTKEY_API_KEY"), },)# ── LiteLLM ──────────────────────────────────────────────────────────────────# Proksi self-hosted. Kredensial penyedia (OPENAI_API_KEY, dll.) diatur di sisi server.# Secara default proksi tidak memvalidasi kunci API klien — "anything" berfungsi.# Jika Anda mengaktifkan kunci virtual di instance LiteLLM Anda, berikan kunci virtual sebagai gantinya.litellm_client = OpenAI( base_url=os.environ.get("LITELLM_BASE_URL", "http://localhost:4000"), api_key=os.environ.get("LITELLM_API_KEY", "anything"),)# ── Cloudflare AI Gateway ───────────────────────────────────────────────────# Pass-through berbasis URL. Pertahankan kunci API penyedia asli Anda — Cloudflare tidak menggantikannya.cf_account_id = require_env("CF_ACCOUNT_ID")cf_gateway_id = require_env("CF_GATEWAY_ID")cloudflare_client = OpenAI( base_url=( f"https://gateway.ai.cloudflare.com/v1" f"/{cf_account_id}/{cf_gateway_id}/openai" ), api_key=require_env("OPENAI_API_KEY"),)def ask(client: OpenAI, model: str, question: str) -> str: """ Pembungkus minimal yang menunjukkan pola pemanggilan umum di keempat gateway. Format model bervariasi per gateway: CometAPI: "gpt-5.4", "claude-opus-4-7", dll. (pengidentifikasi CometAPI) Portkey: "@openai/gpt-4o", "@anthropic/claude-3-5-sonnet", dll. LiteLLM: nama model apa pun yang Anda konfigurasikan di proksi Cloudflare: nama model standar OpenAI, mis. "gpt-4o" Fungsi ini tidak menangani finish_reason, tool_calls, atau error dari penyedia. Untuk penanganan error produksi, lihat: Cara Debug Kegagalan Generasi API AI. """ response = client.chat.completions.create( model=model, messages=[{"role": "user", "content": question}], ) return response.choices[0].message.content or ""
Node.js
import OpenAI from "openai";function requireEnv(name) { const val = process.env[name]; if (!val) throw new Error(`Variabel lingkungan yang diperlukan tidak ada: ${name}`); return val;}// ── CometAPI ────────────────────────────────────────────────────────────────const cometClient = new OpenAI({ baseURL: "https://api.cometapi.com/v1", apiKey: requireEnv("COMETAPI_KEY"),});// ── Portkey ─────────────────────────────────────────────────────────────────// Rute ke penyedia dengan menambahkan prefiks pada model: "@openai/gpt-4o", "@anthropic/claude-3-5-sonnet"const portkeyClient = new OpenAI({ baseURL: "https://api.portkey.ai/v1", apiKey: requireEnv("PORTKEY_API_KEY"), defaultHeaders: { "x-portkey-api-key": requireEnv("PORTKEY_API_KEY"), },});// ── LiteLLM ──────────────────────────────────────────────────────────────────// Self-hosted. Mode default menerima nilai kunci API apa pun.// Setel LITELLM_BASE_URL jika server Anda berjalan di host atau port berbeda.const litellmClient = new OpenAI({ baseURL: process.env.LITELLM_BASE_URL ?? "http://localhost:4000", apiKey: process.env.LITELLM_API_KEY ?? "anything",});// ── Cloudflare AI Gateway ───────────────────────────────────────────────────const cfClient = new OpenAI({ baseURL: `https://gateway.ai.cloudflare.com/v1/${requireEnv("CF_ACCOUNT_ID")}/${requireEnv("CF_GATEWAY_ID")}/openai`, apiKey: requireEnv("OPENAI_API_KEY"),});/** * Pembungkus minimal yang menunjukkan pola pemanggilan umum. * Format model bervariasi per gateway — lihat contoh Python di atas untuk detail. * Tidak menangani finish_reason atau pemulihan error; tambahkan itu untuk penggunaan produksi. */async function ask(client, model, question) { const response = await client.chat.completions.create({ model, messages: [{ role: "user", content: question }], }); return response.choices[0].message.content ?? "";}
Pola koneksi sama di keempatnya. Perbedaan yang bermakna muncul di tempat lain: apa yang bisa Anda observasi, apa yang bisa Anda kontrol, dan apa yang terjadi ketika sesuatu gagal.
Kelebihan Masing-Masing Alat
CometAPI
Penawaran utama CometAPI adalah katalog hosted dengan lebih dari 500 endpoint model, termasuk model pembuatan gambar dan video di samping model teks. Penetapan harga berjalan melalui sistem rasio berbasis grup — grup default menerapkan pengali 0.8x terhadap tarif dasar CometAPI. Anda dapat mengonfigurasi grup rasio berbeda untuk penggunaan internal (0.1x) versus pelanggan berbayar, yang membuatnya praktis untuk membangun produk bertingkat tanpa mengelola akun terpisah.
Dasbor memberi Anda empat jenis log (panggilan API standar, pembuatan gambar, pembuatan video, Midjourney), tampilan uptime 30 hari, dan batas kredit per kunci. Batas kredit memungkinkan Anda memberikan kunci API ke klien atau kontraktor dengan plafon pengeluaran yang ketat, yang menyelesaikan masalah nyata saat Anda mendistribusikan akses ke akun bersama.
Yang tidak ditawarkan CometAPI: self-hosting (pelanggan enterprise dapat meminta server khusus, tetapi ini bukan opsi self-hosted standar), rate limiting di level gateway, atau SSO.
Kecocokan terbaik: Pengembang indie dan tim kecil yang ingin merutekan ke banyak model — termasuk gambar dan video — dengan satu kunci API dan satu hubungan penagihan, serta membutuhkan kontrol anggaran per kunci.
Portkey
Portkey adalah gateway hosted yang dibangun seputar observabilitas. Ini memberi Anda akses ke 1,600+ LLM melalui API terpadu, dengan perutean dilakukan dengan menambahkan prefiks penyedia pada nama model (@openai/gpt-4o, @anthropic/claude-3-5-sonnet). Ini berarti Anda tidak memerlukan konfigurasi klien terpisah untuk setiap penyedia — satu klien Portkey menangani semuanya, dan Anda menukar string model.
Di luar perutean, Portkey menyediakan pelacakan permintaan, versi prompt, dan perutean fallback yang Anda konfigurasikan di dasbor alih-alih di kode. Opsi self-hosting berarti Anda dapat menjalankan Portkey di infrastruktur Anda sendiri jika kepatuhan membutuhkannya.
Repositori GitHub untuk gateway sumber terbuka Portkey aktif dipelihara — periksa jumlah bintang saat ini secara langsung alih-alih mengandalkan angka apa pun di sini, karena sering berubah.
Kecocokan terbaik: Tim yang membutuhkan jejak audit, perutean multi-penyedia dari satu konfigurasi klien, atau ingin mengelola eksposur kunci API di antara para pengembang.
LiteLLM
LiteLLM adalah paket Python dan server proksi, bukan layanan hosted. Anda menjalankannya sendiri. Ini merupakan perbedaan yang bermakna: tidak ada pihak ketiga yang menangani permintaan Anda atau memegang kunci API Anda. Kredensial penyedia (kunci OpenAI, kunci Anthropic, dll.) diatur sebagai variabel lingkungan sisi server; klien hanya menunjuk ke proksi lokal.
Secara default, LiteLLM tidak memvalidasi kunci API yang dikirim klien — nilai apa pun berfungsi. Jika Anda mengaktifkan manajemen kunci virtual, klien mengirim kunci virtual yang divalidasi LiteLLM terhadap basis datanya sendiri. Bagaimanapun, proksi menerjemahkan permintaan berformat OpenAI ke format apa pun yang diharapkan penyedia hulu, sehingga kode aplikasi Anda tidak berubah saat Anda menambahkan penyedia baru.
Trade-off-nya adalah beban operasional: Anda bertanggung jawab untuk menjalankan, menskalakan, dan memperbarui server.
Kecocokan terbaik: Tim dengan kapasitas devops, organisasi dengan batasan kepatuhan yang melarang proksi API pihak ketiga, atau siapa pun yang menginginkan perutean lintas penyedia tanpa mempercayakan konten permintaan ke vendor SaaS.
Cloudflare AI Gateway
Cloudflare AI Gateway secara struktural berbeda dari tiga lainnya. Anda tidak mengubah kunci API atau membayar Cloudflare untuk akses model. Sebagai gantinya, Anda mengganti base URL penyedia dengan URL yang dikelola Cloudflare yang menambahkan logging, caching, dan rate limiting di edge.
Karena Cloudflare berada di antara aplikasi Anda dan penyedia, ia dapat men-cache permintaan yang identik — berguna jika aplikasi Anda mengirim prompt yang sama berulang kali. Tier gratis mencakup sebagian besar kasus penggunaan pengembang indie. Batasannya adalah cakupan: Cloudflare tidak mengagregasi model lintas penyedia. Anda tetap membutuhkan akun dan kunci penyedia terpisah untuk setiap penyedia yang Anda gunakan.
Kecocokan terbaik: Pengembang yang sudah berada di infrastruktur Cloudflare, atau siapa pun yang menginginkan caching dan logging di atas akun penyedia yang ada tanpa memperkenalkan hubungan penagihan baru atau mengubah kunci API.
Pencocokan Skenario
| Skenario | Alat yang direkomendasikan | Alasan |
|---|---|---|
| Aplikasi indie, ingin mencoba 10+ model dengan satu kunci API | CometAPI | Katalog luas, penyiapan sederhana, batas kredit per kunci |
| Butuh pembuatan gambar + video dalam integrasi yang sama | CometAPI | Endpoint terpadu untuk model teks, gambar, dan video |
| Tim beranggotakan 5, perlu melacak siapa memakai model apa | Portkey | Pelacakan permintaan, manajemen tim |
| Rute ke 1,600+ LLM dengan satu konfigurasi klien | Portkey | Perutean @provider/model, tanpa setup per penyedia |
| Ingin perutean fallback lintas penyedia tanpa ubah kode | Portkey | Konfigurasi fallback deklaratif di dasbor |
| Enterprise dengan kebutuhan residensi data | LiteLLM (self-hosted) | Tidak ada penanganan trafik oleh pihak ketiga |
| Anggaran nol, nyaman mengelola sendiri | LiteLLM | Sumber terbuka, tanpa biaya platform |
| Sudah memakai OpenAI langsung, ingin caching | Cloudflare AI Gateway | Cukup ganti URL, tanpa hubungan penagihan baru |
| Butuh RBAC untuk banyak tim | Portkey atau LiteLLM | Keduanya punya manajemen tim/peran; CometAPI dan Cloudflare tidak |
Apa yang Tidak Dicakup oleh Keempat Ini
Perbandingan ini mencakup gateway yang paling sering muncul dalam diskusi pengembang indie. Pasar mencakup opsi lain yang patut diketahui: Helicone berfokus pada observabilitas tanpa bertindak sebagai proksi, OpenRouter mengkhususkan diri pada perutean ke model open-weight dan riset, dan AWS Bedrock adalah layanan AI terkelola Amazon yang ditujukan untuk beban kerja enterprise. Jika kebutuhan Anda tidak cocok dengan keempat di atas, itu adalah tempat berikutnya untuk dilihat.
Melakukan Peralihan
Jika Anda saat ini memanggil penyedia secara langsung dan mempertimbangkan gateway, perubahan kode kecil. Untuk CometAPI, Anda menambahkan satu variabel lingkungan dan mengubah base_url. Untuk Portkey, Anda menambahkan header dan mengubah cara Anda menentukan model (@openai/gpt-4o alih-alih gpt-4o). Untuk Cloudflare, Anda mengubah URL tanpa menyentuh kunci API penyedia. Untuk LiteLLM, Anda menjalankan server lokal terlebih dahulu, kemudian arahkan klien Anda ke sana.
Pertanyaan yang lebih besar bukan bagaimana melakukan peralihan, melainkan apakah Anda membutuhkannya. Jika Anda memanggil satu penyedia, tidak memiliki masalah visibilitas biaya, dan tidak perlu perutean lintas model, gateway menambah kompleksitas tanpa manfaat. Jika Anda menggunakan banyak penyedia, mendistribusikan kunci ke kontraktor, atau mendapati tagihan tak terduga menjadi masalah berulang, overhead integrasi sepadan.
FAQ
Bisakah saya menggunakan gateway ini bersamaan?
Bisa. Beberapa tim menjalankan LiteLLM self-hosted untuk beban kerja sensitif dan CometAPI untuk yang lainnya. Cloudflare AI Gateway dapat ditempatkan di depan permintaan CometAPI jika Anda menginginkan lapisan caching Cloudflare di atasnya — meski ini menambah satu lompatan jaringan.
Apakah gateway ini menyimpan prompt saya?
Tergantung alat dan konfigurasi Anda. Portkey dan CometAPI mencatat permintaan secara default; keduanya memiliki pengaturan retensi. LiteLLM hanya menyimpan apa yang Anda konfigurasikan untuk disimpan, di infrastruktur Anda sendiri. Perilaku logging Cloudflare dijelaskan dalam dokumentasi AI Gateway mereka. Baca ketentuan privasi untuk layanan hosted apa pun sebelum mengirim konten sensitif melaluinya.
Apa yang terjadi jika gateway down?
Untuk gateway hosted (CometAPI, Portkey, Cloudflare), downtime gateway berarti aplikasi Anda tidak dapat menjangkau penyedia AI melalui jalur itu. LiteLLM yang berjalan lokal memiliki karakteristik ketersediaan yang sama dengan server Anda sendiri. Sebelum berkomitmen pada gateway hosted untuk produksi, periksa SLA-nya dan apakah ia menawarkan fallback ke penyedia langsung jika gateway-nya sendiri tidak tersedia.
Apakah ada cara gratis untuk evaluasi sebelum berkomitmen?
Ada. CometAPI dan Portkey sama-sama memiliki tier gratis. LiteLLM adalah sumber terbuka dan hanya memerlukan biaya infrastruktur yang Anda jalankan. Cloudflare AI Gateway gratis dalam batas yang cukup longgar. Anda dapat menjalankan keempatnya dengan prompt uji yang sama sebelum membuat keputusan.
Bagaimana saya memilih nama model yang tepat untuk tiap gateway?
Setiap gateway memiliki konvensinya masing-masing. CometAPI menggunakan pengidentifikasi sendiri (gpt-5.4, claude-opus-4-7). Portkey menggunakan format @provider/nama-model (@openai/gpt-4o, @anthropic/claude-3-5-sonnet). LiteLLM menggunakan nama model yang Anda definisikan dalam konfigurasi proksi Anda. Cloudflare meneruskan nama model standar penyedia tanpa perubahan. Periksa dokumentasi tiap gateway untuk daftar model terkini sebelum menulis kode.
Apakah beralih gateway memengaruhi rate limit yang ada?
Ya. Jika Anda beralih dari panggilan OpenAI langsung ke gateway yang mengelola hubungan dengan penyedia (seperti CometAPI), rate limit efektif Anda ditentukan oleh akun gateway tersebut dengan OpenAI, bukan akun pribadi Anda. Verifikasi perilaku rate limit dengan gateway sebelum memigrasikan trafik produksi.
