CLI инструменти за програмиране
НовоИзползвайте Shannon като модел зад Claude Code, Codex CLI и други агентни CLI инструменти.
Инструментът за програмиране се нуждае от три настройки, за да работи със Shannon: базовия URL на API, вашия API ключ и id на модел на Shannon. Тази страница дава точните настройки за Claude Code и Codex CLI, обяснява как се отчита моделът за програмиране shannon-coder-1 и изброява грешките, които тези инструменти срещат.
Кой ендпоинт използва всеки инструмент
| Инструмент | Ендпоинт | Базов URL за задаване | Бележка |
|---|---|---|---|
| Claude Code | POST /v1/messagesPOST /v1/messages/count_tokens | https://api.shannon-ai.com | Инструментът сам добавя /v1/messages към базовия URL. |
| Codex CLI | POST /v1/responses | https://api.shannon-ai.com/v1 | Инструментът добавя /responses към базовия URL. |
| Други агентни инструменти, които говорят формата за чат на OpenAI | POST /v1/chat/completions | https://api.shannon-ai.com/v1 | Задайте базовия URL, ключа и id на модел на Shannon в собствените настройки на инструмента. |
И трите ендпоинта приемат един и същ API ключ, като Authorization: Bearer или като x-api-key. Хедърите anthropic-version, anthropic-beta и openai-beta, които тези инструменти изпращат, се приемат.
Изберете модел на Shannon
Всяка заявка трябва да назовава id на модел, който Shannon публикува. Инструментът за програмиране изпраща името на собствения си модел по подразбиране, освен ако не му кажете друго, а име, което Shannon не публикува, получава отговор 400 със съобщение unknown model: <name>. Никое друго име не се съпоставя с модел на Shannon, затова задайте модела в инструмента преди първата заявка.
GET /v1/models изброява всеки id с неговия контекстен прозорец. Не изисква ключ. Модели и цени
| Модел | Отчита се като | Какво носи |
|---|---|---|
shannon-coder-1 | Едно извикване на заявка на /v1/messages и /v1/chat/completions. Токени на /v1/responses. | Моделът за програмиране. Текстов вход, извиквания на инструменти, контекстен прозорец от 131,072 токена. |
shannon-1.6-liteshannon-1.6-pro | Токени от баланса ви. | Универсални модели с извиквания на инструменти. shannon-1.6-lite е подходящ за късите фонови заявки, които инструментът прави. |
| Хоствани open-weight модели | Токени от баланса ви, като кешираният вход е на 25% от цената на входа. | Извиквания на инструменти, кеширане на prompt-и за дълги сесии и точно броене от /v1/messages/count_tokens. |
Инструментите за програмиране управляват модела с дълъг системен prompt. Системният prompt се прилага от shannon-coder-1, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro и хостваните open-weight модели, така че изберете някой от тях за инструмент за програмиране.
Claude Code
Claude Code чете връзката си от променливи на средата. Задайте ги в обвивката, която го стартира, или в блока env на ~/.claude/settings.json, за да ги запазите за всяка сесия.
# 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"
}
} | Променлива | Описание |
|---|---|
ANTHROPIC_BASE_URL | Къде Claude Code изпраща заявките си. Използвайте адреса без /v1. |
ANTHROPIC_AUTH_TOKEN | Вашият API ключ на Shannon, изпратен като Authorization: Bearer. ANTHROPIC_API_KEY също работи: изпраща ключа като x-api-key, а Claude Code пита веднъж за одобрение. |
ANTHROPIC_MODEL | Моделът на сесията. claude --model <id> и /model <id> задават същото. |
ANTHROPIC_DEFAULT_HAIKU_MODEL | Моделът за фонови заявки, като заглавия на сесии, и за всичко, което иска haiku. |
ANTHROPIC_DEFAULT_SONNET_MODEL | Моделът, използван, когато подагент или команда поиска sonnet. |
ANTHROPIC_DEFAULT_OPUS_MODEL | Моделът, използван, когато подагент или команда поиска opus. |
CLAUDE_CODE_MAX_CONTEXT_TOKENS | Контекстният прозорец, който Claude Code приема за модела. Използвайте context_window, който GET /v1/models отчита за избрания от вас id. |
- Задайте и трите променливи
ANTHROPIC_DEFAULT_…_MODEL. Подагентите и някои команди искат модел по вграденото му име и всяко име трябва да води до id на Shannon. - Примерът насочва фоновите заявки към
shannon-1.6-lite, който се брои в токени. Така заглавията на сесии и подобни заявки не използват извиквания на Coder. - Claude Code пита
POST /v1/messages/count_tokensза размера на контекста. Ендпоинтът брои за хостваните open-weight модели. С id на Shannon отговаря400; Claude Code третира броенето на токени като незадължително и оценява размера сам. Броене на токени
За да проверите адреса, ключа и id на модел, преди да стартирате инструмента, изпратете една заявка на ръка:
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 говори с Responses API. Опишете Shannon като доставчик на модели в ~/.codex/config.toml, изберете там id на модел на Shannon и поставете API ключа си в променливата на средата, която доставчикът назовава.
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 | Ключ | Описание |
|---|---|
model | Id на модела на Shannon. codex --model <id> го задава за едно изпълнение. |
model_provider | Името на блока на доставчика, който да се използва, тук shannon. |
base_url | Адресът на API с /v1. |
env_key | Името на променливата на средата, която съдържа вашия API ключ на Shannon. |
wire_api | responses: Codex говори с POST /v1/responses. |
model_context_window | Контекстният прозорец на модела, за да може Codex да компактира дълга сесия навреме. Използвайте context_window, който GET /v1/models отчита. |
/v1/responsesне пази разговор на сървъра: всяка заявка носи разговора вinput.previous_response_idсе приема за съвместимост.- Инструментите-функции (
type: "function") се предлагат на модела на/v1/responses. - На
/v1/responsesshannon-coder-1се брои в токени от баланса ви, а не в извиквания на Coder.
Същата проверка за ендпоинта 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."
}' Моделът за програмиране и как се отчита
shannon-coder-1 е моделът на Shannon за агенти за програмиране. GET /v1/models го отчита с контекстен прозорец от 131,072 токена, извиквания на инструменти, разсъждение и текстов вход. Отчита се по един от два начина, в зависимост от ендпоинта, който използва инструментът.
| Ендпоинт | Заявката струва | Взима се от |
|---|---|---|
/v1/messages | 1 извикване на заявка | Лимитът за извиквания на Coder по вашия план. От баланса ви не се взимат токени. |
/v1/chat/completions | 1 извикване на заявка | Лимитът за извиквания на Coder по вашия план. От баланса ви не се взимат токени. |
/v1/responses | Токени, по $8.00 на 1M | Вашият баланс, като всеки друг модел. Лимитът за извиквания не се използва. |
Извикването е една заявка, независимо от размера ѝ. Отчита се, когато заявката е приета, преди моделът да отговори. Агентна сесия изпраща по една заявка за всяка своя стъпка, така че дълга задача използва много извиквания. Лимитът зависи от плана ви и започва отначало на всеки 4 часа, в 00:00, 04:00, 08:00, 12:00, 16:00 и 20:00 UTC.
| План | Извиквания за 4-часов прозорец |
|---|---|
| Free | 3 |
| Plus | 20 |
| Standard | 40 |
| Pro | 60 |
Страницата с плановете показва актуалните числа. Планове
Когато извикванията на един прозорец се изчерпат, заявката получава отговор 429. На /v1/messages същата грешка идва във формата на 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"
}
} Препълване на контекста
Когато разговорът е по-голям от контекстния прозорец на модела, /v1/chat/completions и /v1/messages отговарят с 400, тип invalid_request_error, код context_length_exceeded и съобщение, което започва с prompt is too long. Инструментите за програмиране четат тази грешка, за да компактират сесията и да изпратят заявката отново. Произвеждат я shannon-coder-1, shannon-1.6-lite и 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
}
} Съобщението е prompt is too long: <sent> tokens > <limit> maximum. Когато двете числа не са известни, то е prompt is too long. Please compact the conversation and try again.
При стрийм статусът вече е 200, затова грешката пристига като събитие, а след това стриймът се затваря по нормалния начин:
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"} На какво може да разчита агентният цикъл
| Тема | Поведение |
|---|---|
| Схеми на инструменти | Дефинициите на инструментите се вземат така, както ги изпраща инструментът. При shannon-coder-1 и shannon-1.6-* ключовите думи на JSON Schema, които моделът не използва, като $schema, $ref, additionalProperties, default и title, се пропускат от онова, което моделът чете, а oneOf се чете като anyOf. Заради тях заявка не се отказва. |
| Аргументи на извикване на инструмент | В стрийм аргументите на извикване на инструмент пристигат пълни в една delta: tool_calls[].function.arguments, input_json_delta.partial_json или response.function_call_arguments.delta. |
| Край на ход с инструмент | Стойността finish_reason: "tool_calls" при Chat Completions и стойността stop_reason: "tool_use" при Messages. |
| Keep-alive | Докато моделът работи, /v1/messages изпраща event: ping, а /v1/chat/completions изпраща коментарен ред : ping на всеки 15 секунди. |
| Спиране на заявка | Затварянето на връзката спира стрийма. Самият ход се изпълнява докрай и се отчита. |
Отстраняване на проблеми
| Симптом | Причина | Решение |
|---|---|---|
400 с unknown model: claude-… или unknown model: gpt-… | Инструментът е изпратил името на собствения си модел по подразбиране. Обслужват се само публикувани id-та на Shannon и никое друго име не се съпоставя с такова. | Изберете id на Shannon: ANTHROPIC_MODEL и трите променливи ANTHROPIC_DEFAULT_…_MODEL в Claude Code, model в конфигурацията на Codex. |
400 с unknown model: и без име, от Codex CLI | Заявката не е назовала модел. /v1/responses изисква такъв. | Задайте model в ~/.codex/config.toml или подайте --model. |
401 с Missing authentication или Invalid API key | Ключът не е стигнал до API или не е текущ ключ. Ключът на Shannon започва със sk-. | Проверете дали променливата е зададена в обвивката, която стартира инструмента. Копирайте ключа отново от Keys & usage. |
404 при всяка заявка | Базовият URL има един /v1 повече или по-малко, отколкото инструментът изисква. | Claude Code: адресът без /v1. Codex CLI: адресът с /v1. |
429 с Shannon Coder call quota reached | Извикванията на Coder за текущия 4-часов прозорец са изчерпани. | Изчакайте следващия прозорец, преминете на план с повече извиквания или изберете модел, който се отчита в токени. |
429 с Quota exceeded | Балансът ви не покрива заявката. | Добавете кредит или изчакайте дневния лимит на плана си в 00:00 UTC. |
400 с prompt is too long | Разговорът е по-голям от контекстния прозорец на модела. | Компактирайте сесията (/compact и в двата инструмента). Кажете на инструмента контекстния прозорец на модела, за да компактира по-рано. |
| Claude Code показва приблизителни числа за контекста | /v1/messages/count_tokens брои за хостваните open-weight модели. С id на Shannon отговаря 400, а Claude Code оценява размера сам. | Няма какво да се поправя. Изберете хостван open-weight модел, ако искате точно броене. |
| Поставена екранна снимка не се взема предвид | shannon-coder-1 приема текстов вход. | Изберете за тази сесия модел, който приема изображения. |
Вашият ключ и балансът ви са на страницата Keys & usage. Keys & usage