Cara Menggunakan LLM Lokal Sebagai API

INEZA Felin-Michel

INEZA Felin-Michel

26 May 2026

Cara Menggunakan LLM Lokal Sebagai API

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

Laptop Anda dapat menjalankan model parameter 70B di balik endpoint berbentuk OpenAI yang sama dengan yang Anda gunakan dalam produksi. Ganti satu URL dasar dan kode Anda tetap berfungsi. Perubahan tunggal itu membuka pengembangan offline, biaya per-token nol, dan jalur pribadi untuk data yang diatur, itulah sebabnya Hacker News mendorong “AI Lokal harus menjadi norma” dari 633 menjadi 1.760 poin dalam sehari. Artikel di bawah ini menunjukkan cara memilih runtime, mengekspos endpoint, mengarahkan klien Anda ke sana, dan menguji seluruh alur dengan Apidog sebelum mempromosikan perubahan apa pun ke model yang di-host.

TL;DR

Anda dapat menjalankan API LLM lokal di laptop Anda dengan Ollama, vLLM, atau llama.cpp, dan masing-masing mengekspos endpoint REST yang kompatibel dengan OpenAI. Ubah base_url menjadi http://localhost:11434/v1 di klien OpenAI Anda yang sudah ada dan kode yang sama akan berjalan terhadap Llama 3.3, DeepSeek V4, atau Qwen 3.6 tanpa penulisan ulang. Jalankan seluruh alur dari Apidog agar pengujian skenario Anda tetap identik di seluruh lingkungan lokal dan hosted.

Pendahuluan

Tumpukan API LLM lokal beralih dari 'mainan penelitian' menjadi 'pengendara harian' dalam delapan belas bulan. Apple mengirimkan memori terpadu 128 GB pada M3 Max. Ollama mencapai satu juta unduhan mingguan. vLLM melewati batas 30.000 bintang GitHub. Namun, perubahan terbesar adalah sosial. Setiap runtime utama sekarang berbicara format OpenAI /v1/chat/completions. Anda tidak lagi mempertahankan dua jalur klien. Panggilan SDK yang sama mencapai localhost atau api.openai.com berdasarkan satu variabel lingkungan.

Ini penting bagi pengembang API karena peralatan Anda yang sudah ada tetap berfungsi. Template permintaan Anda di Apidog menunjuk ke https://api.openai.com/v1/chat/completions. Ganti variabel URL dasar, tekan Kirim, dan Anda akan mendapatkan JSON yang sama kembali dari model yang berjalan di GPU Anda sendiri. Tidak ada skema baru. Tidak ada alur otentikasi baru. Jika Anda sudah melacak pengeluaran API per fitur, Anda dapat melakukan A/B testing model lokal terhadap model hosted dan melihat garis biaya menurun sementara latensi meningkat.

Panduan ini membahas pilihan runtime, pengaturan server, koneksi klien, pengujian skenario, trade-off kuantisasi, dan tabel biaya-vs-latensi untuk empat model saat ini. Contoh kode diuji terhadap Ollama 0.6 dan vLLM 0.7 di macOS 15.4 dan Ubuntu 24.04. Untuk gambaran pilihan yang lebih luas, lihat LLM Lokal Terbaik 2026. Referensi eksternal untuk setiap klaim berada di bagian bawah.

button

Mengapa LLM lokal masuk akal bagi pengembang API

Anda mengirimkan kode yang memanggil LLM. Anda juga men-debug kode tersebut di pesawat, di konferensi dengan Wi-Fi buruk, dan di dalam jaringan pelanggan yang memblokir keluar ke *.openai.com. API LLM lokal memberi Anda lingkungan pengembangan yang mencerminkan produksi tanpa ketergantungan jaringan.

Aspek privasi adalah yang paling menonjol. HIPAA, GDPR, dan UU AI UE semuanya memperlakukan prompt sebagai data pengguna saat mereka menyertakan catatan pasien, kontrak, atau pengenal biometrik. Mengirimkan payload tersebut ke endpoint yang di-host menciptakan hubungan pemroses data yang harus Anda dokumentasikan, audit, dan perbarui. Model yang tidak pernah meninggalkan perangkat keras Anda melewatkan semua birokrasi itu sepenuhnya. Panduan Dewan Perlindungan Data Eropa tahun 2024 tentang pemrosesan AI mencatat bahwa inferensi di perangkat menghilangkan sebagian besar kewajiban transfer lintas batas berdasarkan Pasal 44.

Biaya bertambah ke arah lain. Tim yang menjalankan 50 juta token prompt per hari melalui GPT-5.5 Instant membayar sekitar $250 per hari dengan $5 per juta token. Volume yang sama pada M3 Max studio seharga $4.500 akan mencapai titik impas (amortisasi nol) setelah delapan belas hari pemanfaatan penuh, mengabaikan biaya listrik. Anda dapat membaca rincian angka-angka tersebut di Cara menggunakan GPT-5.5 Instant dan menerapkan aritmetika yang sama pada beban kerja Anda sendiri.

Alasan ketiga adalah determinisme. Model yang di-host mengubah bobot di belakang Anda. Halaman penghentian model OpenAI mencantumkan sebelas penghentian snapshot dalam dua belas bulan terakhir. Model lokal adalah file di disk. Ini menghasilkan logit yang sama hari ini dan dalam tiga tahun. Stabilitas itu penting ketika rangkaian regresi Anda bergantung pada keluaran LLM. Endpoint yang kompatibel dengan OpenAI mengubah permainan karena Anda tidak lagi membayar 'pajak integrasi' untuk stabilitas itu. SDK yang sudah Anda gunakan berfungsi.

Tiga runtime yang menyediakan endpoint yang kompatibel dengan OpenAI

Empat runtime mendominasi ruang API LLM lokal pada tahun 2026. Tiga di antaranya menyediakan server REST yang kompatibel dengan OpenAI secara langsung. Yang keempat, llama.cpp, menyertakannya sebagai bagian dari biner llama-server-nya. Pilih berdasarkan beban kerja, bukan popularitas.

Ollama

Ollama adalah jalur masuk termudah. Satu biner, satu CLI, satu server HTTP di port 11434. Ini menargetkan pengembang yang menjalankan satu model di satu mesin dan menangani unduhan model, kuantisasi GGUF, serta template prompt untuk Anda.

## install on macOS
brew install ollama
ollama serve &
ollama pull llama3.3:70b-instruct-q4_K_M
ollama run llama3.3:70b-instruct-q4_K_M

Setelah ollama serve berjalan, endpoint yang kompatibel dengan OpenAI berada di http://localhost:11434/v1. Ini mendukung obrolan, embeddings, dan streaming. Batas throughput pada M3 Max dengan model 70B Q4_K_M berada di sekitar 12 token per detik. Model yang lebih kecil mencapai 80 hingga 120 token per detik. Ollama adalah pilihan yang tepat untuk pengembangan pengguna tunggal, demo, dan CI runner.

vLLM

vLLM adalah opsi kelas produksi. Ini menggunakan PagedAttention dan batching berkelanjutan untuk meningkatkan throughput dua hingga empat kali lebih tinggi daripada runner biasa. Ini melayani di port 8000 secara default dan mengekspos API yang kompatibel dengan OpenAI di /v1. Anda dapat membaca detail arsitektur di makalah vLLM pada referensi Kwon et al. SOSP 2023 di bawah ini.

pip install vllm
vllm serve meta-llama/Llama-3.3-70B-Instruct \
  --port 8000 \
  --gpu-memory-utilization 0.9 \
  --max-model-len 8192

Pada satu H100, vLLM melayani Llama 3.3 70B pada sekitar 2.400 token per detik di seluruh permintaan bersamaan. Ini membutuhkan GPU CUDA atau kartu AMD ROCm terbaru dan tidak berjalan di Apple Silicon, yang menjadikannya pilihan yang salah untuk laptop dan pilihan yang tepat untuk kluster pengembangan bersama.

llama.cpp

llama.cpp adalah runtime C++ yang memulai ekosistem GGUF. Ini berjalan di mana saja, mulai dari Raspberry Pi 5 hingga rig dual-RTX-5090. Biner llama-server-nya berbicara format OpenAI pada /v1/chat/completions.

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp && make -j LLAMA_METAL=1
./llama-server -m models/llama-3.3-70b-q4_k_m.gguf \
  --port 8080 --host 0.0.0.0 -c 8192 -ngl 99

Flag -ngl 99 mengalihkan semua lapisan ke GPU. llama.cpp memberi Anda kontrol paling besar atas kuantisasi, batching, dan pemetaan memori. Ini adalah pilihan yang tepat ketika Anda perlu menempatkan model ke dalam 16 GB VRAM atau menguji perangkat keras eksotis.

LM Studio dan Jan membungkus llama.cpp dalam GUI dan juga mengekspos endpoint OpenAI pada port yang dapat dikonfigurasi. Mereka berguna untuk pengguna non-teknis di tim Anda yang perlu menguji prompt tanpa menyentuh terminal.

Pemeriksaan Python sederhana bahwa endpoint berfungsi:

from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
resp = client.chat.completions.create(
    model="llama3.3:70b-instruct-q4_K_M",
    messages=[{"role": "user", "content": "Reply with the word OK only."}],
)
print(resp.choices[0].message.content)

Jika Anda melihat OK, runtime, port, dan kontrak SDK semuanya cocok. Anda siap untuk mengintegrasikan endpoint ke dalam peralatan Anda.

Uji LLM lokal Anda dengan Apidog

API LLM lokal hanya berguna jika rangkaian pengujian Anda dapat memanggilnya dengan cara yang sama seperti memanggil produksi. Apidog menanganinya dengan variabel lingkungan pada template permintaan, yang berarti satu proyek mencakup kedua target.

Alurnya memiliki lima langkah.

  1. Buka proyek Apidog Anda dan buat lingkungan baru bernama Local. Tambahkan variabel BASE_URL dengan nilai http://localhost:11434/v1. Tambahkan API_KEY dengan nilai ollama. Simpan.
  2. Kloning lingkungan OpenAI Anda yang sudah ada, ganti namanya menjadi Production, pertahankan BASE_URL sebagai https://api.openai.com/v1 dan API_KEY sebagai kunci hosted Anda.
  3. Dalam setiap permintaan yang memanggil endpoint obrolan, ganti host yang di-hardcode dengan {{BASE_URL}} dan header otentikasi dengan Bearer {{API_KEY}}. URL permintaan menjadi {{BASE_URL}}/chat/completions.
  4. Buat pengujian skenario yang memicu permintaan, menegaskan choices[0].message.role == "assistant", menegaskan choices[0].message.content tidak kosong, dan menegaskan usage.total_tokens > 0. Simpan skenarionya.
  5. Jalankan skenario terhadap Local. Alihkan dropdown lingkungan ke Production. Jalankan lagi. Asersi harus berhasil untuk keduanya.

Skenario yang sama berfungsi ganda sebagai pengujian smoke untuk peningkatan runtime. Setelah ollama pull pada tag baru, jalankan ulang skenario Local. Jika bentuk respons berubah, Anda akan mengetahuinya sebelum kode aplikasi apa pun menyentuh bobot baru. Pola ini meluas ke pengujian agen AI yang memanggil API multi-langkah.

Untuk penggunaan terprogram, OpenAI Python SDK beralih target dengan satu argumen kata kunci:

import os
from openai import OpenAI

def get_client():
    if os.getenv("ENV") == "local":
        return OpenAI(
            base_url="http://localhost:11434/v1",
            api_key="ollama",
        )
    return OpenAI(api_key=os.environ["OPENAI_API_KEY"])

client = get_client()
response = client.chat.completions.create(
    model=os.getenv("MODEL", "llama3.3:70b-instruct-q4_K_M"),
    messages=[
        {"role": "system", "content": "You are a JSON-only assistant."},
        {"role": "user", "content": "Return {\"status\": \"ok\"}."},
    ],
    response_format={"type": "json_object"},
)
print(response.choices[0].message.content)

Bentuk JavaScript mencerminkan ini:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: process.env.ENV === "local"
    ? "http://localhost:11434/v1"
    : "https://api.openai.com/v1",
  apiKey: process.env.ENV === "local" ? "ollama" : process.env.OPENAI_API_KEY,
});

const resp = await client.chat.completions.create({
  model: process.env.MODEL || "llama3.3:70b-instruct-q4_K_M",
  messages: [{ role: "user", content: "Say hi." }],
});
console.log(resp.choices[0].message.content);

Sematkan runner skenario Apidog ke CI Anda dengan mengekspor proyek sebagai koleksi apidog-cli dan memanggil apidog run di GitHub Actions. Runner mengembalikan exit non-nol pada kegagalan asersi, yang menggagalkan build saat kontrak lokal atau hosted menyimpang. Insinyur QA dapat mengintegrasikan alur yang sama ke dalam pipeline pengujian API yang sudah ada.

Teknik Lanjutan dan Tips Pro

Kuantisasi adalah tuas yang menentukan apakah model 70B dapat dimuat di laptop Anda. Format GGUF menyimpan bobot pada 8, 6, 5, 4, 3, atau 2 bit per parameter. Q4_K_M adalah default karena suatu alasan. Ini kehilangan 0,6 poin persentase pada benchmark MMLU dibandingkan FP16 dan menyusutkan model 70B dari 140 GB menjadi 40 GB. Q8 membuat Anda dalam 0,1 poin dari FP16 tetapi menggandakan jejak disk dan RAM. Q2_K menghemat ruang tetapi dampak perplexity terlihat dalam tugas apa pun dengan konteks panjang. Pilih Q4_K_M untuk obrolan, Q8 untuk pembuatan kode, dan Q5_K_M ketika Anda memiliki RAM dan menginginkan margin keamanan.

Offload GPU melalui flag -ngl di llama.cpp atau opsi num_gpu di Ollama mengontrol berapa banyak lapisan transformer yang berada di GPU. Atur setinggi yang diizinkan VRAM Anda. Setiap lapisan yang kembali ke CPU mengurangi throughput sekitar 30 persen. Pada kartu 24 GB, model 70B Q4 dapat memuat 40 dari 80 lapisan. Pada 48 GB Anda dapat memuat seluruh tumpukan.

Pemetaan memori (mmap) aktif secara default di llama.cpp dan Ollama. Ini memungkinkan OS memuat bobot sesuai permintaan alih-alih mengalokasikan model penuh saat startup. Biarkan aktif kecuali Anda berjalan dalam wadah dengan batas memori yang ketat. Dengan mmap nonaktif, latensi token pertama turun sekitar 200 ms tetapi penggunaan RAM berlipat ganda.

Batching adalah kekuatan super vLLM. Kirim 32 permintaan bersamaan dan vLLM mengelompokkannya menjadi satu pass GPU. Throughput berskala mendekati linear ke batas komputasi GPU. Atur --max-num-seqs 64 untuk laptop dengan memori CPU bersama dan --max-num-seqs 256 untuk perangkat keras kelas H100.

Respons streaming mengurangi latensi yang dirasakan menjadi separuhnya. Atur stream=True di OpenAI SDK dan server akan mengirim token saat dihasilkan. Byte pertama tiba dalam 200 hingga 500 ms daripada menunggu penyelesaian penuh. Setiap runtime dalam panduan ini mendukungnya.

Modelfile Ollama memungkinkan Anda memasukkan prompt sistem, suhu, dan urutan penghentian ke dalam model bernama sehingga kode aplikasi Anda tetap bersih. Jalankan ollama create my-assistant -f Modelfile sekali dan klien Anda akan menunjuk ke my-assistant alih-alih mengulang prompt sistem di setiap permintaan.

Kesalahan Umum

Lokal vs Hosted: Perhitungan Biaya dan Latensi

Angka-angka di bawah mengasumsikan M3 Max dengan memori terpadu 128 GB untuk lokal, dan harga publik saat ini untuk endpoint hosted. Waktu token pertama (TTFT) diukur dalam kondisi 'dingin', tanpa batching, pada prompt 1.024 token.

Model TTFT Lokal Throughput Lokal Setara Hosted Harga Hosted TTFT Hosted
Llama 3.3 70B Q4_K_M 1.2 dtk 12 tok/dtk GPT-5.5 Instant $5 / $30 per 1 Juta 200 ms
DeepSeek V4 67B Q4_K_M 1.4 dtk 10 tok/dtk DeepSeek-Chat hosted $0.55 / $2.20 per 1 Juta 280 ms
Qwen 3.6 32B Q5_K_M 0.7 dtk 28 tok/dtk Qwen-Max hosted $1.60 / $6.40 per 1 Juta 240 ms
Gemma 4 27B Q4_K_M 0.5 dtk 35 tok/dtk Gemini 3 Flash $0.35 / $1.05 per 1 Juta 180 ms

Kolom hosted selalu unggul dalam latensi. Kolom lokal unggul dalam biaya saat Anda melewati sekitar 10 juta token per hari, dan unggul dalam privasi sejak permintaan pertama. Untuk pengembangan, Anda hampir selalu menginginkan lokal. Untuk produksi yang berhadapan dengan pengguna, Anda hampir selalu menginginkan hosted, kecuali klasifikasi data Anda melarangnya.

Pola praktis: jalankan lokal selama siklus pengembangan internal, beralih ke hosted di staging, jaga kedua target tetap hijau di CI. Pengujian skenario Apidog dari bagian di atas mendukung pola itu dengan satu sakelar lingkungan. Untuk benchmark yang lebih mendalam pada model individu, lihat Cara menjalankan DeepSeek V4 secara lokal dan panduan penggunaan DeepSeek V4 yang asli.

Kasus Penggunaan Dunia Nyata

Tim kepatuhan fintech di Singapura menggunakan Ollama di laptop insinyur untuk menyusun laporan aktivitas mencurigakan. Prompt tersebut berisi nomor rekening dan pola transaksi yang tidak boleh meninggalkan negara di bawah aturan MAS. Endpoint hosted yang mereka gunakan dalam produksi mendapatkan versi yang disunting dari prompt yang sama. Skenario Apidog menegaskan bahwa redactor berjalan pada setiap permintaan sebelum meninggalkan localhost.

Sebuah studio game di Stockholm melatih intern desainer tentang rekayasa prompt dengan instans Qwen 3.6 lokal. Gratis, offline, dan mustahil membocorkan lore game berikutnya kepada pihak ketiga. Proyek yang sama dikirimkan terhadap Gemini 3 Flash dalam produksi dengan satu perubahan variabel lingkungan. Mereka menggunakan kembali panduan API Gemini 3 Flash untuk koneksi produksi.

Startup perawatan kesehatan menjalankan vLLM pada A100 yang disewa di dalam jaringan rumah sakit pelanggan. Endpoint tidak pernah terlihat oleh DNS publik. Pengujian integrasi mereka berjalan dari agen Jenkins di VLAN yang sama terhadap SDK OpenAI yang sama yang mereka gunakan secara lokal. Kode yang sama, tiga target deployment, satu rangkaian skenario.

Kesimpulan

Tumpukan API LLM lokal berkembang pesat. Anda dapat memindahkan prompt Anda dari endpoint hosted tanpa menulis ulang klien, pengujian, atau CI Anda. Lima langkah yang mewujudkannya:

Sinyal HN yang mendorong “AI Lokal harus menjadi norma” melewati 1.700 poin adalah hasil dari kematangan ini. Setelah permukaan API stabil, setiap alat pengembang langsung menyesuaikan diri dengannya. Unduh Apidog dan arahkan satu lingkungan ke http://localhost:11434/v1 untuk melihat seberapa cepat siklusnya tertutup. Jika Anda belum memilih model, mulailah dengan LLM Lokal Terbaik 2026, dan jika Anda ingin menyelami lebih dalam pengujian alur agensial di atas endpoint ini, baca Cara menguji API agen AI.

button

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.