Pular para o conteúdo principal
Esta página orienta um administrador através da implantação de um gateway LLM para Claude Code. Ela assume que você tem um produto de gateway implantado que atende aos requisitos do gateway. A implantação ou operação de qualquer produto específico não é abordada aqui; implante o seu seguindo a documentação do seu fornecedor.

Pré-requisitos

Para concluir a implantação, você precisará de:
  • Um gateway implantado em sua infraestrutura, servindo HTTPS no endereço exato que você distribuirá aos desenvolvedores, não em um endereço que redireciona para ele, e configurado para rotear nomes de modelos Claude para seu provedor
  • Uma credencial de provedor para o gateway encaminhar com:
  • Uma maneira de entregar arquivos de configurações para máquinas de desenvolvedores, como MDM ou gerenciamento de configuração

Requisitos do gateway

Qualquer que seja o produto que fornece o gateway, ele deve:
  • Aceitar um formato de API suportado: um dos formatos na tabela de formatos de API. As etapas de implantação abaixo assumem a API de Mensagens Anthropic em POST /v1/messages, que a maioria dos gateways serve
  • Transmitir respostas: passar eventos enviados pelo servidor conforme chegam em vez de armazenar em buffer a resposta inteira
  • Rotear nomes de modelos Claude: mapear cada nome que os desenvolvedores usam para um modelo upstream. Claude Code envia um nome de modelo como claude-sonnet-4-6 em cada solicitação; na maioria dos produtos de gateway o mapeamento é uma lista de modelos ou tabela de roteamento na própria configuração do gateway
  • Encaminhar cabeçalhos e corpo sem alterações: passar anthropic-beta, anthropic-version e o corpo da solicitação em ambas as direções; a tabela de passagem de recursos mapeia cada um para o recurso que quebra sem ele
  • Retornar erros upstream não modificados: a recuperação automática do Claude Code corresponde à redação do erro, portanto envolver erros no próprio envelope do gateway quebra isso
  • Isentar o caminho da inspeção WAF do corpo da solicitação: os prompts do Claude Code carregam código-fonte e tags de estilo XML que correspondem às regras do corpo de cross-site-scripting; um WAF na frente do gateway retorna 403 em sessões reais enquanto solicitações de teste curtas passam
Opcionalmente, sirva GET /v1/models para que Claude Code possa preencher o seletor de modelo do seu gateway com descoberta de modelo.

Etapas de implantação

A implantação leva cinco etapas, cada uma com um ponto de verificação:
  1. Confirme que o gateway roteia seus modelos
  2. Emita uma credencial para cada desenvolvedor
  3. Teste Claude Code contra o gateway
  4. Distribua a URL base e as credenciais
  5. Verifique a partir de uma máquina de desenvolvedor
As etapas envolvem três credenciais diferentes, e os pontos de verificação as nomeiam por espaço reservado para que você possa dizer qual é a culpada quando algo falha:
CredencialQuem a detémEspaço reservado nos pontos de verificação
Credencial do provedorO gateway, que a encaminha para o provedor upstreamConfigurado no gateway; nunca aparece em comandos do cliente
Credencial administrativa do gatewayVocê, se seu produto de gateway emitir uma para sua interface de administrador ou teste<gateway-key>
Chave do desenvolvedorCada desenvolvedor, emitido pelo gateway em Emita credenciais de desenvolvedor<developer-key>

Confirme que o gateway roteia seus modelos

Seu gateway já deve estar configurado com sua credencial de provedor, ouvindo em sua URL base e encaminhando solicitações para a API do seu provedor. Teste que o caminho funciona de ponta a ponta com uma solicitação mínima, substituindo dois valores de sua implantação:
  • <gateway-key> é qualquer credencial que permite chamar o gateway agora: uma chave administrativa, uma chave de teste ou sua própria chave de desenvolvedor se você já tiver emitido uma. Nem todo produto de gateway tem uma credencial de administrador separada; se o seu não tiver, emita uma chave de desenvolvedor para você em Emita credenciais de desenvolvedor primeiro
  • model é um nome de modelo Claude que seu gateway está configurado para rotear. O exemplo usa claude-sonnet-4-6; substitua um nome que você configurou
curl -X POST "https://llm-gateway.example.com/v1/messages" \
  -H "Authorization: Bearer <gateway-key>" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-4-6", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'
Ponto de verificação: um 200 com um campo content significa que o gateway alcançou o provedor com esse nome de modelo. Um 404 significa que esse nome não é roteado no gateway; um 401 do provedor significa que a credencial do provedor do gateway está errada. Repita a solicitação uma vez por nome de modelo Claude na configuração de roteamento do seu gateway. Um nome que o gateway não roteia retorna 404 para qualquer desenvolvedor que o selecione, portanto teste cada nome antes da implantação.
Evite servir o gateway atrás de um redirecionamento. Um redirecionamento pode descartar o corpo da solicitação ou remover o cabeçalho de credencial em solicitações de inferência, e descoberta de modelo trata qualquer redirecionamento como uma falha para que a credencial não possa vazar para um alvo de redirecionamento.

Emita credenciais de desenvolvedor

Cada desenvolvedor precisa de sua própria chave de gateway para autenticar. Crie uma credencial por desenvolvedor no gateway, seguindo a documentação de gerenciamento de credenciais do seu produto. Confirme que uma chave recém-emitida funciona contra o gateway com a mesma solicitação que Confirme que o gateway roteia seus modelos, substituindo <gateway-key> pela nova <developer-key>:
curl -X POST "https://llm-gateway.example.com/v1/messages" \
  -H "Authorization: Bearer <developer-key>" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-4-6", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'
Ponto de verificação: um 200 com um campo content significa que a chave do desenvolvedor alcança o gateway e o gateway a encaminha. Um 401 aqui, quando a etapa anterior foi bem-sucedida, significa que a chave do desenvolvedor está errada ou ainda não entrou em vigor no gateway. Emitir uma chave por desenvolvedor em vez de uma chave compartilhada é o que torna a atribuição de uso por desenvolvedor e o offboarding individual funcionarem. A variável de ambiente que contém a chave depende de qual cabeçalho o gateway lê. Para um gateway que verifica credenciais no cabeçalho Authorization: Bearer, os desenvolvedores definem sua chave em ANTHROPIC_AUTH_TOKEN. Para um gateway que lê chaves do cabeçalho x-api-key, os desenvolvedores definem ANTHROPIC_API_KEY em vez disso; a tabela de credenciais cobre o mapeamento.

Teste Claude Code contra o gateway

Execute Claude Code através do gateway você mesmo antes de distribuir qualquer coisa, usando a mesma configuração que a implantação entregará em toda a frota. Digite-os diretamente em um terminal, não em um arquivo .env ou arquivo de configurações; eles duram apenas para esta sessão de terminal, portanto fechá-la retorna sua máquina à sua configuração normal. Use ANTHROPIC_API_KEY em vez de ANTHROPIC_AUTH_TOKEN se seu gateway lê o cabeçalho x-api-key:
export ANTHROPIC_BASE_URL=https://llm-gateway.example.com
export ANTHROPIC_AUTH_TOKEN="<developer-key>"
Em seguida, envie um prompt único através do gateway:
claude -p "Reply with one word: connected"
Ponto de verificação: o prompt retorna uma resposta e a solicitação aparece no log do gateway como um POST para o caminho /v1/messages com status 200. Claude Code anexa uma string de consulta como ?beta=true, portanto corresponda no caminho, não na URL completa. Duas mensagens de falha apontam em direções diferentes:
  • Not logged in: verifique o log do gateway para distinguir as duas causas. Se estiver vazio, nenhuma credencial alcançou a sessão e nenhuma solicitação saiu da máquina; re-execute as exportações no shell que você está testando. Se mostrar uma solicitação rejeitada com x-api-key no corpo 401, o gateway espera chaves nesse cabeçalho em vez disso; mude para ANTHROPIC_API_KEY
  • Failed to authenticate. API Error: 401 significa que uma credencial foi enviada e rejeitada, e o log do gateway diz onde: um 401 nomeando api.anthropic.com ou o endpoint do seu provedor significa que o gateway alcançou o upstream mas sua credencial de provedor foi rejeitada, portanto a chave do desenvolvedor funcionou e a credencial do provedor que o gateway detém está errada ou é um espaço reservado
Uma URL base errada ou inacessível produz um sintoma diferente: Claude Code tenta novamente a conexão com backoff e pode ficar sem saída por vários minutos antes de relatar um erro. Se o comando parecer travar, verifique o log do gateway em vez de esperar; nenhuma solicitação chegando significa que ANTHROPIC_BASE_URL não aponta para o gateway.

Distribua a configuração

Cada máquina de desenvolvedor precisa do endereço do gateway e de uma credencial. Você pode distribuí-los centralmente através de configurações gerenciadas, para que os desenvolvedores não configurem nada, ou entregue aos desenvolvedores os valores para definir eles mesmos.

O que distribuir

O mesmo conjunto de variáveis se aplica qualquer que seja o caminho que você escolha. A maioria das implantações só precisa de ANTHROPIC_BASE_URL e uma credencial; inclua as linhas condicionais quando sua configuração de gateway as exigir.
Variável ou configuraçãoO que fazIncluir quando
ANTHROPIC_BASE_URLEnvia as solicitações de API do Claude Code para o gateway em vez de api.anthropic.comSempre
apiKeyHelper, ou uma credencial em ANTHROPIC_AUTH_TOKEN ou ANTHROPIC_API_KEYAutentica cada solicitação ao gateway. O auxiliar executa um comando para buscar a chave; as variáveis mantêm uma chave estática, enviada como Authorization: Bearer e x-api-key respectivamenteSempre; uma das três
ANTHROPIC_CUSTOM_HEADERSAdiciona cabeçalhos HTTP extras a cada solicitação de APISeu gateway requer um cabeçalho de locatário ou roteamento em cada solicitação
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERYConsulta /v1/models do gateway na inicialização e adiciona os nomes retornados ao seletor /modelSeu gateway serve /v1/models e você quer que os seletores dos desenvolvedores sejam preenchidos a partir dele
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASPara Claude Code de enviar cabeçalhos de capacidade pré-lançamento e campos de corpoSeu gateway encaminha para um upstream Bedrock ou Vertex que rejeita campos beta; consulte Requisitos do gateway
ANTHROPIC_MODEL ou ANTHROPIC_DEFAULT_HAIKU_MODELDefine qual nome de modelo Claude Code solicita para a sessão principal e para tráfego de fundoSeu gateway roteia nomes de modelos que não correspondem aos padrões do Claude Code, ou você roteia funcionalidade de fundo para um modelo diferente. Rotear tanto os nomes de substituição quanto os nomes padrão do Claude Code no gateway, já que algumas sub-chamadas podem solicitar o nome padrão independentemente da substituição
ANTHROPIC_BEDROCK_BASE_URL, ANTHROPIC_VERTEX_BASE_URL, ANTHROPIC_FOUNDRY_BASE_URL ou ANTHROPIC_AWS_BASE_URL com as variáveis para esse provedorAponte Claude Code para o gateway através de uma URL base específica do provedor. Bedrock e Vertex também mudam para o formato de solicitação nativo desses provedoresSeu gateway está na frente de Bedrock, Vertex, Foundry ou da Plataforma Claude no AWS; consulte Formatos de API

Distribua através de configurações gerenciadas

Entregue as variáveis através do bloco env de um arquivo de configurações gerenciadas, enviado por MDM, política de registro ou gerenciamento de configuração:
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://llm-gateway.example.com"
  },
  "apiKeyHelper": "/usr/local/bin/get-gateway-key"
}
Adicione as variáveis condicionais da tabela ao mesmo bloco env. Um ANTHROPIC_BASE_URL gerenciado é imposto e não pode ser substituído pela exportação de shell de um desenvolvedor, já que Claude Code o aplica sobre o ambiente do processo e configurações de precedência inferior. Não inclua forceLoginMethod ou forceLoginOrgUUID em configurações gerenciadas junto com uma credencial de gateway. No Claude Code v2.1.146 e posterior, qualquer chave bloqueia ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN e apiKeyHelper na inicialização, portanto os desenvolvedores veem This machine's managed settings require a first-party login e não podem prosseguir. A entrega de configurações gerenciadas pelo servidor requer uma conexão direta com api.anthropic.com, portanto não alcança sessões roteadas por gateway. As implantações de gateway usam este caminho de configurações gerenciadas baseado em arquivo, que impõe as mesmas chaves. Para a credencial, distribua um comando apiKeyHelper no arquivo de configurações gerenciadas conforme mostrado acima; o comando autentica seu armazenamento de segredos como o desenvolvedor local, portanto cada máquina recebe sua própria chave. Alternativamente, entregue a cada desenvolvedor sua chave através do seu processo de segredos existente e peça-lhes para definir ANTHROPIC_AUTH_TOKEN eles mesmos. Alguns ambientes precisam de entrega separada:

Entregue aos desenvolvedores os valores para definir eles mesmos

Se você não tiver distribuição de configurações gerenciadas em vigor, envie a cada desenvolvedor o que ele precisa para seguir a página de conexão:
  • A URL do gateway
  • Sua credencial pessoal
  • Qual variável colocar a credencial em: ANTHROPIC_AUTH_TOKEN para um gateway de token portador, ou ANTHROPIC_API_KEY para um gateway x-api-key. Dizer aos desenvolvedores qual economiza o trial-and-error descrito na página de conexão
  • Quaisquer variáveis condicionais da tabela O que distribuir, com seus valores
A página de conexão orienta os desenvolvedores através da definição de cada uma. Ponto de verificação: em uma máquina de desenvolvedor, claude inicia uma sessão sem mostrar a tela de login, já que a credencial distribuída satisfaz a autenticação. Em seguida, execute /status e abra a aba Status: a linha Anthropic base URL mostra o endereço do gateway, e para distribuição gerenciada a linha Setting sources inclui configurações gerenciadas. Uma tela de login, ou uma linha Anthropic base URL ausente, significa que a configuração não alcançou a máquina.

Verifique a implantação

Confirme que tudo funciona a partir de uma máquina de desenvolvedor, não do host do gateway, para que o teste cubra o caminho de rede que os desenvolvedores usam. Envie uma solicitação de streaming, que verifica o endpoint, passagem de streaming e roteamento de modelo de uma vez:
curl -N -X POST "https://llm-gateway.example.com/v1/messages" \
  -H "Authorization: Bearer <developer-key>" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-4-6", "max_tokens": 16, "stream": true, "messages": [{"role": "user", "content": "count to 3"}]}'
Você deve ver linhas data: chegarem incrementalmente. A resposta inteira chegando de uma vez após uma pausa significa que o gateway está armazenando em buffer, o que paralisa Claude Code; um 404 significa que o nome do modelo não é roteado. Repita por nome de modelo. Em seguida, inicie claude e envie uma mensagem. Cada sintoma nesta etapa tem uma causa:
  • Um prompt de login significa uma lacuna de credencial. Execute /status e abra a aba Status: quando a linha Setting sources não inclui configurações gerenciadas, a distribuição não alcançou a máquina; quando inclui, a credencial do desenvolvedor não foi entregue, portanto defina ANTHROPIC_AUTH_TOKEN ou o apiKeyHelper
  • Erros Failed to authenticate significam que o gateway está rejeitando solicitações; seu log diz qual credencial falhou. Uma rejeição que o gateway registra em si nomeia a chave do desenvolvedor, enquanto um 401 de api.anthropic.com ou do endpoint do seu provedor significa que a credencial do provedor que o gateway detém foi rejeitada
  • Um prompt de aprovação única para a chave é esperado no primeiro uso quando o gateway espera chaves no cabeçalho x-api-key, definido como ANTHROPIC_API_KEY. Com ANTHROPIC_AUTH_TOKEN, nenhum prompt aparece e a variável assume silenciosamente; um login claude.ai previamente salvo está inativo para essa sessão
Finalmente, verifique os logs do gateway para a mensagem que você enviou: a credencial identifica o desenvolvedor, e o cabeçalho x-claude-code-session-id agrupa solicitações por sessão. Se os recursos falharem com os sintomas de solução de problemas, o gateway está removendo cabeçalhos ou reescrevendo erros; consulte os requisitos do gateway acima.

Mantenha o gateway

Após a implantação, três tipos de mudança alcançam o gateway ao longo do tempo. Cada um tem um sintoma a observar e uma ação a tomar.
MudançaSintoma quando o gateway não acompanhouAção
Novos lançamentos do Claude Code adicionam valores anthropic-beta e campos de corpo de solicitaçãoOs desenvolvedores relatam erros 400 nomeando um novo campo depois que atualizam Claude Code; consulte passagem de recursosEncaminhe cabeçalhos anthropic-* e corpos de solicitação verbatim em vez de usar lista de permissões; teste novos lançamentos do Claude Code contra o gateway antes de alcançarem os desenvolvedores
Novos modelos Claude ficam disponíveisOs desenvolvedores selecionando um novo nome de modelo obtêm 404; o seletor /model não o listaAdicione o nome do modelo à configuração de roteamento do gateway, em seguida, re-execute a verificação de roteamento. Se você distribuir ANTHROPIC_MODEL ou as variáveis de modelo padrão, atualize as configurações gerenciadas
Credenciais expiram ou precisam de rotaçãoTodas as solicitações de desenvolvedor começam a falhar com 401 do upstreamRotacione a credencial do provedor do gateway em seu próprio cronograma; as chaves do desenvolvedor giram no gateway, e um apiKeyHelper lida com rotação por desenvolvedor sem redistribuir configurações
Ao dimensionar limites de taxa por chave, leve em conta o cliente tentando novamente falhas transitórias, incluindo respostas 429, até 10 vezes com backoff, honrando Retry-After. Mantenha a referência do protocolo como o contrato para o que cada lançamento do Claude Code envia.