Kursus → Modul 3: Web Interface vs API: Pembatas Profesional
Sesi 4 dari 7

Claude, Gemini, GPT, DeepSeek, Mistral. Nama-namanya berubah. Model baru diluncurkan tiap beberapa bulan. Kalau kamu belajar keunikan satu API dan bangun semuanya di sekitar implementasi spesifik itu, kamu rapuh. Kalau kamu belajar arsitektur bersama yang semua API pakai, kamu portabel.

Setiap LLM API besar mengikuti pola dasar yang sama. Pelajari sekali, dan pindah provider jadi perubahan konfigurasi, bukan proyek membangun ulang.

Arsitektur Universal

Setiap LLM API terdiri dari empat komponen: autentikasi, endpoint, parameter, dan respons terstruktur. Detailnya berbeda antar provider, tapi konsepnya identik.

graph LR A["Autentikasi
(API Key)"] --> B["Endpoint
(URL)"] B --> C["Parameter
(model, temperature,
max token, messages)"] C --> D["Respons Terstruktur
(JSON dengan konten,
usage, metadata)"] style A fill:#2a2a28,stroke:#c8a882,color:#ede9e3 style B fill:#2a2a28,stroke:#6b8f71,color:#ede9e3 style C fill:#2a2a28,stroke:#8a8478,color:#ede9e3 style D fill:#2a2a28,stroke:#c47a5a,color:#ede9e3

Komponen 1: Autentikasi

Setiap API butuh bukti bahwa kamu boleh memakainya. Bukti ini adalah API key, string karakter panjang yang berfungsi sebagai identitas sekaligus password kamu. Kamu sertakan di setiap request, biasanya di HTTP header. Provider memakainya untuk mengidentifikasi akun kamu, melacak usage, dan menagih kamu.

Semua provider besar pakai pola yang sama: kamu bikin akun, generate API key di dashboard, dan simpan dengan aman di environment kamu (jangan pernah di kode). Key-nya masuk di Authorization header setiap request.

Komponen 2: Endpoint

Endpoint adalah URL tempat kamu kirim request. Setiap provider punya satu endpoint utama untuk text generation. URL-nya beda, tapi apa yang kamu kirim dan apa yang kamu terima mengikuti struktur yang sama.

Provider Endpoint Text Generation Format Auth Header
Anthropic (Claude) api.anthropic.com/v1/messages x-api-key: YOUR_KEY
OpenAI (GPT) api.openai.com/v1/chat/completions Authorization: Bearer YOUR_KEY
Google (Gemini) generativelanguage.googleapis.com/v1beta/models/... API key di URL parameter atau OAuth
DeepSeek api.deepseek.com/v1/chat/completions Authorization: Bearer YOUR_KEY
Mistral api.mistral.ai/v1/chat/completions Authorization: Bearer YOUR_KEY

Perhatikan polanya. Kebanyakan provider mengadopsi format endpoint OpenAI (/v1/chat/completions) karena sudah jadi standar de facto. Anthropic memilih jalan berbeda (/v1/messages), tapi konsepnya identik: kirim POST request ke URL ini dengan prompt dan parameter kamu.

Komponen 3: Parameter

Setiap request text generation menyertakan parameter inti yang sama, walau nama field-nya sedikit bervariasi antar provider.

Konsep Apa yang Dikontrol Range Umum
Model Model mana yang memproses request kamu String spesifik provider (misal "claude-sonnet-4-20250514")
System prompt Instruksi persisten untuk model Teks bebas, panjang berapa pun dalam context window
Messages Percakapan: pesan user dan respons assistant Array pasangan role/content
Temperature Keacakan output (rendah = bisa diprediksi, tinggi = kreatif) 0.0 sampai 1.0 (beberapa sampai 2.0)
Max tokens Panjang maksimum respons 1 sampai batas output model
Top-p Threshold nucleus sampling 0.0 sampai 1.0

Parameter-nya sama di mana-mana. Pilihan model, system prompt, messages, temperature, max tokens. Pelajari apa fungsi masing-masing sekali, dan kamu paham API setiap provider.

Komponen 4: Respons Terstruktur

Setiap provider mengembalikan objek JSON berisi teks yang di-generate, statistik usage (input token, output token), dan metadata (versi model, alasan berhenti). Nama field-nya beda, tapi informasinya sama.

Respons selalu kasih tahu kamu: apa yang model generate, berapa token yang dikonsumsi (untuk billing), kenapa berhenti generate (kena batas token, selesai natural, atau difilter), dan versi model mana yang memproses request.

Prinsip Portabilitas

Karena semua provider berbagi arsitektur ini, kamu bisa mengabstraksi kode kamu jadi provider-agnostic. Tulis fungsi bernama generate_text() yang menerima system prompt, user prompt, dan parameter. Di dalam fungsi itu, API call pergi ke provider mana pun yang kamu pilih. Ganti provider, ganti satu fungsi. Sisa pipeline kamu ga peduli model mana yang generate teksnya.

graph TD A["Kode Pipeline Kamu"] --> B["Fungsi generate_text()"] B --> C{"Provider mana?"} C -->|"Config: anthropic"| D["Claude API call"] C -->|"Config: openai"| E["OpenAI API call"] C -->|"Config: google"| F["Gemini API call"] D --> G["Respons terstandarisasi"] E --> G F --> G G --> H["Sisa pipeline kamu"] style B fill:#2a2a28,stroke:#c8a882,color:#ede9e3 style G fill:#2a2a28,stroke:#6b8f71,color:#ede9e3

Portabilitas ini bukan cuma kemudahan teoritis. Harga model berubah. Model baru mengalahkan yang lama. Provider mengalami outage. Kalau pipeline kamu bisa ganti provider dengan mengubah variabel konfigurasi, kamu resilient. Kalau pipeline kamu hardcode ke satu provider, kamu dependent.

Bacaan Lanjutan

Tugas

  1. Kunjungi halaman dokumentasi setidaknya dua dari API ini: Claude API, Gemini API, dan OpenAI API.
  2. Untuk masing-masing, cari dan dokumentasikan: (1) Metode autentikasi, (2) URL endpoint utama text generation, (3) Parameter yang tersedia dan namanya, (4) Format respons dan field utama.
  3. Buat tabel perbandingan yang menunjukkan kesamaan dan perbedaannya. Perhatikan betapa banyak yang shared antar provider. Elemen shared itulah konsep yang perlu kamu pelajari. Perbedaannya cuma sintaks.