TokenLab

文字

建立訊息

使用 Anthropic Messages API 格式建立訊息

POST
/v1/messages

概覽

此端點提供原生的 Anthropic Messages API 相容性。對於具備延伸思考等功能的 Claude 模型,請使用此端點。

此端點會保持 Anthropic 原生契約。messages 必須是 user / assistant 訊息陣列,system 應放在頂層 system 欄位,且 max_tokens 為必填。如果 payload 在 messages 中使用 OpenAI 的 system、developer 或 tool role,請改送 /v1/chat/completions。

Anthropic SDK 的 Base URL:https://api.tokenlab.sh(不含 /v1 後綴)

請求標頭

x-api-keystringheader

您的 TokenLab API 金鑰。透過 x-api-key 或 Authorization: Bearer <API_KEY> 擇一傳送。

anthropic-versionstringheader必填

Anthropic API 版本。請使用 2023-06-01。

請求主體

選用參數的支援情況、取值與預設值取決於所選模型。設定取樣、推理或工具選項前,請查看其模型詳情。

modelstring必填

支援 anthropic_messages 格式的模型 ID。請查看其模型詳情確認目前能力。

messagesarray必填

訊息物件陣列,包含 role 與 content。

max_tokensinteger必填

要生成的最大 token 數量。

systemstring | array

系統提示詞,可以是字串或內容區塊陣列,獨立放在頂層,不放入 messages 陣列。

temperaturenumber

取樣溫度。是否支援、允許的取值與預設值取決於所選模型;省略此欄位即可使用模型預設值。

streamboolean預設值: false

啟用串流回應。

thinkingobject

原生 thinking 設定。支援的模式、預算及與其他參數的組合取決於所選模型。

toolsarray

模型可用的工具。

tool_choiceobject

原生工具選擇物件,例如 {"type":"auto"}。支援的類型取決於所選模型。

top_pnumber

Nucleus sampling 參數。請使用 temperature 或 top_p 其中之一,不要同時使用。

top_kinteger

每個 token 僅從前 K 個選項中取樣。

stop_sequencesarray

自訂停止序列,當出現時模型將停止生成。

metadataobject

附加到請求上的中繼資料,用於追蹤目的。

回應

idstring

唯一的訊息識別碼。

typestring

一律為 message。

rolestring

一律為 assistant。

contentarray

內容區塊陣列,例如 text、thinking 或 tool_use。

modelstring

所使用的模型。

stop_reasonstring

停止生成的原因,例如 end_turn、max_tokens、stop_sequence 或 tool_use。

usageobject

Token 使用情況,包含 input_tokens 與 output_tokens。

請求

curl -X POST "https://api.tokenlab.sh/v1/messages" \
  -H "x-api-key: sk-your-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "system": "You are a helpful assistant.",
    "messages": [
      {"role": "user", "content": "Hello, Claude!"}
    ]
  }'

回應

Response
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Hello! How can I help you today?"
    }
  ],
  "model": "claude-sonnet-5",
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 15,
    "output_tokens": 10
  }
}

圖片輸入示例

對於支援視覺能力的 Claude 模型,請將圖片放在 messages[].content 中,作為結構化圖片內容區塊傳入。

{
  "model": "claude-sonnet-5",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "請描述這張圖片。"
        },
        {
          "type": "image",
          "source": {
            "type": "url",
            "url": "https://example.com/demo.jpg"
          }
        }
      ]
    }
  ]
}
{
  "model": "claude-sonnet-5",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "請描述這張圖片。"
        },
        {
          "type": "image",
          "source": {
            "type": "base64",
            "media_type": "image/jpeg",
            "data": "/9j/4AAQSkZJRgABAQ..."
          }
        }
      ]
    }
  ]
}

延伸思考範例

將 TOKENLAB_THINKING_MODEL 設為支援 type: "enabled" 和 budget_tokens 手動思考設定的模型。依該模型限制調整兩個 token 預算;其他模型可能需要不同的 thinking 設定。

import os
from anthropic import Anthropic

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

message = client.messages.create(
    model=os.environ["TOKENLAB_THINKING_MODEL"],
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000
    },
    messages=[{"role": "user", "content": "Solve this math problem..."}]
)

for block in message.content:
    if block.type == "thinking":
        print(f"Thinking: {block.thinking}")
    elif block.type == "text":
        print(f"Response: {block.text}")

Anthropic 訊息批次

TokenLab 現在除了 /v1/messages 之外,也提供原生 Anthropic Message Batches 流程。

可用路由:

  • POST /v1/messages/batches
  • GET /v1/messages/batches
  • GET /v1/messages/batches/:message_batch_id
  • GET /v1/messages/batches/:message_batch_id/results
  • POST /v1/messages/batches/:message_batch_id/cancel
  • DELETE /v1/messages/batches/:message_batch_id

使用說明:

  • 使用同一把 TokenLab API key 與 Anthropic 原生請求標頭。
  • 如果 batch item 引用了 file_id,也要加上 anthropic-beta: files-api-2025-04-14。
  • Batch job 會維持 Anthropic 原生請求/回應格式,同時 TokenLab 會追蹤其內部結算生命週期。

授權

BearerAuth
AuthorizationBearer <token>

API Key 驗證。請在 Dashboard > API > API Keys 建立或管理 API 金鑰。

位置: header

請求標頭

X-TokenLab-Delivery-Policy?string

單次請求傳遞策略。會覆寫 API key 與 Workspace 的預設值。系統會自動優先嘗試 TokenLab Verified,並可能在輸出、請求接受或建立持久性資源前切換至 Official 模式一次。

可選值

  • "auto"
  • "verified"
  • "official"

請求主體

application/json

回應

application/json

application/json

application/json

application/json

application/json

application/json