Arsitektur SDKDiperbarui: 2026-10-248 menit baca

Cara Integrasi OpenAI SDK di Next.js & Python untuk Multi-Model (Claude, GPT, DeepSeek, Gemini)

Mengelola banyak SDK berbeda (@anthropic-ai/sdk, openai, @google/generative-ai) di dalam satu basis kode produksi meningkatkan beban pemeliharaan dan menyulitkan pergantian model. Dengan pola Unified Gateway, tim engineering cukup memelihara satu klien OpenAI SDK standar.

1. Masalah Fragmentasi SDK pada Aplikasi AI Produksi

Ketika membangun fitur berbasis LLM di aplikasi produksi, tim sering kali perlu membandingkan performa dan latensi antar model—misalnya menggunakan Claude untuk analisis dokumen kompleks, DeepSeek untuk pemrosesan kode, dan Gemini Flash untuk klasifikasi cepat.

Jika setiap vendor diintegrasikan menggunakan SDK pribadinya masing-masing, Anda harus menulis adapter terpisah untuk format pesan, penanganan streaming, perhitungan token, hingga manajemen kunci rahasia. Standarisasi ke protokol OpenAI Chat Completions v1 menyatukan seluruh kontrak antarmuka tersebut.

2. Implementasi Server-Side di Next.js 15 App Router

Pada aplikasi Next.js App Router, inisialisasi klien OpenAI cukup dilakukan satu kali di modul infrastruktur server dengan mengarahkan baseURL ke endpoint TokenFajri. Untuk memilih model dari vendor yang berbeda, Anda hanya perlu mengganti string parameter model:

src/lib/ai-gateway.ts (Next.js / TypeScript)
import OpenAI from "openai";

export const aiGateway = new OpenAI({
  apiKey: process.env.TOKENFAJRI_API_KEY,
  baseURL: "https://token.fajriag.ai.id/v1",
  timeout: 45_000,
  maxRetries: 2,
});

export async function generateCompletion(modelId: string, prompt: string) {
  const response = await aiGateway.chat.completions.create({
    model: modelId,
    messages: [{ role: "user", content: prompt }],
    temperature: 0.2,
  });
  return response.choices[0]?.message?.content ?? "";
}

3. Implementasi Asynchronous di Backend Python (FastAPI)

Pola yang sama berlaku identik pada ekosistem Python. Pustaka resmi openai menyediakan kelas AsyncOpenAI yang sudah dilengkapi connection pool HTTPX bawaan:

app/services/llm_client.py (Python 3.11+)
import os
from openai import AsyncOpenAI

client = AsyncOpenAI(
    api_key=os.environ["TOKENFAJRI_API_KEY"],
    base_url="https://token.fajriag.ai.id/v1",
)

async def stream_response(model_id: str, user_message: str):
    stream = await client.chat.completions.create(
        model=model_id,
        messages=[{"role": "user", "content": user_message}],
        stream=True,
    )
    async for chunk in stream:
        delta = chunk.choices[0].delta.content if chunk.choices else None
        if delta:
            yield delta

Pertanyaan Umum (FAQ) Terkait Topik Ini

Apakah parameter response_format dan tools tetap berfungsi?

Ya. Seluruh properti standar dalam body JSON permintaan diteruskan secara transparan ke model target selama model tersebut mendukung fitur tersebut.

Bagaimana cara mengecek daftar model yang sedang aktif dari kode?

Anda dapat memanggil client.models.list() atau melakukan HTTP GET ke https://token.fajriag.ai.id/v1/models untuk mendapatkan daftar ID model yang aktif dan telah lolos verifikasi kesehatan.