Strumenti CLI per la programmazione
NuovoUsa Shannon come modello dietro Claude Code, Codex CLI e altre CLI per agenti.
Uno strumento di programmazione ha bisogno di tre impostazioni per funzionare con Shannon: l'URL di base dell'API, la tua chiave API e un id di modello Shannon. Questa pagina fornisce le impostazioni esatte per Claude Code e Codex CLI, spiega come viene conteggiato il modello per la programmazione shannon-coder-1 ed elenca gli errori in cui incorrono questi strumenti.
Quale endpoint usa ogni strumento
| Strumento | Endpoint | URL di base da impostare | Nota |
|---|---|---|---|
| Claude Code | POST /v1/messagesPOST /v1/messages/count_tokens | https://api.shannon-ai.com | Lo strumento aggiunge da solo /v1/messages all'URL di base. |
| Codex CLI | POST /v1/responses | https://api.shannon-ai.com/v1 | Lo strumento aggiunge /responses all'URL di base. |
| Altri strumenti per agenti che parlano il formato chat di OpenAI | POST /v1/chat/completions | https://api.shannon-ai.com/v1 | Imposta l'URL di base, la chiave e un id di modello Shannon nelle impostazioni dello strumento. |
Tutti e tre gli endpoint accettano la stessa chiave API, come Authorization: Bearer o come x-api-key. Gli header anthropic-version, anthropic-beta e openai-beta che questi strumenti inviano sono accettati.
Seleziona un modello Shannon
Ogni richiesta deve indicare un id di modello pubblicato da Shannon. Uno strumento di programmazione invia il nome del proprio modello predefinito a meno che tu non gli dica altrimenti, e un nome che Shannon non pubblica riceve come risposta 400 e il messaggio unknown model: <name>. Nessun altro nome viene associato a un modello Shannon, quindi imposta il modello nello strumento prima della prima richiesta.
GET /v1/models elenca ogni id con la sua finestra di contesto. Non richiede una chiave. Modelli e prezzi
| Modello | Conteggiato come | Cosa offre |
|---|---|---|
shannon-coder-1 | Una chiamata per richiesta su /v1/messages e /v1/chat/completions. Token su /v1/responses. | Il modello per la programmazione. Input di testo, chiamate a tool, finestra di contesto di 131,072 token. |
shannon-1.6-liteshannon-1.6-pro | Token dal tuo saldo. | Modelli generali con chiamate a tool. shannon-1.6-lite è adatto alle brevi richieste in background che uno strumento effettua. |
| Modelli open-weight ospitati | Token dal tuo saldo, con l'input cached al 25% del prezzo dell'input. | Chiamate a tool, prompt caching per le sessioni lunghe e conteggi esatti da /v1/messages/count_tokens. |
Gli strumenti di programmazione guidano il modello con un system prompt lungo. Il system prompt è applicato da shannon-coder-1, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro e dai modelli open-weight ospitati, quindi scegline uno per uno strumento di programmazione.
Claude Code
Claude Code legge la sua connessione dalle variabili d'ambiente. Impostale nella shell che lo avvia, oppure nel blocco env di ~/.claude/settings.json per mantenerle in ogni sessione.
# 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"
}
} | Variabile | Descrizione |
|---|---|
ANTHROPIC_BASE_URL | Dove Claude Code invia le sue richieste. Usa l'indirizzo senza /v1. |
ANTHROPIC_AUTH_TOKEN | La tua chiave API di Shannon, inviata come Authorization: Bearer. Funziona anche ANTHROPIC_API_KEY: invia la chiave come x-api-key, e Claude Code chiede una volta di approvarla. |
ANTHROPIC_MODEL | Il modello della sessione. claude --model <id> e /model <id> impostano la stessa cosa. |
ANTHROPIC_DEFAULT_HAIKU_MODEL | Il modello per le richieste in background, come i titoli delle sessioni, e per tutto ciò che chiede haiku. |
ANTHROPIC_DEFAULT_SONNET_MODEL | Il modello usato quando un subagent o un comando chiede sonnet. |
ANTHROPIC_DEFAULT_OPUS_MODEL | Il modello usato quando un subagent o un comando chiede opus. |
CLAUDE_CODE_MAX_CONTEXT_TOKENS | La finestra di contesto che Claude Code presume per il modello. Usa il context_window che GET /v1/models riporta per l'id selezionato. |
- Imposta tutte e tre le variabili
ANTHROPIC_DEFAULT_…_MODEL. I subagent e alcuni comandi chiedono un modello con il suo nome integrato, e ogni nome deve risolversi in un id Shannon. - L'esempio indirizza le richieste in background a
shannon-1.6-lite, che è conteggiato in token. I titoli delle sessioni e richieste simili non usano allora le chiamate Coder. - Claude Code chiede a
POST /v1/messages/count_tokensla dimensione del contesto. L'endpoint conta per i modelli open-weight ospitati. Con un id Shannon risponde400; Claude Code considera facoltativo il conteggio dei token e stima da sé la dimensione. Conteggio dei token
Per verificare l'indirizzo, la chiave e un id di modello prima di avviare lo strumento, invia una richiesta a mano:
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
Codex CLI parla con la Responses API. Descrivi Shannon come model provider in ~/.codex/config.toml, seleziona lì un id di modello Shannon e inserisci la tua chiave API nella variabile d'ambiente indicata dal provider.
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 | Chiave | Descrizione |
|---|---|
model | L'id del modello Shannon. codex --model <id> lo imposta per una sola esecuzione. |
model_provider | Il nome del blocco provider da usare, qui shannon. |
base_url | L'indirizzo dell'API con /v1. |
env_key | Il nome della variabile d'ambiente che contiene la tua chiave API di Shannon. |
wire_api | responses: Codex parla con POST /v1/responses. |
model_context_window | La finestra di contesto del modello, così Codex compatta in tempo una sessione lunga. Usa il context_window che GET /v1/models riporta. |
/v1/responsesnon conserva alcuna conversazione sul server: ogni richiesta porta la conversazione ininput.previous_response_idè accettato per compatibilità.- I function tool (
type: "function") vengono offerti al modello su/v1/responses. - Su
/v1/responses,shannon-coder-1è conteggiato in token dal tuo saldo, non in chiamate Coder.
La stessa verifica per l'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."
}' Il modello per la programmazione e come viene conteggiato
shannon-coder-1 è il modello Shannon per gli agenti di programmazione. GET /v1/models lo riporta con una finestra di contesto di 131,072 token, chiamate a tool, ragionamento e input di testo. Viene conteggiato in uno di due modi, a seconda dell'endpoint che usa uno strumento.
| Endpoint | Una richiesta costa | Prelevato da |
|---|---|---|
/v1/messages | 1 chiamata per richiesta | La quota di chiamate Coder del tuo piano. Dal tuo saldo non viene prelevato alcun token. |
/v1/chat/completions | 1 chiamata per richiesta | La quota di chiamate Coder del tuo piano. Dal tuo saldo non viene prelevato alcun token. |
/v1/responses | Token, a $8.00 per 1M | Il tuo saldo, come per qualsiasi altro modello. La quota di chiamate non viene usata. |
Una chiamata è una richiesta, qualunque sia la sua dimensione. Viene conteggiata quando la richiesta è accettata, prima che il modello risponda. Una sessione di agente invia una richiesta per ogni passo che compie, quindi un compito lungo usa molte chiamate. La quota dipende dal tuo piano e ricomincia ogni 4 ore, alle 00:00, 04:00, 08:00, 12:00, 16:00 e 20:00 UTC.
| Piano | Chiamate per finestra di 4 ore |
|---|---|
| Free | 3 |
| Plus | 20 |
| Standard | 40 |
| Pro | 60 |
La pagina dei piani mostra i numeri attuali. Piani
Quando le chiamate di una finestra sono esaurite, la richiesta riceve come risposta 429. Su /v1/messages lo stesso errore arriva nella forma 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"
}
} Superamento del contesto
Quando una conversazione è più grande della finestra di contesto del modello, /v1/chat/completions e /v1/messages rispondono con 400, il tipo invalid_request_error, il codice context_length_exceeded e un messaggio che inizia con prompt is too long. Gli strumenti di programmazione leggono questo errore per compattare la sessione e inviare di nuovo la richiesta. È prodotto da 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
}
} Il messaggio è prompt is too long: <sent> tokens > <limit> maximum. Quando i due numeri non sono noti è prompt is too long. Please compact the conversation and try again.
Su uno stream lo stato è già 200, quindi l'errore arriva come evento e lo stream si chiude poi 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"} Su cosa può contare un ciclo di agente
| Argomento | Comportamento |
|---|---|
| Schemi dei tool | Le definizioni dei tool vengono prese come le invia lo strumento. Su shannon-coder-1 e shannon-1.6-*, le parole chiave di JSON Schema che il modello non usa, come $schema, $ref, additionalProperties, default e title, vengono escluse da ciò che il modello legge, e oneOf viene letto come anyOf. Nessuna richiesta viene rifiutata per questo. |
| Argomenti delle chiamate a tool | In uno stream, gli argomenti di una chiamata a un tool arrivano completi in un solo delta: tool_calls[].function.arguments, input_json_delta.partial_json o response.function_call_arguments.delta. |
| Fine di un turno di tool | finish_reason: "tool_calls" su Chat Completions, stop_reason: "tool_use" su Messages. |
| Keep-alive | Mentre il modello lavora, /v1/messages invia event: ping e /v1/chat/completions invia una riga di commento : ping ogni 15 secondi. |
| Interrompere una richiesta | Chiudere la connessione ferma lo stream. Il turno stesso prosegue fino alla fine e viene conteggiato. |
Risoluzione dei problemi
| Sintomo | Causa | Soluzione |
|---|---|---|
400 con unknown model: claude-… o unknown model: gpt-… | Lo strumento ha inviato il nome del proprio modello predefinito. Vengono serviti solo gli id Shannon pubblicati, e nessun altro nome viene associato a uno di essi. | Scegli un id Shannon: ANTHROPIC_MODEL e le tre variabili ANTHROPIC_DEFAULT_…_MODEL in Claude Code, model nella configurazione di Codex. |
400 con unknown model: e nessun nome, da Codex CLI | La richiesta non indicava alcun modello. /v1/responses ne richiede uno. | Imposta model in ~/.codex/config.toml oppure passa --model. |
401 con Missing authentication o Invalid API key | La chiave non è arrivata all'API, oppure non è una chiave attuale. Una chiave Shannon inizia con sk-. | Verifica che la variabile sia impostata nella shell che avvia lo strumento. Copia di nuovo la chiave da Chiavi e utilizzo. |
404 a ogni richiesta | L'URL di base ha un /v1 di troppo o di meno per lo strumento. | Claude Code: l'indirizzo senza /v1. Codex CLI: l'indirizzo con /v1. |
429 con Shannon Coder call quota reached | Le chiamate Coder della finestra di 4 ore in corso sono esaurite. | Attendi la finestra successiva, passa a un piano con più chiamate, oppure scegli un modello conteggiato in token. |
429 con Quota exceeded | Il tuo saldo non copre la richiesta. | Aggiungi credito, oppure attendi la quota giornaliera del tuo piano alle 00:00 UTC. |
400 con prompt is too long | La conversazione è più grande della finestra di contesto del modello. | Compatta la sessione (/compact in entrambi gli strumenti). Indica allo strumento la finestra di contesto del modello, così compatta prima. |
| Claude Code mostra numeri di contesto approssimativi | /v1/messages/count_tokens conta per i modelli open-weight ospitati. Con un id Shannon risponde 400, e Claude Code stima da sé la dimensione. | Nulla da correggere. Scegli un modello open-weight ospitato se vuoi conteggi esatti. |
| Uno screenshot incollato non viene preso in considerazione | shannon-coder-1 accetta input di testo. | Scegli per quella sessione un modello che accetti immagini. |
La tua chiave e il tuo saldo si trovano nella pagina Chiavi e utilizzo. Chiavi e utilizzo