Guías

Compatibilidad con Anthropic

Qué es idéntico, qué difiere y cómo apuntar un cliente con formato de Anthropic a Stac.

Stac también implementa la API Messages de Anthropic, así que las herramientas nativas de Claude y el SDK anthropic funcionan contra tu stack sin traducir las solicitudes al formato de OpenAI.

client.tsdiff
  const client = new Anthropic({
-   baseURL: "https://api.anthropic.com",
-   apiKey: process.env.ANTHROPIC_API_KEY,
+   baseURL: "https://api.trystac.com",
+   apiKey: process.env.STAC_API_KEY,
  });

Compatibilidad

CaracterísticaEstado
POST /v1/messagesCompleto
POST /v1/messages/count_tokensCompleto
Streaming (SSE, formato de eventos de Anthropic)Completo
Uso de herramientasCompleto
Bloques de contenido de imagenDepende del modelo — consulta capabilities en GET /v1/models
x-api-key y Authorization: BearerAmbos aceptados
Caché de prompt (cache_control)Aceptado, sin efecto — no hay un medidor por token contra el que ahorrar dinero

Diferencias importantes

  • model siempre se ignora. Tu stack tiene exactamente un modelo asignado; cualquier valor que envíes es reemplazado por él. Solo es obligatorio en el cuerpo de la solicitud porque el formato de Anthropic espera el campo.
  • max_tokens se ajusta, no solo es obligatorio. Las solicitudes tienen un mínimo de 8000 y un máximo de 16000. Consulta Messages.
  • system reemplaza la configuración de tu stack, la misma regla que en chat completions: no envíes system para mantener el prompt configurado de tu stack y la base de conocimiento; envía uno (no vacío) para anular ambos en esa solicitud. Consulta Conceptos básicos.
  • El límite de tasa es por clave, no por nivel. Consulta Errores y límites de tasa.

Herramientas de CLI

Claude Code

Claude Code asume una ventana de contexto de 200k tokens y solo descubre el límite real de tu plan cuando una llamada es rechazada. Establece CLAUDE_CODE_AUTO_COMPACT_WINDOW para que compacte de forma proactiva en su lugar:

bash
export ANTHROPIC_BASE_URL="https://api.trystac.com"
export ANTHROPIC_AUTH_TOKEN="your-stac-api-key"
export ANTHROPIC_API_KEY=""
export ANTHROPIC_MODEL="your-stack-model"
export ANTHROPIC_DEFAULT_SONNET_MODEL="$ANTHROPIC_MODEL"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="$ANTHROPIC_MODEL"
export ANTHROPIC_DEFAULT_OPUS_MODEL="$ANTHROPIC_MODEL"
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=104000
claude

104000 coincide con una ventana de 131072 tokens, dejando espacio para dos cosas: la respuesta en sí, y un turno grande después de que Claude Code decida compactar. Esa segunda reserva importa: la decisión se toma desde el contexto del turno anterior, y leer un solo archivo de 60 KB son ~18k tokens, suficiente para superar el límite antes de que la siguiente solicitud se envíe incluso. Ajústalo si la ventana de tu plan (visible a través de GET /v1/models) es diferente. Si el contexto aún se desborda, usa /clear en lugar de /compact/compact reenvía toda la conversación, que es exactamente lo que ya no cabe.