Panduan inti

Format API

Memilih Chat Completions, Responses, Messages, atau Gemini

Satu kunci TokenLab dapat digunakan untuk empat format API. Pertahankan format aplikasi Anda dan periksa tokenlab.accepted_request_formats di halaman model atau GET /v1/models/{model}. Tidak semua model mendukung keempat format.

Chat Completions

POST /v1/chat/completions · openai_chat_completions

Gunakan untuk klien chat kompatibel OpenAI, riwayat pesan, streaming, dan pemanggilan fungsi yang didukung model. Field khusus format lain tidak dijamin dapat digunakan.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["TOKENLAB_API_KEY"],
    base_url="https://api.tokenlab.sh/v1",
)

response = client.chat.completions.create(
    model="gpt-5.6-luna",
    messages=[{"role": "user", "content": "Hello!"}],
)

print(response.choices[0].message.content)

Responses

POST /v1/responses · openai_responses

Gunakan jika accepted_request_formats memuat openai_responses. Format ini mendukung pembuatan, pengambilan, pemadatan, penghapusan, streaming, pembuatan dan kelanjutan melalui WebSocket, serta respons latar belakang pada model yang mendukungnya. Menghapus respons tersimpan tidak membatalkan respons aktif.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["TOKENLAB_API_KEY"],
    base_url="https://api.tokenlab.sh/v1",
)

response = client.responses.create(
    model="gpt-5.6-terra",
    input="Explain why the sky is blue in two sentences.",
)

print(response.output_text)

Anthropic Messages

POST /v1/messages · anthropic_messages

Pada SDK Anthropic, gunakan host TokenLab tanpa menambahkan /v1. Pertahankan pemanggilan tool Claude, blok thinking, dan field cache prompt dalam format Messages.

import os
from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ["TOKENLAB_API_KEY"],
    base_url="https://api.tokenlab.sh",
)

message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=512,
    messages=[{"role": "user", "content": "Hello!"}],
)

print(message.content[0].text)

Gemini

POST /v1beta/models/:model:generateContent · gemini_generate_content

Gunakan untuk aplikasi dengan contents, parts, file, cache, atau tool Gemini. Nama ProtoJSON lowerCamelCase dan nama asli snake_case diterima; jangan kirim kedua ejaan field yang sama dalam satu permintaan.

curl "https://api.tokenlab.sh/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "Authorization: Bearer $TOKENLAB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "Hello!"}]}]
  }'

Pertahankan format percakapan

Setiap format merepresentasikan status percakapan dan hasil tool secara berbeda. Gunakan satu format per percakapan; konversi dan validasi riwayat dalam aplikasi sebelum migrasi.

Field yang tidak dikenal

Penerusan field tidak menjamin dukungan model. Gunakan fitur yang didokumentasikan untuk model pilihan dan tangani error field yang tidak didukung.

Referensi

Di halaman ini