Eines de programació CLI
NouFes servir Shannon com a model darrere de Claude Code, Codex CLI i altres CLI d'agents.
Una eina de programació necessita tres paràmetres per funcionar amb Shannon: la URL base de l'API, la teva clau API i un id de model Shannon. Aquesta pàgina dona els paràmetres exactes per a Claude Code i Codex CLI, explica com es compta el model de programació shannon-coder-1 i llista els errors que troben aquestes eines.
Quin endpoint fa servir cada eina
| Eina | Endpoint | URL base que cal definir | Nota |
|---|---|---|---|
| Claude Code | POST /v1/messagesPOST /v1/messages/count_tokens | https://api.shannon-ai.com | L'eina afegeix ella mateixa /v1/messages a la URL base. |
| Codex CLI | POST /v1/responses | https://api.shannon-ai.com/v1 | L'eina afegeix /responses a la URL base. |
| Altres eines d'agent que parlen el format de xat d'OpenAI | POST /v1/chat/completions | https://api.shannon-ai.com/v1 | Defineix la URL base, la clau i un id de model Shannon a la configuració pròpia de l'eina. |
Els tres endpoints accepten la mateixa clau API, com a Authorization: Bearer o com a x-api-key. S'accepten les capçaleres anthropic-version, anthropic-beta i openai-beta que envien aquestes eines.
Selecciona un model Shannon
Cada sol·licitud ha d'indicar un id de model que Shannon publiqui. Una eina de programació envia el nom del seu propi model per defecte si no li indiques una altra cosa, i un nom que Shannon no publica es respon amb 400 i el missatge unknown model: <name>. Cap altre nom s'associa a un model Shannon, així que defineix el model a l'eina abans de la primera sol·licitud.
GET /v1/models llista cada id amb la seva finestra de context. No necessita clau. Models i preus
| Model | Comptat com a | Què aporta |
|---|---|---|
shannon-coder-1 | Una crida per sol·licitud a /v1/messages i /v1/chat/completions. Tokens a /v1/responses. | El model de programació. Entrada de text, crides d'eina, finestra de context de 131,072 tokens. |
shannon-1.6-liteshannon-1.6-pro | Tokens del teu saldo. | Models generals amb crides d'eina. shannon-1.6-lite va bé per a les sol·licituds curtes en segon pla que fa una eina. |
| Models open-weight hostejats | Tokens del teu saldo, amb l'entrada en cache al 25% del preu d'entrada. | Crides d'eina, prompt caching per a sessions llargues i recomptes exactes de /v1/messages/count_tokens. |
Les eines de programació dirigeixen el model amb un prompt de sistema llarg. El prompt de sistema l'apliquen shannon-coder-1, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro i els models open-weight hostejats, així que selecciona'n un per a una eina de programació.
Claude Code
Claude Code llegeix la seva connexió de variables d'entorn. Defineix-les a la shell que l'inicia, o al bloc env de ~/.claude/settings.json per conservar-les a cada sessió.
# 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"
}
} | Variable | Descripció |
|---|---|
ANTHROPIC_BASE_URL | On Claude Code envia les seves sol·licituds. Fes servir l'adreça sense /v1. |
ANTHROPIC_AUTH_TOKEN | La teva clau API de Shannon, enviada com a Authorization: Bearer. ANTHROPIC_API_KEY també funciona: envia la clau com a x-api-key, i Claude Code demana una vegada que l'aprovis. |
ANTHROPIC_MODEL | El model de la sessió. claude --model <id> i /model <id> defineixen el mateix. |
ANTHROPIC_DEFAULT_HAIKU_MODEL | El model per a les sol·licituds en segon pla, com els títols de sessió, i per a tot el que demani haiku. |
ANTHROPIC_DEFAULT_SONNET_MODEL | El model que es fa servir quan un subagent o una ordre demana sonnet. |
ANTHROPIC_DEFAULT_OPUS_MODEL | El model que es fa servir quan un subagent o una ordre demana opus. |
CLAUDE_CODE_MAX_CONTEXT_TOKENS | La finestra de context que Claude Code assumeix per al model. Fes servir el context_window que GET /v1/models informa per a l'id que has seleccionat. |
- Defineix les tres variables
ANTHROPIC_DEFAULT_…_MODEL. Els subagents i algunes ordres demanen un model pel seu nom integrat, i cada nom s'ha de resoldre a un id Shannon. - L'exemple apunta les sol·licituds en segon pla a
shannon-1.6-lite, que es compta en tokens. Els títols de sessió i sol·licituds semblants no fan servir llavors crides de Coder. - Claude Code demana a
POST /v1/messages/count_tokensla mida del context. L'endpoint compta per als models open-weight hostejats. Amb un id Shannon respon400; Claude Code tracta el recompte de tokens com a opcional i estima la mida per si mateix. Recompte de tokens
Per comprovar l'adreça, la clau i un id de model abans d'iniciar l'eina, envia una sol·licitud a mà:
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 amb l'API Responses. Descriu Shannon com a proveïdor de models a ~/.codex/config.toml, selecciona-hi un id de model Shannon i posa la teva clau API a la variable d'entorn que el proveïdor 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 | Clau | Descripció |
|---|---|
model | L'id del model Shannon. codex --model <id> el defineix per a una execució. |
model_provider | El nom del bloc de proveïdor que cal fer servir, aquí shannon. |
base_url | L'adreça de l'API amb /v1. |
env_key | El nom de la variable d'entorn que conté la teva clau API de Shannon. |
wire_api | responses: Codex parla amb POST /v1/responses. |
model_context_window | La finestra de context del model, perquè Codex compacti a temps una sessió llarga. Fes servir el context_window que informa GET /v1/models. |
/v1/responsesno guarda cap conversa al servidor: cada sol·licitud porta la conversa ainput.previous_response_ids'accepta per compatibilitat.- Les eines de funció (
type: "function") s'ofereixen al model a/v1/responses. - A
/v1/responses,shannon-coder-1es compta en tokens del teu saldo, no en crides de Coder.
La mateixa comprovació per a 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."
}' El model de programació i com es compta
shannon-coder-1 és el model Shannon per a agents de programació. GET /v1/models l'informa amb una finestra de context de 131,072 tokens, crides d'eina, raonament i entrada de text. Es compta d'una de dues maneres, segons l'endpoint que faci servir una eina.
| Endpoint | Una sol·licitud costa | Es treu de |
|---|---|---|
/v1/messages | 1 crida per sol·licitud | La quota de crides de Coder del teu pla. No es treu cap token del teu saldo. |
/v1/chat/completions | 1 crida per sol·licitud | La quota de crides de Coder del teu pla. No es treu cap token del teu saldo. |
/v1/responses | Tokens, a $8.00 per 1M | El teu saldo, com qualsevol altre model. La quota de crides no es fa servir. |
Una crida és una sol·licitud, sigui quina sigui la seva mida. Es compta quan la sol·licitud s'accepta, abans que el model respongui. Una sessió d'agent envia una sol·licitud per cada pas que fa, de manera que una tasca llarga gasta moltes crides. La quota depèn del teu pla i torna a començar cada 4 hores, a les 00:00, 04:00, 08:00, 12:00, 16:00 i 20:00 UTC.
| Pla | Crides per finestra de 4 hores |
|---|---|
| Free | 3 |
| Plus | 20 |
| Standard | 40 |
| Pro | 60 |
La pàgina del pla mostra les xifres actuals. Plans
Quan s'esgoten les crides d'una finestra, la sol·licitud es respon amb 429. A /v1/messages el mateix error arriba amb la forma d'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"
}
} Desbordament de context
Quan una conversa és més gran que la finestra de context del model, /v1/chat/completions i /v1/messages responen amb 400, el tipus invalid_request_error, el codi context_length_exceeded i un missatge que comença per prompt is too long. Les eines de programació llegeixen aquest error per compactar la sessió i tornar a enviar la sol·licitud. El produeixen shannon-coder-1, shannon-1.6-lite i 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
}
} El missatge és prompt is too long: <sent> tokens > <limit> maximum. Quan els dos números no es coneixen és prompt is too long. Please compact the conversation and try again.
En un stream l'estat ja és 200, així que l'error arriba com a esdeveniment i el stream es tanca després de la manera normal:
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"} En què pot confiar un bucle d'agent
| Tema | Comportament |
|---|---|
| Esquemes d'eines | Les definicions d'eines es prenen tal com les envia l'eina. A shannon-coder-1 i shannon-1.6-*, les paraules clau de JSON Schema que el model no fa servir, com $schema, $ref, additionalProperties, default i title, s'ometen del que el model llegeix, i oneOf es llegeix com a anyOf. Cap sol·licitud es rebutja per això. |
| Arguments de la crida d'eina | En un stream, els arguments d'una crida d'eina arriben complets en un sol delta: tool_calls[].function.arguments, input_json_delta.partial_json o response.function_call_arguments.delta. |
| Final d'un torn d'eina | finish_reason: "tool_calls" a Chat Completions, stop_reason: "tool_use" a Messages. |
| Keep-alive | Mentre el model treballa, /v1/messages envia event: ping i /v1/chat/completions envia una línia de comentari : ping cada 15 segons. |
| Aturar una sol·licitud | Tancar la connexió atura el stream. El torn en si s'executa fins al final i es compta. |
Resolució de problemes
| Símptoma | Causa | Solució |
|---|---|---|
400 amb unknown model: claude-… o unknown model: gpt-… | L'eina ha enviat el nom del seu propi model per defecte. Només se serveixen els ids de Shannon publicats, i cap altre nom s'hi associa. | Selecciona un id Shannon: ANTHROPIC_MODEL i les tres variables ANTHROPIC_DEFAULT_…_MODEL a Claude Code, model a la configuració de Codex. |
400 amb unknown model: i sense cap nom, des de Codex CLI | La sol·licitud no indicava cap model. /v1/responses en necessita un. | Defineix model a ~/.codex/config.toml o passa --model. |
401 amb Missing authentication o Invalid API key | La clau no ha arribat a l'API, o no és una clau actual. Una clau Shannon comença per sk-. | Comprova que la variable estigui definida a la shell que inicia l'eina. Torna a copiar la clau des de Keys & usage. |
404 a cada sol·licitud | La URL base té un /v1 de més o de menys per a l'eina. | Claude Code: l'adreça sense /v1. Codex CLI: l'adreça amb /v1. |
429 amb Shannon Coder call quota reached | Les crides de Coder de la finestra actual de 4 hores s'han esgotat. | Espera la finestra següent, passa a un pla amb més crides o selecciona un model que es compti en tokens. |
429 amb Quota exceeded | El teu saldo no cobreix la sol·licitud. | Afegeix crèdit o espera la quota diària del teu pla a les 00:00 UTC. |
400 amb prompt is too long | La conversa és més gran que la finestra de context del model. | Compacta la sessió (/compact a les dues eines). Digues a l'eina la finestra de context del model perquè compacti abans. |
| Claude Code mostra números de context aproximats | /v1/messages/count_tokens compta per als models open-weight hostejats. Amb un id Shannon respon 400, i Claude Code estima la mida per si mateix. | Res a corregir. Selecciona un model open-weight hostejat si vols recomptes exactes. |
| Una captura de pantalla enganxada no es té en compte | shannon-coder-1 accepta entrada de text. | Selecciona un model que accepti imatges per a aquesta sessió. |
La teva clau i el teu saldo són a la pàgina Keys & usage. Keys & usage