Ferramentas de código em CLI
NovoUse a Shannon como o modelo por trás do Claude Code, do Codex CLI e de outras CLIs de agentes.
Uma ferramenta de código precisa de três configurações para funcionar com a Shannon: a base URL da API, sua chave de API e um id de modelo Shannon. Esta página traz as configurações exatas para o Claude Code e o Codex CLI, explica como o modelo de código shannon-coder-1 é contado e lista os erros que essas ferramentas encontram.
Qual endpoint cada ferramenta usa
| Ferramenta | Endpoint | Base URL a definir | Nota |
|---|---|---|---|
| Claude Code | POST /v1/messagesPOST /v1/messages/count_tokens | https://api.shannon-ai.com | A ferramenta acrescenta /v1/messages à base URL por conta própria. |
| Codex CLI | POST /v1/responses | https://api.shannon-ai.com/v1 | A ferramenta acrescenta /responses à base URL. |
| Outras ferramentas de agente que falam o formato de chat da OpenAI | POST /v1/chat/completions | https://api.shannon-ai.com/v1 | Defina a base URL, a chave e um id de modelo Shannon nas configurações da própria ferramenta. |
Os três endpoints aceitam a mesma chave de API, como Authorization: Bearer ou como x-api-key. Os headers anthropic-version, anthropic-beta e openai-beta que essas ferramentas enviam são aceitos.
Selecione um modelo Shannon
Toda requisição deve indicar um id de modelo que a Shannon publica. Uma ferramenta de código envia o nome do seu próprio modelo padrão, a menos que você diga o contrário, e um nome que a Shannon não publica é respondido com 400 e a mensagem unknown model: <name>. Nenhum outro nome é mapeado para um modelo Shannon, então defina o modelo na ferramenta antes da primeira requisição.
GET /v1/models lista todos os ids com a sua janela de contexto. Não exige chave. Modelos e preços
| Modelo | Contado como | O que oferece |
|---|---|---|
shannon-coder-1 | Uma chamada por requisição em /v1/messages e /v1/chat/completions. Tokens em /v1/responses. | O modelo de código. Entrada de texto, chamadas de ferramenta, janela de contexto de 131,072 tokens. |
shannon-1.6-liteshannon-1.6-pro | Tokens do seu saldo. | Modelos gerais com chamadas de ferramenta. shannon-1.6-lite serve para as requisições curtas em segundo plano que uma ferramenta faz. |
| Modelos open-weight hospedados | Tokens do seu saldo, com a entrada em cache a 25% do preço de entrada. | Chamadas de ferramenta, cache de prompt para sessões longas e contagens exatas de /v1/messages/count_tokens. |
As ferramentas de código conduzem o modelo com um prompt de sistema longo. O prompt de sistema é aplicado por shannon-coder-1, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro e pelos modelos open-weight hospedados, então selecione um deles para uma ferramenta de código.
Claude Code
O Claude Code lê sua conexão de variáveis de ambiente. Defina-as no shell que o inicia, ou no bloco env de ~/.claude/settings.json para mantê-las em todas as sessões.
# Install Claude Code
npm install -g @anthropic-ai/claude-code
# Where to send requests, and your Shannon API key
export ANTHROPIC_BASE_URL=https://api.shannon-ai.com
export ANTHROPIC_AUTH_TOKEN=YOUR_API_KEY
# Shannon model ids: the session model, and the model behind each built-in name
export ANTHROPIC_MODEL=shannon-coder-1
export ANTHROPIC_DEFAULT_OPUS_MODEL=shannon-coder-1
export ANTHROPIC_DEFAULT_SONNET_MODEL=shannon-coder-1
export ANTHROPIC_DEFAULT_HAIKU_MODEL=shannon-1.6-lite
# The context window of the session model
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=131072
claude {
"env": {
"ANTHROPIC_BASE_URL": "https://api.shannon-ai.com",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
"ANTHROPIC_MODEL": "shannon-coder-1",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "shannon-coder-1",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "shannon-coder-1",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "shannon-1.6-lite",
"CLAUDE_CODE_MAX_CONTEXT_TOKENS": "131072"
}
} | Variável | Descrição |
|---|---|
ANTHROPIC_BASE_URL | Para onde o Claude Code envia suas requisições. Use o endereço sem /v1. |
ANTHROPIC_AUTH_TOKEN | Sua chave de API da Shannon, enviada como Authorization: Bearer. ANTHROPIC_API_KEY também funciona: ela envia a chave como x-api-key, e o Claude Code pede uma vez para você aprová-la. |
ANTHROPIC_MODEL | O modelo da sessão. claude --model <id> e /model <id> definem a mesma coisa. |
ANTHROPIC_DEFAULT_HAIKU_MODEL | O modelo para requisições em segundo plano, como títulos de sessão, e para qualquer coisa que peça haiku. |
ANTHROPIC_DEFAULT_SONNET_MODEL | O modelo usado quando um subagente ou um comando pede sonnet. |
ANTHROPIC_DEFAULT_OPUS_MODEL | O modelo usado quando um subagente ou um comando pede opus. |
CLAUDE_CODE_MAX_CONTEXT_TOKENS | A janela de contexto que o Claude Code assume para o modelo. Use o context_window que GET /v1/models informa para o id que você selecionou. |
- Defina as três variáveis
ANTHROPIC_DEFAULT_…_MODEL. Subagentes e alguns comandos pedem um modelo pelo nome embutido, e cada nome precisa resolver para um id Shannon. - O exemplo aponta as requisições em segundo plano para
shannon-1.6-lite, que é contado em tokens. Assim, títulos de sessão e requisições semelhantes não usam chamadas Coder. - O Claude Code consulta
POST /v1/messages/count_tokenspara saber o tamanho do contexto. O endpoint conta para os modelos open-weight hospedados. Com um id Shannon, ele responde400; o Claude Code trata a contagem de tokens como opcional e estima o tamanho por conta própria. Contagem de tokens
Para verificar o endereço, a chave e um id de modelo antes de iniciar a ferramenta, envie uma requisição manualmente:
curl https://api.shannon-ai.com/v1/messages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-1.6-lite",
"max_tokens": 16,
"messages": [{"role": "user", "content": "Say OK."}]
}' Codex CLI
O Codex CLI fala com a API Responses. Descreva a Shannon como um provedor de modelos em ~/.codex/config.toml, selecione ali um id de modelo Shannon e coloque sua chave de API na variável de ambiente que o provedor indica.
model = "shannon-coder-1"
model_provider = "shannon"
model_context_window = 131072
[model_providers.shannon]
name = "Shannon"
base_url = "https://api.shannon-ai.com/v1"
env_key = "SHANNON_API_KEY"
wire_api = "responses" # Install Codex CLI
npm install -g @openai/codex
# Your Shannon API key, under the name given as env_key
export SHANNON_API_KEY=YOUR_API_KEY
# Start it; --model selects another Shannon id for one run
codex
codex --model shannon-1.6-pro | Chave | Descrição |
|---|---|
model | O id do modelo Shannon. codex --model <id> o define para uma única execução. |
model_provider | O nome do bloco de provedor a usar, aqui shannon. |
base_url | O endereço da API com /v1. |
env_key | O nome da variável de ambiente que contém sua chave de API da Shannon. |
wire_api | responses: o Codex fala com POST /v1/responses. |
model_context_window | A janela de contexto do modelo, para que o Codex compacte uma sessão longa a tempo. Use o context_window que GET /v1/models informa. |
/v1/responsesnão guarda nenhuma conversa no servidor: cada requisição leva a conversa eminput.previous_response_idé aceito por compatibilidade.- Ferramentas de função (
type: "function") são oferecidas ao modelo em/v1/responses. - Em
/v1/responses,shannon-coder-1é contado em tokens do seu saldo, não em chamadas Coder.
A mesma verificação para o endpoint Responses:
curl https://api.shannon-ai.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-1.6-lite",
"input": "Say OK."
}' O modelo de código e como ele é contado
shannon-coder-1 é o modelo Shannon para agentes de código. GET /v1/models o informa com uma janela de contexto de 131,072 tokens, chamadas de ferramenta, raciocínio e entrada de texto. Ele é contado de uma de duas formas, dependendo do endpoint que uma ferramenta usa.
| Endpoint | Uma requisição custa | Retirado de |
|---|---|---|
/v1/messages | 1 chamada por requisição | A cota de chamadas Coder do seu plano. Nenhum token é retirado do seu saldo. |
/v1/chat/completions | 1 chamada por requisição | A cota de chamadas Coder do seu plano. Nenhum token é retirado do seu saldo. |
/v1/responses | Tokens, a $8.00 por 1M | Seu saldo, como qualquer outro modelo. A cota de chamadas não é usada. |
Uma chamada é uma requisição, seja qual for o seu tamanho. Ela é contada quando a requisição é aceita, antes de o modelo responder. Uma sessão de agente envia uma requisição para cada passo que dá, então uma tarefa longa usa muitas chamadas. A cota depende do seu plano e recomeça a cada 4 horas, às 00:00, 04:00, 08:00, 12:00, 16:00 e 20:00 UTC.
| Plano | Chamadas por janela de 4 horas |
|---|---|
| Free | 3 |
| Plus | 20 |
| Standard | 40 |
| Pro | 60 |
A página de planos mostra os números atuais. Planos
Quando as chamadas de uma janela se esgotam, a requisição é respondida com 429. Em /v1/messages, o mesmo erro vem no formato da Anthropic.
{
"error": {
"type": "rate_limit_error",
"message": "Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan"
}
} {
"type": "error",
"error": {
"type": "rate_limit_error",
"message": "Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan"
}
} Estouro de contexto
Quando uma conversa é maior que a janela de contexto do modelo, /v1/chat/completions e /v1/messages respondem com 400, o tipo invalid_request_error, o código context_length_exceeded e uma mensagem que começa com prompt is too long. As ferramentas de código leem esse erro para compactar a sessão e enviar a requisição de novo. Ele é produzido por shannon-coder-1, shannon-1.6-lite e shannon-1.6-pro.
{
"error": {
"type": "invalid_request_error",
"code": "context_length_exceeded",
"message": "prompt is too long: 140211 tokens > 131072 maximum",
"param": null
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"code": "context_length_exceeded",
"message": "prompt is too long: 140211 tokens > 131072 maximum",
"param": null
}
} A mensagem é prompt is too long: <sent> tokens > <limit> maximum. Quando os dois números não são conhecidos, é prompt is too long. Please compact the conversation and try again.
Em um stream, o status já é 200, então o erro chega como um evento e o stream então se fecha normalmente:
data: {"error":{"message":"prompt is too long: 140211 tokens > 131072 maximum","type":"invalid_request_error","code":"context_length_exceeded","param":null}}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","created":…,"model":"shannon-coder-1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{…}}
data: [DONE] event: error
data: {"type":"error","error":{"type":"invalid_request_error","message":"prompt is too long: 140211 tokens > 131072 maximum"}}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{…}}
event: message_stop
data: {"type":"message_stop"} No que um loop de agente pode confiar
| Tópico | Comportamento |
|---|---|
| Schemas de ferramenta | As definições de ferramenta são tomadas como a ferramenta as envia. Em shannon-coder-1 e shannon-1.6-*, palavras-chave de JSON Schema que o modelo não usa, como $schema, $ref, additionalProperties, default e title, ficam fora do que o modelo lê, e oneOf é lido como anyOf. Nenhuma requisição é recusada por causa delas. |
| Argumentos da chamada de ferramenta | Em um stream, os argumentos de uma chamada de ferramenta chegam completos em um único delta: tool_calls[].function.arguments, input_json_delta.partial_json ou response.function_call_arguments.delta. |
| Fim de um turno de ferramenta | finish_reason: "tool_calls" em Chat Completions, stop_reason: "tool_use" em Messages. |
| Keep-alive | Enquanto o modelo trabalha, /v1/messages envia event: ping e /v1/chat/completions envia uma linha de comentário : ping a cada 15 segundos. |
| Interromper uma requisição | Fechar a conexão interrompe o stream. O turno em si é executado até o fim e é contabilizado. |
Solução de problemas
| Sintoma | Causa | Solução |
|---|---|---|
400 com unknown model: claude-… ou unknown model: gpt-… | A ferramenta enviou o nome do seu próprio modelo padrão. Apenas ids Shannon publicados são atendidos, e nenhum outro nome é mapeado para um deles. | Selecione um id Shannon: ANTHROPIC_MODEL e as três variáveis ANTHROPIC_DEFAULT_…_MODEL no Claude Code, model na configuração do Codex. |
400 com unknown model: e sem nome, vindo do Codex CLI | A requisição não indicou nenhum modelo. /v1/responses exige um. | Defina model em ~/.codex/config.toml ou passe --model. |
401 com Missing authentication ou Invalid API key | A chave não chegou à API, ou não é uma chave atual. Uma chave da Shannon começa com sk-. | Verifique se a variável está definida no shell que inicia a ferramenta. Copie a chave novamente em Chaves e uso. |
404 em todas as requisições | A base URL tem um /v1 a mais ou a menos para a ferramenta. | Claude Code: o endereço sem /v1. Codex CLI: o endereço com /v1. |
429 com Shannon Coder call quota reached | As chamadas Coder da janela atual de 4 horas foram esgotadas. | Aguarde a próxima janela, mude para um plano com mais chamadas ou selecione um modelo contado em tokens. |
429 com Quota exceeded | Seu saldo não cobre a requisição. | Adicione créditos ou aguarde a cota diária do seu plano às 00:00 UTC. |
400 com prompt is too long | A conversa é maior que a janela de contexto do modelo. | Compacte a sessão (/compact nas duas ferramentas). Informe à ferramenta a janela de contexto do modelo para que ela compacte mais cedo. |
| O Claude Code mostra números de contexto aproximados | /v1/messages/count_tokens conta para os modelos open-weight hospedados. Com um id Shannon, ele responde 400, e o Claude Code estima o tamanho por conta própria. | Nada a corrigir. Selecione um modelo open-weight hospedado se quiser contagens exatas. |
| Uma captura de tela colada não é levada em conta | shannon-coder-1 aceita entrada de texto. | Selecione, para essa sessão, um modelo que aceite imagens. |
Sua chave e seu saldo estão na página Chaves e uso. Chaves e uso