Instrumente CLI pentru programare
NouFolosește Shannon ca model din spatele Claude Code, Codex CLI și al altor CLI-uri de tip agent.
Un instrument de programare are nevoie de trei setări pentru a funcționa cu Shannon: URL-ul de bază al API-ului, cheia ta API și un id de model Shannon. Această pagină oferă setările exacte pentru Claude Code și Codex CLI, explică cum este numărat modelul de programare shannon-coder-1 și listează erorile pe care le întâlnesc aceste instrumente.
Ce endpoint folosește fiecare instrument
| Instrument | Endpoint | URL de bază de setat | Notă |
|---|---|---|---|
| Claude Code | POST /v1/messagesPOST /v1/messages/count_tokens | https://api.shannon-ai.com | Instrumentul adaugă singur /v1/messages la URL-ul de bază. |
| Codex CLI | POST /v1/responses | https://api.shannon-ai.com/v1 | Instrumentul adaugă /responses la URL-ul de bază. |
| Alte instrumente de tip agent care folosesc formatul de chat OpenAI | POST /v1/chat/completions | https://api.shannon-ai.com/v1 | Setează URL-ul de bază, cheia și un id de model Shannon în setările proprii ale instrumentului. |
Toate cele trei endpoint-uri acceptă aceeași cheie API, ca Authorization: Bearer sau ca x-api-key. Header-ele anthropic-version, anthropic-beta și openai-beta pe care le trimit aceste instrumente sunt acceptate.
Selectează un model Shannon
Fiecare cerere trebuie să indice un id de model pe care îl publică Shannon. Un instrument de programare trimite numele propriului model implicit dacă nu îi spui altceva, iar un nume pe care Shannon nu îl publică primește răspuns 400 și mesajul unknown model: <name>. Niciun alt nume nu este asociat unui model Shannon, deci setează modelul în instrument înainte de prima cerere.
GET /v1/models listează fiecare id cu fereastra lui de context. Nu necesită cheie. Modele și prețuri
| Model | Numărat ca | Ce oferă |
|---|---|---|
shannon-coder-1 | Un apel per cerere pe /v1/messages și /v1/chat/completions. Token-uri pe /v1/responses. | Modelul de programare. Text la intrare, apeluri de instrumente, fereastră de context de 131,072 token-uri. |
shannon-1.6-liteshannon-1.6-pro | Token-uri din soldul tău. | Modele generale cu apeluri de instrumente. shannon-1.6-lite se potrivește cererilor scurte de fundal pe care le face un instrument. |
| Modele open-weight găzduite | Token-uri din soldul tău, cu intrarea din cache la 25% din prețul de intrare. | Apeluri de instrumente, caching de prompt pentru sesiuni lungi și numărări exacte de la /v1/messages/count_tokens. |
Instrumentele de programare ghidează modelul cu un system prompt lung. System prompt-ul este aplicat de shannon-coder-1, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro și de modelele open-weight găzduite, deci selectează unul dintre acestea pentru un instrument de programare.
Claude Code
Claude Code își citește conexiunea din variabile de mediu. Setează-le în shell-ul care îl pornește sau în blocul env din ~/.claude/settings.json pentru a le păstra la fiecare sesiune.
# 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"
}
} | Variabilă | Descriere |
|---|---|
ANTHROPIC_BASE_URL | Unde își trimite Claude Code cererile. Folosește adresa fără /v1. |
ANTHROPIC_AUTH_TOKEN | Cheia ta Shannon API, trimisă ca Authorization: Bearer. Funcționează și ANTHROPIC_API_KEY: trimite cheia ca x-api-key, iar Claude Code îți cere o singură dată aprobarea. |
ANTHROPIC_MODEL | Modelul sesiunii. claude --model <id> și /model <id> setează același lucru. |
ANTHROPIC_DEFAULT_HAIKU_MODEL | Modelul pentru cererile de fundal, cum sunt titlurile sesiunilor, și pentru orice cere haiku. |
ANTHROPIC_DEFAULT_SONNET_MODEL | Modelul folosit când un subagent sau o comandă cere sonnet. |
ANTHROPIC_DEFAULT_OPUS_MODEL | Modelul folosit când un subagent sau o comandă cere opus. |
CLAUDE_CODE_MAX_CONTEXT_TOKENS | Fereastra de context pe care Claude Code o presupune pentru model. Folosește context_window raportat de GET /v1/models pentru id-ul selectat. |
- Setează toate cele trei variabile
ANTHROPIC_DEFAULT_…_MODEL. Subagenții și unele comenzi cer un model după numele lui încorporat, iar fiecare nume trebuie să se rezolve într-un id Shannon. - Exemplul îndreaptă cererile de fundal spre
shannon-1.6-lite, care este numărat în token-uri. Titlurile sesiunilor și cererile similare nu consumă atunci apeluri Coder. - Claude Code cere
POST /v1/messages/count_tokenspentru dimensiunea contextului. Endpoint-ul numără pentru modelele open-weight găzduite. Cu un id Shannon răspunde400; Claude Code tratează numărarea token-urilor ca opțională și estimează singur dimensiunea. Numărarea token-urilor
Pentru a verifica adresa, cheia și un id de model înainte de a porni instrumentul, trimite manual o cerere:
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 comunică cu Responses API. Descrie Shannon ca provider de modele în ~/.codex/config.toml, selectează acolo un id de model Shannon și pune cheia ta API în variabila de mediu numită de 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 | Cheie | Descriere |
|---|---|
model | Id-ul modelului Shannon. codex --model <id> îl setează pentru o singură rulare. |
model_provider | Numele blocului de provider de folosit, aici shannon. |
base_url | Adresa API cu /v1. |
env_key | Numele variabilei de mediu care conține cheia ta Shannon API. |
wire_api | responses: Codex comunică cu POST /v1/responses. |
model_context_window | Fereastra de context a modelului, astfel încât Codex să compacteze la timp o sesiune lungă. Folosește context_window raportat de GET /v1/models. |
/v1/responsesnu păstrează nicio conversație pe server: fiecare cerere poartă conversația îninput.previous_response_ideste acceptat pentru compatibilitate.- Instrumentele de tip funcție (
type: "function") sunt oferite modelului pe/v1/responses. - Pe
/v1/responses,shannon-coder-1este numărat în token-uri din soldul tău, nu în apeluri Coder.
Aceeași verificare pentru endpoint-ul 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."
}' Modelul de programare și cum este numărat
shannon-coder-1 este modelul Shannon pentru agenții de programare. GET /v1/models îl raportează cu o fereastră de context de 131,072 token-uri, apeluri de instrumente, raționament și text la intrare. Este numărat într-unul din două moduri, în funcție de endpoint-ul folosit de un instrument.
| Endpoint | O cerere costă | Scăzut din |
|---|---|---|
/v1/messages | 1 apel per cerere | Cota de apeluri Coder a planului tău. Nu se scad token-uri din soldul tău. |
/v1/chat/completions | 1 apel per cerere | Cota de apeluri Coder a planului tău. Nu se scad token-uri din soldul tău. |
/v1/responses | Token-uri, la $8.00 per 1M | Soldul tău, ca orice alt model. Cota de apeluri nu este folosită. |
Un apel este o cerere, indiferent de dimensiunea ei. Este numărat când cererea este acceptată, înainte ca modelul să răspundă. O sesiune de agent trimite o cerere pentru fiecare pas pe care îl face, deci o sarcină lungă consumă multe apeluri. Cota depinde de planul tău și o ia de la capăt la fiecare 4 ore, la 00:00, 04:00, 08:00, 12:00, 16:00 și 20:00 UTC.
| Plan | Apeluri pe fereastră de 4 ore |
|---|---|
| Free | 3 |
| Plus | 20 |
| Standard | 40 |
| Pro | 60 |
Pagina planurilor arată cifrele curente. Planuri
Când apelurile unei ferestre sunt consumate, cererea primește răspuns 429. Pe /v1/messages aceeași eroare vine în 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"
}
} Depășirea contextului
Când o conversație este mai mare decât fereastra de context a modelului, /v1/chat/completions și /v1/messages răspund cu 400, tipul invalid_request_error, codul context_length_exceeded și un mesaj care începe cu prompt is too long. Instrumentele de programare citesc această eroare pentru a compacta sesiunea și a trimite din nou cererea. Este produsă de 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
}
} Mesajul este prompt is too long: <sent> tokens > <limit> maximum. Când cele două numere nu sunt cunoscute, este prompt is too long. Please compact the conversation and try again.
Pe un stream, starea este deja 200, deci eroarea sosește ca eveniment, iar stream-ul se închide apoi în mod 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"} Pe ce se poate baza o buclă de agent
| Subiect | Comportament |
|---|---|
| Scheme de instrumente | Definițiile instrumentelor sunt preluate așa cum le trimite instrumentul. Pe shannon-coder-1 și shannon-1.6-*, cuvintele-cheie JSON Schema pe care modelul nu le folosește, precum $schema, $ref, additionalProperties, default și title, sunt omise din ce citește modelul, iar oneOf este citit ca anyOf. Nicio cerere nu este refuzată din acest motiv. |
| Argumentele apelului de instrument | Într-un stream, argumentele unui apel de instrument sosesc complete într-un singur delta: tool_calls[].function.arguments, input_json_delta.partial_json sau response.function_call_arguments.delta. |
| Sfârșitul unei runde de instrument | finish_reason: "tool_calls" pe Chat Completions, stop_reason: "tool_use" pe Messages. |
| Keep-alive | Cât timp lucrează modelul, /v1/messages trimite event: ping, iar /v1/chat/completions trimite o linie de comentariu : ping la fiecare 15 secunde. |
| Oprirea unei cereri | Închiderea conexiunii oprește stream-ul. Runda în sine rulează până la capăt și este numărată. |
Depanare
| Simptom | Cauză | Remediere |
|---|---|---|
400 cu unknown model: claude-… sau unknown model: gpt-… | Instrumentul a trimis numele propriului model implicit. Sunt servite doar id-urile Shannon publicate și niciun alt nume nu este asociat unuia. | Selectează un id Shannon: ANTHROPIC_MODEL și cele trei variabile ANTHROPIC_DEFAULT_…_MODEL în Claude Code, model în configurația Codex. |
400 cu unknown model: și fără niciun nume, de la Codex CLI | Cererea nu a indicat niciun model. /v1/responses are nevoie de unul. | Setează model în ~/.codex/config.toml sau transmite --model. |
401 cu Missing authentication sau Invalid API key | Cheia nu a ajuns la API sau nu este o cheie curentă. O cheie Shannon începe cu sk-. | Verifică dacă variabila este setată în shell-ul care pornește instrumentul. Copiază din nou cheia din Chei și utilizare. |
404 la fiecare cerere | URL-ul de bază are un /v1 în plus sau în minus pentru instrument. | Claude Code: adresa fără /v1. Codex CLI: adresa cu /v1. |
429 cu Shannon Coder call quota reached | Apelurile Coder din fereastra curentă de 4 ore au fost consumate. | Așteaptă fereastra următoare, treci la un plan cu mai multe apeluri sau selectează un model numărat în token-uri. |
429 cu Quota exceeded | Soldul tău nu acoperă cererea. | Adaugă credit sau așteaptă cota zilnică a planului tău la 00:00 UTC. |
400 cu prompt is too long | Conversația este mai mare decât fereastra de context a modelului. | Compactează sesiunea (/compact în ambele instrumente). Spune-i instrumentului fereastra de context a modelului, astfel încât să compacteze mai devreme. |
| Claude Code arată numere aproximative pentru context | /v1/messages/count_tokens numără pentru modelele open-weight găzduite. Cu un id Shannon răspunde 400, iar Claude Code estimează singur dimensiunea. | Nu este nimic de remediat. Selectează un model open-weight găzduit dacă vrei numărări exacte. |
| O captură de ecran lipită nu este luată în considerare | shannon-coder-1 acceptă text la intrare. | Selectează pentru acea sesiune un model care acceptă imagini. |
Cheia și soldul tău se află pe pagina Chei și utilizare. Chei și utilizare