Guias

Compatibilidade com Anthropic

O que é idêntico, o que difere e como apontar um cliente com formato Anthropic para o Stac.

O Stac também implementa a Messages API da Anthropic, então ferramentas nativas do Claude e o SDK anthropic funcionam com seu stack sem traduzir requisições para o formato 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,
  });

Suportado

RecursoStatus
POST /v1/messagesCompleto
POST /v1/messages/count_tokensCompleto
Streaming (SSE, formato de evento Anthropic)Completo
Tool useCompleto
Blocos de conteúdo de imagemDepende do modelo — verifique capabilities em GET /v1/models
x-api-key e autenticação Authorization: BearerAmbos aceitos
Cache de prompt (cache_control)Aceito, sem efeito — não existe medidor por token para economizar

Diferenças que importam

  • model é sempre ignorado. Seu stack tem exatamente um modelo atribuído; qualquer valor que você envia é substituído por ele — obrigatório no corpo da requisição apenas porque o formato Anthropic espera o campo.
  • max_tokens é limitado, não apenas obrigatório. Requisições são limitadas a no mínimo 8000 e no máximo 16000 — veja Messages.
  • system substitui a configuração do seu stack, a mesma regra dos chat completions: não envie system para manter o prompt configurado do seu stack e a base de conhecimento; envie um (não vazio) para sobrescrever ambos para aquela requisição. Veja Conceitos básicos.
  • Rate limiting é por chave, não por tier. Veja Erros e rate limits.

Ferramentas de linha de comando

Claude Code

O Claude Code assume uma janela de contexto de 200k tokens e só descobre o limite real do seu plano quando uma chamada é rejeitada — defina CLAUDE_CODE_AUTO_COMPACT_WINDOW para que ele compacte proativamente:

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 corresponde a uma janela de 131072 tokens, deixando espaço para duas coisas: a resposta em si, e uma turn grande depois que o Claude Code decide compactar. Essa segunda reserva importa — a decisão é tomada a partir do contexto da turn anterior, e ler um único arquivo de 60 KB são ~18k tokens, o suficiente para ultrapassar o limite antes mesmo de a próxima requisição ser enviada. Ajuste se a janela do seu plano (visível via GET /v1/models) for diferente. Se o contexto ainda transborda, use /clear em vez de /compact/compact reenvia a conversa inteira, que é exatamente o que não cabe mais.