Menu

Saya telah mengurangi biaya API LLM sebesar 70%: Catatan praktis penggunaan AirAi untuk routing dan caching

0. Latar Belakang: Bagaimana biaya bisa melonjak begitu tinggi?

Saya mengerjakan beberapa proyek sampingan, dan di awalnya saya harus membeli langganan resmi seharga $20 per bulan, atau mencoba menggunakan kartu kredit internasional yang sering ditolak. Saat menghitung biaya di akhir bulan, saya menemukan dua hal yang sangat menyakitkan:

  1. 80% dari permintaan adalah tugas-tugas ringan seperti ringkasan, klasifikasi, dan pemformatan; menggunakan model yang paling mahal untuk tugas-tugas tersebut hanyalah pemborosan;

  1. Langganan merupakan biaya tetap—ketika jumlah panggilan sedikit, saya rugi, dan ketika jumlah panggilan banyak, model tersebut tidak cukup untuk memenuhi kebutuhan.

Jadi saya beralih ke AirAi: menggunakan kunci API saya sendiri, dengan sistem pembayaran berdasarkan penggunaan, dan mengarahkan klien ke antarmuka yang kompatibel dengan OpenAI.

Ada juga sebuah cerita kecil di sini. Saya selalu tidak memiliki kartu kredit internasional yang layak, dan setiap kali saya mencoba melakukan pembayaran melalui koneksi langsung dengan pihak resmi, transaksi tersebut ditolak. Untuk sementara waktu, saya menggunakan kartu keluarga, tetapi hal tersebut memicu sistem pengendalian risiko (risk control) dan akun saya langsung diblokir. Saya mengajukan banding dan membutuhkan waktu hampir dua minggu untuk akun saya dibuka kembali. Setelah itu, saya bertekad untuk hanya menggunakan layanan yang “tidak bergantung pada kartu kredit internasional”. Gateway yang akhirnya saya pilih hanya menerima pembayaran dalam bentuk USDT—bagi saya yang tidak memiliki kartu kredit internasional, ini merupakan pilihan dengan persyaratan yang paling rendah: saya bisa langsung mengisi ulang saldo dan menggunakannya, tanpa perlu membayar biaya bulanan atau melalui prosedur KYC (Know Your Customer). Yang paling penting adalah harganya: berdasarkan pengalaman saya, harga per transaksi hanya sekitar 10% dari harga yang ditawarkan oleh layanan koneksi langsung dengan pihak resmi, dan itulah alasan utama saya memilih gateway tersebut.

1. Pergantian baris: Mengarah ke gateway mana pun yang kompatibel

Hampir semua klien yang mendukung endpoint kustom (Claude Code, Cursor, Open WebUI, LibreChat, Cline, dll.) dapat diatur dengan satu baris variabel lingkungan tanpa perlu mengubah kode. Cukup arahkan kedua variabel berikut ke gateway Anda sendiri:

export OPENAI_BASE_URL="https://api.airai.cc/v1"
export ANTHROPIC_BASE_URL="https://api.airai.cc/v1"

Memilih gateway mana adalah hal yang berbeda; artikel ini hanya membahas tentang metode implementasinya.

2. Praktik Pemrograman: Routing + Caching

Tidak hanya mengganti sumber cahaya saja yang penting, hal yang benar-benar menghemat uang adalah “menggunakan model yang tepat untuk pekerjaan yang tepat + menyimpan hasil permintaan yang berulang”. Berikut adalah kerangka kerja yang saya gunakan dalam produksi (kompatibel dengan OpenAI SDK), di mana base_url dan api_key dibaca dari variabel lingkungan, bukan ditulis secara tetap dalam kode:

import openai, hashlib, os

client = openai.OpenAI(
    base_url=os.getenv("OPENAI_BASE_URL"),
    api_key=os.getenv("OPENAI_API_KEY"),
)

# Routing: small model for light tasks, flagship only for complex reasoning
CHEAP  = "gpt-5.6-luna"   # classification / summarization / formatting
STRONG = "gpt-5.6-sol"    # only called for complex reasoning

_cache: dict[str, str] = {}   # swap for Redis in production

def ask(prompt: str) -> str:
    model = STRONG if len(prompt) > 400 else CHEAP
    key = hashlib.md5(prompt.encode()).hexdigest()
    if key in _cache:                      # cache hit, 0 cost
        return _cache[key]
    resp = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}],
    )
    answer = resp.choices[0].message.content
    _cache[key] = answer
    return answer

CHEAP / STRONG Sesuaikan sesuai dengan anggaran dan hasil yang Anda inginkan. Nama model akan ditentukan berdasarkan dokumen gateway yang Anda gunakan. Untuk tugas offline, pastikan menggunakan antarmuka Batch, karena biasanya dapat menghemat setengah biaya.

3. Perbandingan Biaya (Ilustratif)

Sebelum dan sesudah perubahan:IlustrasiData (angka aktual harap referensi dari faktur Anda):

Proyek

Berlangganan Resmi / Langsung Terhubung

AirAi + Caching Rute

Metode Pembayaran

Biaya Bulanan Tetap / Harga Resmi

Pembayaran Berdasarkan Penggunaan

Model Ringan

Model Premium (Memboros)

Model kecil (lebih murah)

Permintaan yang diulang

Perhitungan ulang biaya penuh

Kesuksesan penggunaan cache: 0 (tidak ada biaya)

Biaya terkait pengalaman pengguna (user experience cost)

Nilai dasar: 100%

Kira-kira 10–30% (tergantung jumlah permintaan)

4. Batasan yang jujur (berbicaralah dengan jujur)

  • Tidak semua orang akan mendapatkan penghematan yang lebih besar:– Ketika jumlah permintaan bulanan sangat rendah, berlangganan tetap mungkin lebih menguntungkan; pembayaran berdasarkan jumlah penggunaan hanya akan menguntungkan ketika jumlah permintaan tinggi. Hitunglah jumlah permintaan Anda terlebih dahulu.

  • Keterlambatan dan stabilitas:– Penambahan lapisan gateway akan menambah sedikit keterlambatan, terutama pada jalur kritis yang mengalami timeout atau penurunan kualitas layanan.

  • Keamanan kunci:– Simpan kunci dalam variabel lingkungan, jangan tuliskannya secara tetap di frontend atau di repositori publik.

5. Kesimpulan

Esensi dari penghematan biaya menggunakan model LLM (Large Language Model) bisa dijelaskan dalam satu kalimat: biarkan model yang lebih murah melakukan sebagian besar pekerjaan, gunakan model yang lebih mahal hanya bila diperlukan, dan hilangkan semua pemborosan; ubah proses “berhubungan dengan N pihak” menjadi hanya perlu mengubah satu baris kode saja.base_url"Rute (routing) dan cache (penyimpanan data sementara) adalah dua komponen yang gratis; mari kita mulai dengan membangunnya terlebih dahulu."


Apakah ini membantu?

Dukungan teknisDukungan langsung
侧栏
Kembali ke atas
简体中文ZH-CNDefault繁體中文ZH-TWEnglishEN日本語JA한국어KOภาษาไทยTHTiếng ViệtVIBahasa IndonesiaIDEspañolESFrançaisFRDeutschDEРусскийRUPortuguêsPTItalianoITالعربيةAR