> ## 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 與程式庫

> 用於 TokenLab 整合的建議 SDK 與程式庫

## 概覽

TokenLab 最容易按所需行為選擇 SDK：

* 需要 Claude 原生 `/v1/messages` 行為時，使用官方 **Anthropic SDKs**
* 需要 Gemini 原生請求格式時，使用官方 **Gemini / Google AI** 工具
* 遷移 OpenAI 相容 `/v1` 路由或 Responses 風格用法時，使用官方 **OpenAI SDKs**

具體支援邊界請以各整合頁為準。在這套文件裡，“recommended” 或 “supported” 代表存在已文件化的配置路徑，並不自動等同於每個框架輔助層或供應商特定功能都做了端到端回歸。

## 建議的 SDKs

<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">
    原生支援 Claude Messages API
  </Card>
</CardGroup>

## OpenAI SDK 範例

當你遷移已有 OpenAI 相容客戶端，或明確想走 `/v1` 相容路徑時使用這個範例。需要 Claude 原生或 Gemini 原生功能時，請改用對應的原生 SDK。

```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)
```

## 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
}
```

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

| 目標                                     | 建議路徑                        |
| -------------------------------------- | --------------------------- |
| 供應商原生行為                                | 原生供應商 SDK 或路由               |
| 已有 OpenAI 相容客戶端                        | OpenAI SDK + TokenLab `/v1` |
| 可移植聊天 / Embeddings                     | OpenAI 相容 `/v1` 路由          |
| Claude 原生功能                            | Anthropic SDK               |
| Gemini 原生請求格式                          | Gemini-native API / SDK     |
| LangChain / LlamaIndex / Vercel AI SDK | 使用專門的整合頁面                   |

## 最佳實務

<AccordionGroup>
  <Accordion title="行為重要時優先選原生路由">
    Anthropic 或 Gemini 原生路由適合供應商特定欄位、工具、串流細節，以及不應透過另一種格式翻譯的行為。
  </Accordion>

  <Accordion title="遷移時使用 OpenAI 相容 `/v1`">
    OpenAI 相容 SDK 最適合已有 OpenAI 風格客戶端、可移植聊天和 embeddings。它是相容入口，不是 TokenLab 唯一的 API 表面。
  </Accordion>

  <Accordion title="明確指定 base URL">
    在 client 配置中直接傳入 TokenLab 的 base URL，而不是依賴較舊的環境變數別名。
  </Accordion>
</AccordionGroup>
