> ## 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.

# SDK & Library

> SDK dan library yang direkomendasikan untuk integrasi TokenLab

## Ikhtisar

TokenLab paling mudah diintegrasikan dengan mencocokkan SDK dengan perilaku yang Anda butuhkan:

* SDK **Anthropic** resmi untuk perilaku asli Claude `/v1/messages`
* alat resmi **Gemini / Google AI** untuk bentuk permintaan asli Gemini
* SDK OpenAI resmi untuk rute `/v1` yang kompatibel dengan OpenAI dan penggunaan bergaya Responses

Gunakan halaman integrasi untuk memahami batas dukungan. Dalam dokumentasi ini, "recommended" atau "supported" berarti ada jalur setup yang terdokumentasi; tidak otomatis mencakup setiap helper framework atau fitur khusus provider.

## SDK yang Direkomendasikan

<CardGroup cols={2}>
  <Card title="OpenAI Python" icon="python" href="https://github.com/openai/openai-python">
    `pip install openai`
  </Card>

  <Card title="OpenAI Node" icon="node-js" href="https://github.com/openai/openai-node">
    `npm install openai`
  </Card>

  <Card title="OpenAI Go" icon="golang" href="https://github.com/openai/openai-go">
    `go get github.com/openai/openai-go/v3`
  </Card>

  <Card title="Anthropic SDK" icon="robot" href="https://github.com/anthropics/anthropic-sdk-python">
    Dukungan native untuk Claude Messages API
  </Card>
</CardGroup>

## Contoh OpenAI SDK

Gunakan ini saat Anda memigrasikan klien yang sudah kompatibel dengan OpenAI atau menginginkan jalur kompatibilitas `/v1`. Untuk fitur native Claude atau native Gemini, gunakan SDK native yang sesuai.

```python theme={null}
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-api-key",
    base_url="https://api.tokenlab.sh/v1"
)

response = client.responses.create(
    model="gpt-5.4",
    input="Explain TokenLab in one sentence."
)

print(response.output_text)
```

## Contoh OpenAI Go

```go theme={null}
package main

import (
    openai "github.com/openai/openai-go/v3"
    "github.com/openai/openai-go/v3/option"
)

func main() {
    client := openai.NewClient(
        option.WithAPIKey("sk-your-api-key"),
        option.WithBaseURL("https://api.tokenlab.sh/v1"),
    )

    _ = client
}
```

## Contoh Anthropic SDK

```python theme={null}
from anthropic import Anthropic

client = Anthropic(
    api_key="sk-your-api-key",
    base_url="https://api.tokenlab.sh"
)

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

## SDK Mana yang Harus Anda Gunakan?

| Tujuan                                    | Jalur yang Direkomendasikan              |
| ----------------------------------------- | ---------------------------------------- |
| Perilaku native penyedia                  | SDK atau rute native penyedia            |
| Klien yang sudah kompatibel dengan OpenAI | SDK OpenAI di TokenLab `/v1`             |
| Chat portabel / embeddings                | Rute `/v1` yang kompatibel dengan OpenAI |
| Fitur bawaan Claude                       | Anthropic SDK                            |
| Bentuk permintaan native Gemini           | API / SDK native Gemini                  |
| LangChain / LlamaIndex / Vercel AI SDK    | Gunakan halaman integrasi khusus         |

## Praktik Terbaik

<AccordionGroup>
  <Accordion title="Pilih route native ketika perilaku penting">
    Gunakan rute native Anthropic atau Gemini untuk field spesifik penyedia, tools, detail streaming, dan perilaku lain yang tidak boleh diterjemahkan melalui format lain.
  </Accordion>

  <Accordion title="Gunakan `/v1` kompatibel OpenAI untuk migrasi">
    SDK yang kompatibel dengan OpenAI adalah jalur terbaik untuk klien bergaya OpenAI yang sudah ada, chat portabel, dan embeddings. Perlakukan mereka sebagai rute kompatibilitas, bukan sebagai satu-satunya permukaan API TokenLab.
  </Accordion>

  <Accordion title="Buat Base URL tetap eksplisit">
    Lewatkan URL dasar TokenLab secara langsung dalam konfigurasi klien Anda, alih-alih mengandalkan alias variabel lingkungan lama.
  </Accordion>
</AccordionGroup>
