Program Reseller Cloud: Jual kembali Cloud VPS & Residential Proxy di bawah brand Anda 100% Whitelabel. Pelajari Reseller
Catatan rekayasa · 4 menit baca

Cara Membangun Smart AI Gateway dengan Node.js untuk Multi-LLM Routing

Pelajari cara membangun custom AI gateway menggunakan Node.js dan Express untuk melakukan routing cerdas ke berbagai Large Language Model secara efisien. Tingkatkan fleksibilitas aplikasi AI Anda tanpa terikat pada satu vendor saja.

Penulis
Dahono AI
Terbit
Waktu baca
4 menit
Pembaca
143 pembaca
Cara Membangun Smart AI Gateway dengan Node.js untuk Multi-LLM Routing

Halo, tech enthusiast! Saat ini, hampir setiap aplikasi modern mengintegrasikan Large Language Model (LLM) seperti OpenAI GPT-4, Anthropic Claude, atau model open-source seperti Llama 3. Namun, masalah klasik yang sering muncul adalah vendor lock-in, lonjakan latensi, dan biaya API yang tidak terkontrol.

Bagaimana jika terjadi rate limit atau downtime pada salah satu provider? Tentu kita tidak ingin aplikasi kita ikut tumbang. Solusinya adalah membangun sebuah AI Gateway mandiri yang bertindak sebagai jembatan cerdas (smart router) untuk mengelola request ke berbagai LLM.

Pada tutorial kali ini, kita akan membahas langkah demi langkah cara membangun custom AI Gateway sederhana menggunakan Node.js dan Express. Sambil menyelam minum air, kita juga akan melihat bagaimana solusi seperti Dahono Router dapat mengotomatisasi semua kerumitan ini di level production.


Prasyarat

Sebelum kita mulai menulis kode, pastikan Anda telah menyiapkan:

  • Node.js versi 18 atau yang terbaru.
  • Pemahaman dasar tentang Express.js dan asynchronous JavaScript (async/await).
  • API Key dari minimal dua provider (misalnya OpenAI dan Anthropic).

Langkah 1: Inisialisasi Proyek Node.js

Mari kita buat direktori baru untuk proyek kita, lalu inisialisasi project Node.js serta install dependencies yang dibutuhkan.

mkdir smart-ai-gateway
cd smart-ai-gateway
npm init -y
npm install express dotenv axios

Buat file .env di root direktori untuk menyimpan API key Anda dengan aman:

PORT=3000
OPENAI_API_KEY=sk-your-openai-key-here
ANTHROPIC_API_KEY=sk-ant-your-anthropic-key-here

Langkah 2: Membuat Server Express Dasar

Buat file bernama server.js. Di sini kita akan menyiapkan kerangka dasar server Express yang nantinya akan menerima incoming payload dari klien, lalu meneruskannya ke LLM yang dipilih berdasarkan parameter tertentu.

require('dotenv').config();
const express = require('express');
const axios = require('axios');

const app = express();
app.use(express.json());

const PORT = process.env.PORT || 3000;

// Endpoint utama AI Gateway
app.post('/v1/chat/completions', async (req, res) => {
  const { provider, model, messages } = req.body;

  try {
    if (provider === 'openai') {
      const response = await callOpenAI(model, messages);
      return res.json(response);
    } else if (provider === 'anthropic') {
      const response = await callAnthropic(model, messages);
      return res.json(response);
    } else {
      return res.status(400.json({ error: 'Provider tidak dikenal atau tidak didukung.' }));
    }
  } catch (error) {
    console.error('Error saat memproses request:', error.message);
    res.status(500).json({ error: 'Gagal memproses request ke LLM.' });
  </tr>
});

app.listen(PORT, () => {
  console.log(`AI Gateway berjalan di port ${PORT}`);
});

Langkah 3: Implementasi Handler untuk Masing-Masing Provider

Selanjutnya, tambahkan fungsi helper untuk melakukan dispatch request ke OpenAI dan Anthropic dengan format payload yang sesuai dengan standar masing-masing API.

async function callOpenAI(model, messages) {
  const payload = {
    model: model || 'gpt-4o-mini',
    messages: messages
  };

  const response = await axios.post('https://api.openai.com/v1/chat/completions', payload, {
    headers: {
      'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
      'Content-Type': 'application/json'
    }
  });

  return response.data;
}

async function callAnthropic(model, messages) {
  // Mengubah format messages OpenAI ke format Claude jika diperlukan
  const payload = {
    model: model || 'claude-3-haiku-20240307',
    max_tokens: 1024,
    messages: messages
  };

  const response = await axios.post('https://api.anthropic.com/v1/messages', payload, {
    headers: {
      'x-api-key': process.env.ANTHROPIC_API_KEY,
      'anthropic-version': '2023-06-01',
      'Content-Type': 'application/json'
    }
  });

  return response.data;
}

Langkah 4: Menguji Gateway Lokal Anda

Jalankan server Node.js Anda dengan perintah:

node server.js

Sekarang, Anda bisa mengirimkan HTTP POST request menggunakan cURL atau Postman ke http://localhost:3000/v1/chat/completions dengan payload berikut:

{
  "provider": "openai",
  "model": "gpt-4o-mini",
  "messages": [
    {"role": "user", "content": "Halo, berikan sapaan singkat dalam bahasa Indonesia!"}
  ]
}

Tantangan di Level Production

Meskipun kode di atas bagus untuk memahami konsep dasarnya, membangun AI Gateway untuk skala produksi (enterprise) membutuhkan banyak fitur tambahan yang kompleks, antara lain:

  • Fallback Otomatis: Jika OpenAI mengalami rate limit atau down, gateway harus otomatis mengalihkan request ke Claude atau Llama.
  • Caching: Menyimpan respons untuk prompt yang sering diulang guna menghemat biaya.
  • Rate Limiting & Cost Tracking: Membatasi penggunaan per pengguna dan memonitor biaya token secara real-time.
  • Load Balancing: Mendistribusikan beban kerja secara merata ke beberapa key atau endpoint.

Jika Anda tidak ingin repot membangun dan memelihara infrastruktur AI Gateway dari nol, Anda bisa langsung memanfaatkan solusi siap pakai dari kami, yaitu Dahono Router. Produk AI Gateway kami dirancang khusus untuk mengelola, mengamankan, dan melakukan load balancing ke berbagai LLM dengan latensi minimal dan keandalan tinggi.

Kesimpulan

Membuat AI Gateway sendiri dengan Node.js memberikan kontrol penuh atas bagaimana aplikasi Anda berinteraksi dengan Large Language Model. Namun, untuk kebutuhan enterprise yang membutuhkan fitur failover, caching, dan observability tingkat lanjut, menggunakan platform khusus seperti Dahono Router adalah pilihan yang jauh lebih efisien.

Selamat mencoba, dan semoga artikel ini bermanfaat untuk arsitektur aplikasi AI Anda selanjutnya!

Kategori

  • AI Gateway
  • Node.js
  • Multi-LLM
  • Express.js
  • Load Balancing AI
  • Dahono Router