> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Kompatibilitas IDE & SDK

> Panduan kompatibilitas berbasis bukti untuk alat pengodean AI, SDK, dan framework

## Gambaran Umum

TokenLab menyediakan berbagai format API agar alat pengodean, SDK, dan framework yang umum digunakan dapat terintegrasi dengan kode tambahan (glue code) yang minimal.

Halaman ini sengaja dibuat lebih ringkas daripada matriks pemasaran:

* **Didukung (Supported)** berarti kami mendokumentasikan jalur pengaturan yang konkret dan TokenLab menyediakan bentuk protokol yang diharapkan oleh jalur tersebut.
* **Jalur asli yang kuat (Strong native path)** berarti repositori juga memiliki bukti adaptor langsung atau format permintaan untuk keluarga protokol tersebut.
* **Upaya terbaik (Best-effort)** berarti integrasi dapat berfungsi, namun klien upstream tidak memperlakukan alur kerja gateway kustom ini sebagai kontrak yang stabil.

<Note>
  Bidang yang tidak didukung tidak ditangani secara seragam. Pada rute kompatibilitas, beberapa bidang diabaikan atau dinormalisasi. Pada `/v1/responses`, bidang yang tidak didukung dapat mengembalikan kesalahan `400` atau `503` secara eksplisit jika rute tersebut tidak dapat menjamin perilaku yang diminta.
</Note>

## Format API yang Didukung

| Endpoint                                | Format             | Kasus Penggunaan         |
| --------------------------------------- | ------------------ | ------------------------ |
| `/v1/chat/completions`                  | OpenAI Chat        | Kompatibilitas universal |
| `/v1/responses`                         | OpenAI Responses   | Percakapan stateful      |
| `/v1/messages`                          | Anthropic Messages | Fitur asli Claude        |
| `/v1beta/models/:model:generateContent` | Google Gemini      | Fitur asli Gemini        |

## Kompatibilitas IDE & CLI

### Jalur Alat yang Didokumentasikan

| Alat                | Tingkat Dukungan                    | Format                   | Catatan                                                                                                                                                            |
| ------------------- | ----------------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Cursor**          | Didukung dengan batasan             | Kompatibel dengan OpenAI | Berfungsi untuk alur chat/editor standar BYOK, bukan sebagai pengganti fitur yang dikelola Cursor seperti Tab Completion                                           |
| **Claude Code CLI** | Jalur asli yang kuat                | Anthropic                | Rute `/v1/messages` asli dengan cakupan adaptor untuk thinking dan `tool_choice`                                                                                   |
| **Codex CLI**       | Didukung dengan batasan model/jalur | OpenAI Responses         | Perlakukan `/v1/responses` sebagai jalur lanjutan untuk alur kerja khusus Codex; beberapa bidang khusus Responses tidak dijamin ada di setiap model dan jalur rute |
| **Gemini CLI**      | Upaya terbaik / eksperimental       | Gemini                   | Alur base URL kustom TokenLab bukan merupakan integrasi resmi Gemini CLI                                                                                           |
| **OpenCode**        | Didukung                            | Kompatibel dengan OpenAI | Gunakan penyedia yang kompatibel dengan OpenAI secara default; beralih ke penyedia berbasis Responses hanya jika Anda benar-benar membutuhkannya                   |
| **OpenHands**       | Didukung                            | Kompatibel dengan OpenAI | Gunakan jalur LiteLLM/kompatibel dengan OpenAI dengan `openai/<model>` dan base URL `/v1` TokenLab                                                                 |

<Note>
  Editor dan alat agen lain yang kompatibel dengan OpenAI sering kali berfungsi dengan pola base URL yang sama; periksa dukungan penyedia kustom alat tersebut sebelum menggunakannya dalam produksi.
</Note>

### Contoh Konfigurasi

<Tabs>
  <Tab title="Cursor">
    ```
    Base URL: https://api.tokenlab.sh/v1
    API Key: sk-your-tokenlab-key
    ```

    Cursor menggunakan format alat gaya Anthropic secara internal. TokenLab mendukung keduanya:

    * Format OpenAI: `{ type: "function", function: { name, parameters } }`
    * Format Anthropic: `{ name, input_schema }` (tanpa bidang type)
  </Tab>

  <Tab title="Claude Code">
    ```bash theme={null}
    export ANTHROPIC_BASE_URL="https://api.tokenlab.sh"
    export ANTHROPIC_API_KEY="sk-your-tokenlab-key"
    ```
  </Tab>

  <Tab title="OpenCode">
    ```bash theme={null}
    export OPENAI_API_KEY="sk-your-tokenlab-key"
    export LOCAL_ENDPOINT="https://api.tokenlab.sh/v1"
    ```
  </Tab>

  <Tab title="Aider">
    ```bash theme={null}
    export OPENAI_API_KEY="sk-your-tokenlab-key"
    export OPENAI_BASE_URL="https://api.tokenlab.sh/v1"
    aider --model gpt-5.4
    ```
  </Tab>
</Tabs>

## Kompatibilitas SDK

### Jalur SDK & Framework yang Didokumentasikan

| SDK / Framework                                          | Bahasa                  | Tingkat Dukungan                          | Catatan                                                                                                                                                                                             |
| -------------------------------------------------------- | ----------------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **OpenAI SDK**                                           | Python/JS/Go            | Jalur inti didukung                       | Jalur kompatibilitas untuk Chat Completions dan Embeddings `/v1`; gunakan rute penyedia asli untuk perilaku khusus penyedia, dan jangan berasumsi bidang khusus Responses berfungsi di setiap model |
| **Anthropic SDK**                                        | Python/JS               | Jalur asli yang kuat                      | Rute Messages asli dengan bukti langsung untuk tools, thinking, dan prompt caching                                                                                                                  |
| **Vercel AI SDK**                                        | TypeScript              | Pola integrasi yang disarankan            | Lebih disukai `@ai-sdk/openai-compatible`; gunakan `@ai-sdk/openai` hanya jika Anda secara eksplisit menginginkan perilaku asli Responses                                                           |
| **LangChain**                                            | Python/JS               | Permukaan standar didukung                | `ChatOpenAI` dan `OpenAIEmbeddings` adalah cakupan yang dituju; tambahan asli vendor di luar cakupan                                                                                                |
| **LlamaIndex**                                           | Python                  | Didukung melalui `OpenAILike`             | Gunakan `OpenAILike`, bukan kelas OpenAI bawaan, untuk gateway pihak ketiga seperti TokenLab                                                                                                        |
| **OpenAI Agents SDK**                                    | Python                  | Jalur chat-completions didukung           | Gunakan `AsyncOpenAI(base_url="https://api.tokenlab.sh/v1")` dengan `OpenAIChatCompletionsModel`; perilaku Responses asli bergantung pada model dan rute yang dipilih                               |
| **AutoGen**                                              | Python                  | Jalur endpoint kustom didukung            | Gunakan `OpenAIChatCompletionClient` dengan `base_url: https://api.tokenlab.sh/v1`                                                                                                                  |
| **Semantic Kernel**                                      | .NET                    | Jalur endpoint kustom didukung            | Gunakan endpoint kustom konektor chat completion OpenAI dan arahkan ke `https://api.tokenlab.sh/v1`                                                                                                 |
| **CrewAI**                                               | Python                  | Jalur endpoint kustom didukung            | Atur `OPENAI_API_BASE` atau `LLM(base_url=...)` ke endpoint `/v1` TokenLab                                                                                                                          |
| **Pydantic AI**                                          | Python                  | Jalur penyedia kompatibel OpenAI didukung | Gunakan `OpenAIChatModel` dengan `OpenAIProvider(base_url="https://api.tokenlab.sh/v1")`                                                                                                            |
| **DSPy**                                                 | Python                  | Jalur endpoint kustom didukung            | Gunakan `dspy.LM("openai/<model>", api_base="https://api.tokenlab.sh/v1")`                                                                                                                          |
| **Langflow**                                             | Python / Web            | Didukung dengan batasan cakupan           | Gunakan bidang **OpenAI API Base** pada komponen OpenAI dengan endpoint `/v1` TokenLab                                                                                                              |
| **Haystack**                                             | Python                  | Jalur endpoint kustom didukung            | Gunakan `OpenAIChatGenerator(api_base_url="https://api.tokenlab.sh/v1")`                                                                                                                            |
| **Graphiti**                                             | Python                  | Jalur endpoint kustom didukung            | Gunakan `OpenAIGenericClient` dengan endpoint `/v1` TokenLab                                                                                                                                        |
| **Dify**                                                 | -                       | Didukung dengan batasan cakupan           | Penyedia OpenAI dan alur yang berorientasi pada chat-completions adalah jalur yang dituju; tidak cocok untuk perilaku Responses atau WebSocket khusus Codex                                         |
| **Flowise**                                              | Web / Node              | Didukung dengan batasan cakupan           | Gunakan node chat TokenLab jika tersedia, atau node yang kompatibel dengan ChatOpenAI yang diarahkan ke `https://api.tokenlab.sh/v1`                                                                |
| **Mem0**                                                 | Python                  | Jalur endpoint kustom didukung            | Tetap gunakan penyedia OpenAI dan atur `openai_base_url` ke endpoint `/v1` TokenLab                                                                                                                 |
| **Agno**                                                 | Python                  | Jalur didukung                            | Gunakan wrapper model TokenLab jika tersedia, atau jalur base URL yang kompatibel dengan OpenAI                                                                                                     |
| **Browser Use**                                          | Python                  | Jalur endpoint kustom didukung            | Gunakan `ChatOpenAILike` dengan endpoint `/v1` TokenLab                                                                                                                                             |
| **VoltAgent**                                            | TypeScript              | Jalur endpoint kustom didukung            | Teruskan penyedia OpenAI AI SDK yang dikonfigurasi dengan `baseURL: "https://api.tokenlab.sh/v1"`                                                                                                   |
| **Ragas**                                                | Python                  | Jalur endpoint kustom didukung            | Teruskan `AsyncOpenAI(base_url="https://api.tokenlab.sh/v1")` ke dalam `llm_factory`                                                                                                                |
| **Guardrails**                                           | Python                  | Jalur validasi didukung                   | Teruskan callable chat completions SDK OpenAI yang dikonfigurasi dengan endpoint `/v1` TokenLab                                                                                                     |
| **Prompt flow**                                          | Python / CLI            | Jalur endpoint kustom didukung            | Buat koneksi OpenAI dengan `base_url=https://api.tokenlab.sh/v1`                                                                                                                                    |
| **Promptfoo**                                            | CLI / Node              | Jalur didukung                            | Gunakan penyedia chat atau Responses OpenAI dengan `apiBaseUrl: https://api.tokenlab.sh/v1`                                                                                                         |
| **Portkey Gateway**                                      | Gateway                 | Jalur didukung                            | Gunakan TokenLab sebagai penyedia upstream untuk lalu lintas chat dan Responses yang kompatibel dengan OpenAI                                                                                       |
| **Helicone**                                             | Gateway / Observability | Jalur observabilitas didukung             | Rutekan permintaan yang kompatibel dengan OpenAI melalui Helicone Gateway dengan `Helicone-Target-Url: https://api.tokenlab.sh`                                                                     |
| **Langfuse**                                             | Observability           | Jalur pelacakan didukung                  | Konfigurasikan integrasi OpenAI Langfuse dengan base URL `/v1` TokenLab                                                                                                                             |
| **OpenLIT**                                              | Observability           | Jalur pelacakan didukung                  | Instrumentasikan klien SDK OpenAI yang dikonfigurasi dengan base URL `/v1` TokenLab                                                                                                                 |
| **OpenLLMetry**                                          | Observability           | Jalur pelacakan didukung                  | Gunakan instrumentasi SDK OpenAI dengan base URL `/v1` TokenLab                                                                                                                                     |
| **Phoenix**                                              | Observability           | Jalur pelacakan didukung                  | Instrumentasikan otomatis klien SDK OpenAI yang dikonfigurasi dengan base URL `/v1` TokenLab                                                                                                        |
| **Opik**                                                 | Observability           | Jalur pelacakan didukung                  | Bungkus klien SDK OpenAI yang dikonfigurasi dengan base URL `/v1` TokenLab                                                                                                                          |
| **LangBot**                                              | Bot Platform            | Jalur chat didukung                       | Gunakan requester TokenLab jika tersedia, atau konfigurasikan requester yang kompatibel dengan OpenAI dengan endpoint `/v1` TokenLab                                                                |
| **Open WebUI**                                           | Web Chat                | Jalur aplikasi chat didukung              | Tambahkan TokenLab sebagai koneksi API yang kompatibel dengan OpenAI dan segarkan daftar model                                                                                                      |
| **Chatbox / DeepChat / Jan / LibreChat / Cherry Studio** | Desktop / Web           | Jalur aplikasi chat didukung              | Gunakan alur penyedia kustom yang kompatibel dengan OpenAI dari masing-masing aplikasi; aplikasi ini biasanya berorientasi pada chat-completions                                                    |

## Parameter Chat Completions

### Parameter Inti

| Parameter     | Tipe    | Deskripsi                        |
| ------------- | ------- | -------------------------------- |
| `model`       | string  | Pengenal model (wajib)           |
| `messages`    | array   | Pesan percakapan (wajib)         |
| `max_tokens`  | integer | Token output maksimum            |
| `temperature` | number  | Suhu pengambilan sampel (0-2)    |
| `top_p`       | number  | Pengambilan sampel nukleus (0-1) |
| `stream`      | boolean | Aktifkan streaming               |

### Pemanggilan Alat (Tool Calling)

```json theme={null}
{
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get weather for a location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": { "type": "string" }
          }
        },
        "strict": true
      }
    }
  ],
  "tool_choice": "auto",
  "parallel_tool_calls": true
}
```

### Opsi Pilihan Alat (Tool Choice)

| Format          | Contoh                                                                | Deskripsi             |
| --------------- | --------------------------------------------------------------------- | --------------------- |
| String          | `"auto"`, `"none"`, `"required"`                                      | Pemilihan sederhana   |
| Objek OpenAI    | `{ "type": "function", "function": { "name": "fn" } }`                | Paksa fungsi tertentu |
| Objek Anthropic | `{ "type": "tool", "name": "fn", "disable_parallel_tool_use": true }` | Format asli Anthropic |

### Parameter Lanjutan

| Parameter           | Tipe         | Deskripsi                                                                |
| ------------------- | ------------ | ------------------------------------------------------------------------ |
| `stream_options`    | object       | Hanya Chat Completions: `{ include_usage: true }` untuk jumlah token     |
| `reasoning_effort`  | string       | `"low"`, `"medium"`, `"high"` untuk model GPT-5 yang mendukung penalaran |
| `service_tier`      | string       | `"auto"` atau `"default"`                                                |
| `seed`              | integer      | Output deterministik                                                     |
| `logprobs`          | boolean      | Kembalikan probabilitas log                                              |
| `top_logprobs`      | integer      | Jumlah probabilitas log teratas (0-20)                                   |
| `logit_bias`        | object       | Peta bias token (-100 hingga 100)                                        |
| `frequency_penalty` | number       | Penalti pengulangan (-2 hingga 2)                                        |
| `presence_penalty`  | number       | Penalti topik (-2 hingga 2)                                              |
| `stop`              | string/array | Urutan berhenti                                                          |
| `n`                 | integer      | Jumlah penyelesaian (1-128)                                              |
| `user`              | string       | Pengenal pengguna untuk pelacakan                                        |

### Fitur Lanjutan OpenAI

| Parameter    | Tipe    | Deskripsi                                             |
| ------------ | ------- | ----------------------------------------------------- |
| `modalities` | array   | `["text", "audio"]` untuk multimodal                  |
| `audio`      | object  | Konfigurasi output audio (suara, format)              |
| `prediction` | object  | Output yang diprediksi untuk penyelesaian lebih cepat |
| `metadata`   | object  | Pasangan kunci-nilai untuk pelacakan                  |
| `store`      | boolean | Simpan untuk pengambilan nanti                        |

### Opsi Khusus Penyedia

```json theme={null}
{
  "anthropic_options": {
    "thinking": {
      "type": "enabled",
      "budget_tokens": 10000
    },
    "prompt_caching": true
  },
  "google_options": {
    "safety_settings": [...],
    "google_search": true,
    "code_execution": true
  }
}
```

## Parameter Anthropic Messages

### Parameter Inti

| Parameter    | Tipe         | Deskripsi                       |
| ------------ | ------------ | ------------------------------- |
| `model`      | string       | Pengenal model                  |
| `messages`   | array        | Pesan percakapan                |
| `max_tokens` | integer      | Output maksimum (hingga 128000) |
| `system`     | string/array | Prompt sistem                   |
| `stream`     | boolean      | Aktifkan streaming              |

### Pemanggilan Alat (Tool Calling)

```json theme={null}
{
  "tools": [
    {
      "name": "get_weather",
      "description": "Get weather",
      "input_schema": {
        "type": "object",
        "properties": {
          "location": { "type": "string" }
        }
      }
    }
  ],
  "tool_choice": {
    "type": "auto",
    "disable_parallel_tool_use": false
  }
}
```

### Penalaran Lanjutan (Extended Thinking)

```json theme={null}
{
  "model": "claude-opus-4-6",
  "thinking": {
    "type": "enabled",
    "budget_tokens": 10000
  }
}
```

## Parameter Responses API

### Parameter Inti

| Parameter              | Tipe         | Deskripsi             |
| ---------------------- | ------------ | --------------------- |
| `model`                | string       | Pengenal model        |
| `input`                | string/array | Konten input          |
| `instructions`         | string       | Instruksi sistem      |
| `max_output_tokens`    | integer      | Token output maksimum |
| `previous_response_id` | string       | Lanjutkan percakapan  |

### Parameter Lanjutan

| Parameter             | Tipe   | Deskripsi                         |
| --------------------- | ------ | --------------------------------- |
| `truncation_strategy` | string | `"auto"` atau `"disabled"`        |
| `include`             | array  | `["reasoning.encrypted_content"]` |
| `reasoning_effort`    | string | Untuk model penalaran             |
| `service_tier`        | string | Tingkat prioritas                 |

### Format Alat

Mendukung format alat OpenAI dan Anthropic:

```json theme={null}
// Format OpenAI
{ "type": "function", "name": "fn", "parameters": {...} }

// Format Anthropic (Kompatibilitas Cursor)
{ "name": "fn", "input_schema": {...} }
```

## Parameter Gemini API

### Parameter Inti

| Parameter           | Tipe   | Deskripsi           |
| ------------------- | ------ | ------------------- |
| `contents`          | array  | Konten percakapan   |
| `systemInstruction` | object | Prompt sistem       |
| `generationConfig`  | object | Pengaturan generasi |

### Alat (Tools)

```json theme={null}
{
  "tools": [{
    "functionDeclarations": [{
      "name": "search",
      "description": "Search the web",
      "parameters": {...}
    }],
    "codeExecution": {},
    "googleSearch": {}
  }],
  "toolConfig": {
    "functionCallingConfig": {
      "mode": "AUTO"
    }
  }
}
```

### Pengaturan Keamanan (Safety Settings)

```json theme={null}
{
  "safetySettings": [
    {
      "category": "HARM_CATEGORY_HARASSMENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    }
  ]
}
```

### Parameter Tambahan

| Parameter          | Tipe   | Deskripsi                                |
| ------------------ | ------ | ---------------------------------------- |
| `cachedContent`    | string | Referensi konten yang di-cache           |
| `responseMimeType` | string | `"text/plain"` atau `"application/json"` |
| `responseSchema`   | object | Skema JSON untuk output terstruktur      |

## Streaming

Endpoint generasi yang menyediakan `stream: true`, termasuk Chat Completions dan Responses, menggunakan Server-Sent Events (SSE):

```bash theme={null}
# Chat Completions
curl https://api.tokenlab.sh/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -d '{"model": "gpt-4o", "messages": [...], "stream": true}'

# Chat Completions usage tracking
-d '{"...", "stream_options": {"include_usage": true}}'
```

## Penanganan Kesalahan

TokenLab mengembalikan respons kesalahan yang kompatibel dengan OpenAI:

```json theme={null}
{
  "error": {
    "message": "Invalid API key",
    "type": "invalid_api_key",
    "code": "invalid_api_key"
  }
}
```

Lihat [Panduan Penanganan Kesalahan](/guides/error-handling) untuk detailnya.

## Praktik Terbaik

<AccordionGroup>
  <Accordion title="Gunakan passthrough untuk parameter yang tidak diketahui">
    Parameter yang tidak diketahui hanya diteruskan jika rute publik dan model yang dipilih mendukungnya.
  </Accordion>

  <Accordion title="Gunakan stream_options.include_usage hanya untuk Chat Completions">
    Untuk streaming Chat Completions, aktifkan `stream_options.include_usage` untuk jumlah token yang akurat. Responses memiliki kontrak streaming sendiri dan tidak menyediakan opsi khusus Chat ini.
  </Accordion>

  <Accordion title="Gunakan format tool_choice yang sesuai">
    Sesuaikan dengan format yang diharapkan SDK Anda. TokenLab menerima format OpenAI maupun Anthropic.
  </Accordion>
</AccordionGroup>
