Saltar al contenido principal

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.

Descripción general

TokenLab admite tres formatos de API nativos con una sola clave API. Elige el formato que mejor se adapte a tu caso de uso: no se necesitan cambios de configuración.

Formato OpenAI

/v1/chat/completions Formato estándar, la mayor compatibilidad

Formato Anthropic

/v1/messages Razonamiento extendido, funciones nativas de Claude

Formato Gemini

/v1beta/models/:model:generateContent Integración con el ecosistema de Google

¿Por qué multi-formato?

BeneficioDescripción
No SDK switchingUsa cualquier modelo con tu SDK preferido
Native featuresAccede a capacidades específicas del formato
Easy migrationCambia desde las APIs oficiales con solo modificar la URL base
Single billingUna cuenta, una clave API, todos los formatos

Comparación de formatos

FunciónOpenAIAnthropicGemini
Endpoint/v1/chat/completions/v1/messages/v1beta/models/:model:generateContent
Encabezado de autenticaciónAuthorization: Bearerx-api-keyAuthorization: Bearer
System PromptEn el arreglo de messagesCampo separado systemEn systemInstruction
Extended Thinking
Transmisión✅ SSE✅ SSE✅ SSE
Llamadas de herramientas
Vision

Formato OpenAI

Usa esta ruta de compatibilidad para integraciones OpenAI SDK existentes y flujos portables de chat o embeddings. Para comportamiento nativo Claude o Gemini, usa el formato Anthropic o Gemini abajo.
from openai import OpenAI

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

# Portable chat works across many models
response = client.chat.completions.create(
    model="claude-sonnet-4-6",  # Claude via OpenAI format
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello!"}
    ]
)
Ideal para:
  • Uso general
  • Integraciones existentes con OpenAI SDK
  • Máxima compatibilidad

Formato Anthropic

API Messages nativa de Anthropic. Requerido para funciones específicas de Claude, como el razonamiento extendido.
from anthropic import Anthropic

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

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system="You are a helpful assistant.",  # Separate system field
    messages=[
        {"role": "user", "content": "Hello!"}
    ]
)

Razonamiento extendido (Claude Opus 4.6)

Solo disponible en el formato Anthropic:
message = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000
    },
    messages=[{"role": "user", "content": "Solve this complex problem..."}]
)

# Access thinking process
for block in message.content:
    if block.type == "thinking":
        print(f"Thinking: {block.thinking}")
    elif block.type == "text":
        print(f"Answer: {block.text}")
Ideal para:
  • Funciones específicas de Claude
  • Modo de razonamiento extendido
  • Usuarios del SDK nativo de Anthropic

Formato Gemini

Formato nativo de la API Gemini de Google para integración con el ecosistema de Google.
curl "https://api.tokenlab.sh/v1beta/models/gemini-2.5-flash:generateContent" \
  -H "Authorization: Bearer sk-your-tokenlab-key" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [{"text": "Hello!"}]
    }],
    "systemInstruction": {
      "parts": [{"text": "You are a helpful assistant."}]
    }
  }'

Transmisión

curl "https://api.tokenlab.sh/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse" \
  -H "Authorization: Bearer sk-your-tokenlab-key" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "Write a story"}]}]
  }'
Ideal para:
  • Integraciones con Google Cloud
  • Código existente del SDK de Gemini
  • Funciones nativas de Gemini
Gemini Files y Cache: La ruta nativa de Gemini admite /upload/v1beta/files, /v1beta/files, /v1beta/files:register y /v1beta/cachedContents. Files usa canales upstream compatibles con Gemini File API; los recursos de Cache explícitos también pueden enrutarse por canales de Vertex AI. Los recursos creados mediante TokenLab quedan vinculados al mismo canal/key upstream para llamadas posteriores a generateContent.

Límite de compatibilidad de herramientas

Las herramientas de función pueden convertirse entre formatos cuando la ruta de destino las admite. Las herramientas nativas del proveedor deben permanecer en su ruta nativa:
  • Las herramientas alojadas y nativas de OpenAI Responses, como tool_search, web_search, file_search, code_interpreter, MCP, shell/apply_patch y herramientas computer-use, requieren /v1/responses.
  • Las herramientas server/native de Anthropic, como web_search_*, web_fetch_*, code_execution_*, tool_search_*, bash, computer-use y text-editor, requieren /v1/messages.
  • Las herramientas integradas de Gemini, como googleSearch, codeExecution, urlContext, computerUse y campos tools similares, requieren /v1beta.
Si TokenLab no puede enrutar una solicitud con herramientas nativas a una ruta upstream compatible con formato nativo, devuelve un error unsupported-field explícito en lugar de descartar la herramienta en silencio o fingir que es una función de Chat Completions. Las herramientas de función definidas por el usuario siguen siendo la ruta más portable.

Cómo elegir el formato correcto

Guías de migración

Desde la API oficial de OpenAI

# Before (OpenAI)
client = OpenAI(api_key="sk-openai-key")

# After (TokenLab)
client = OpenAI(
    api_key="sk-tokenlab-key",
    base_url="https://api.tokenlab.sh/v1"  # Add this line
)
# That's it! Same code works
¡Eso es todo! El mismo código funciona

Desde la API oficial de Anthropic

# Before (Anthropic)
client = Anthropic(api_key="sk-ant-key")

# After (TokenLab)
client = Anthropic(
    api_key="sk-tokenlab-key",
    base_url="https://api.tokenlab.sh"  # Add this line (no /v1!)
)

Desde Google AI Studio

# Before (Google)
import google.generativeai as genai
genai.configure(api_key="google-api-key")

# After (TokenLab) - Use REST API
import requests

response = requests.post(
    "https://api.tokenlab.sh/v1beta/models/gemini-2.5-flash:generateContent",
    headers={"Authorization": "Bearer sk-tokenlab-key"},
    json={"contents": [{"parts": [{"text": "Hello"}]}]}
)

Compatibilidad entre modelos

La magia de TokenLab: usa cualquier SDK con cualquier modelo. La pasarela gestiona automáticamente la conversión de formatos.

Cualquier SDK → Cualquier modelo

# Anthropic SDK with GPT-4o (auto-converts to OpenAI format)
from anthropic import Anthropic

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

response = client.messages.create(
    model="gpt-4o",  # ✅ Works! Auto-converted
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}]
)

# Same compatibility SDK for portable chat; native-only features still need native routes
response = client.messages.create(model="gemini-2.5-flash", ...)  # ✅ Works!
response = client.messages.create(model="deepseek-r1", ...)       # ✅ Works!

OpenAI SDK → Todos los modelos

from openai import OpenAI

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

# These portable chat calls use the same /v1 compatibility SDK:
response = client.chat.completions.create(model="gpt-4o", ...)
response = client.chat.completions.create(model="claude-sonnet-4-6", ...)
response = client.chat.completions.create(model="gemini-2.5-flash", ...)

Comparación por plataforma

PlataformaFormato OpenAIFormato AnthropicFormato GeminiAPI de Responses
TokenLab✅ Todos los modelos✅ Todos los modelos✅ Todos los modelos✅ Todos los modelos
OpenRouter✅ Todos los modelos
Together AI✅ Todos los modelos
Fireworks✅ Todos los modelos
Aunque el uso entre formatos funciona para la mayoría de las funcionalidades, las funciones específicas de cada formato (como el razonamiento extendido de Anthropic) requieren el formato nativo.