Cukup ganti base_url dan api_key. Semua model (termasuk Claude, Gemini, DeepSeek) bisa dipanggil
lewat format OpenAI.
Python
from openai import OpenAI
client = OpenAI( base_url = "https://ai.brandkamu.id/v1" , api_key = "sk-..." )
# Chat Completions
resp = client.chat.completions.create(
model = "gemini/gemini-3.5-flash" ,
messages = [
{ "role" : "system" , "content" : "Kamu asisten yang ringkas." },
{ "role" : "user" , "content" : "Apa ibu kota Kalimantan Timur?" },
],
)
print (resp.choices[ 0 ].message.content)
# Responses API
r = client.responses.create( model = "gpt-5-mini" , input = "Ringkas berita ini dalam 3 poin: ..." )
print (r.output_text)
# Embeddings
e = client.embeddings.create( model = "text-embedding-3-small" , input = [ "halo dunia" ])
print ( len (e.data[ 0 ].embedding))
Node.js / TypeScript
import OpenAI from "openai" ;
const client = new OpenAI ({
baseURL: "https://ai.brandkamu.id/v1" ,
apiKey: process.env. SUMOROUTER_API_KEY ,
});
const resp = await client.chat.completions. create ({
model: "claude-sonnet-5" ,
messages: [{ role: "user" , content: "Buat 3 ide nama kedai kopi" }],
});
console. log (resp.choices[ 0 ].message.content);
Gambar (vision)
Untuk model dengan supports_vision, kirim gambar sebagai image_url (URL publik atau data URL base64):
resp = client.chat.completions.create(
model = "gpt-5-mini" ,
messages = [{
"role" : "user" ,
"content" : [
{ "type" : "text" , "text" : "Apa isi gambar ini?" },
{ "type" : "image_url" , "image_url" : { "url" : "data:image/png;base64,iVBOR..." }},
],
}],
)
Tool calling / function calling
Didukung di model yang mendukungnya, dengan format OpenAI (tools, tool_choice) yang sama persis.
Model yang tidak punya Responses API di upstream otomatis dilayani lewat Chat Completions, jadi
client.responses.create tetap jalan untuk semua model chat.
Last modified on November 7, 2026