CLI コーディングツール
新規Claude Code、Codex CLI などのエージェント CLI の背後のモデルとして Shannon を使えます。
コーディングツールを Shannon で動かすには、三つの設定が必要です。API のベース URL、API キー、Shannon のモデル ID です。このページでは、Claude Code と Codex CLI の具体的な設定を示し、コーディングモデル shannon-coder-1 の計上方法を説明し、これらのツールで発生するエラーを一覧にしています。
ツールごとに使うエンドポイント
| ツール | エンドポイント | 設定するベース URL | 備考 |
|---|---|---|---|
| Claude Code | POST /v1/messagesPOST /v1/messages/count_tokens | https://api.shannon-ai.com | ツールが自分で、ベース URL に /v1/messages を付け足します。 |
| Codex CLI | POST /v1/responses | https://api.shannon-ai.com/v1 | ツールがベース URL に /responses を付け足します。 |
| OpenAI チャット形式に対応するその他のエージェントツール | POST /v1/chat/completions | https://api.shannon-ai.com/v1 | ベース URL、キー、Shannon のモデル ID を、ツール自身の設定で指定します。 |
三つのエンドポイントはすべて、同じ API キーを Authorization: Bearer または x-api-key で受け付けます。これらのツールが送信する anthropic-version、anthropic-beta、openai-beta ヘッダーも受け付けられます。
Shannon モデルを選択する
すべてのリクエストで、Shannon が公開しているモデル ID を指定する必要があります。コーディングツールは、指示しない限り自身のデフォルトモデルの名前を送信し、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 は、ツールが行う短いバックグラウンドリクエストに向いています。 |
| ホスト型オープンウェイトモデル | 残高からトークンで計上。キャッシュ済み入力は入力価格の 25%。 | ツール呼び出し、長いセッション向けのプロンプトキャッシュ、/v1/messages/count_tokens による正確なカウント。 |
コーディングツールは、長いシステムプロンプトでモデルを制御します。システムプロンプトは shannon-coder-1、shannon-1.6-lite、shannon-1.6-pro、shannon-2-lite、shannon-2-pro、ホスト型オープンウェイトモデルで適用されるため、コーディングツールにはこれらのいずれかを選択してください。
Claude Code
Claude Code は、接続設定を環境変数から読み取ります。起動するシェルで設定するか、すべてのセッションで保持するには ~/.claude/settings.json の env ブロックに設定します。
# 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 | Shannon の API キー。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 がモデルについて想定するコンテキストウィンドウ。選択した ID について GET /v1/models が報告する context_window を使います。 |
- 三つの
ANTHROPIC_DEFAULT_…_MODEL変数をすべて設定してください。サブエージェントや一部のコマンドは組み込みの名前でモデルを要求するため、どの名前も Shannon の ID に解決される必要があります。 - このサンプルは、バックグラウンドリクエストをトークンで計上される
shannon-1.6-liteに向けています。そのため、セッションタイトルなどのリクエストで Coder 呼び出しは消費されません。 - Claude Code は、コンテキストのサイズを
POST /v1/messages/count_tokensに問い合わせます。このエンドポイントはホスト型オープンウェイトモデルで数えます。Shannon の ID では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 と通信します。~/.codex/config.toml で Shannon をモデルプロバイダーとして記述し、そこで Shannon のモデル ID を選択して、プロバイダーが指定する環境変数に 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 | Shannon のモデル ID。codex --model <id> で 一回の実行に対して設定できます。 |
model_provider | 使用するプロバイダーブロックの名前。ここでは shannon です。 |
base_url | /v1 を含む API アドレス。 |
env_key | Shannon の API キーを保持する環境変数の名前。 |
wire_api | responses:Codex は POST /v1/responses と通信します。 |
model_context_window | モデルのコンテキストウィンドウ。Codex が長いセッションを適切なタイミングで圧縮できるようにします。GET /v1/models が報告する context_window を使います。 |
/v1/responsesはサーバー側に会話を保持しません。各リクエストはinputに会話を含めます。previous_response_idは互換性のために受け付けられます。- 関数ツール(
type: "function")は、/v1/responsesでモデルに提示されます。 /v1/responsesでは、shannon-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 | トークン。1M あたり $8.00 | 他のモデルと同様に、残高から引かれます。呼び出し枠は使われません。 |
一回の呼び出しは、サイズに関係なく一件のリクエストです。リクエストが受け付けられた時点、モデルが応答する前に計上されます。エージェントセッションは、一ステップごとにリクエストを送信するため、長いタスクでは多くの呼び出しが使われます。枠の量はプランによって異なり、4 時間ごと、UTC の 00:00、04:00、08:00、12:00、16:00、20:00 にリセットされます。
| プラン | 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 として読み取られます。これらを理由にリクエストが拒否されることはありません。 |
| ツール呼び出しの引数 | ストリームでは、ツール呼び出しの引数は、ひとつのデルタに全体が含まれて届きます:tool_calls[].function.arguments、input_json_delta.partial_json、または response.function_call_arguments.delta。 |
| ツールターンの終了 | Chat Completions では finish_reason: "tool_calls" になり、Messages では stop_reason: "tool_use" になります。 |
| キープアライブ | モデルの処理中、/v1/messages は event: ping を、/v1/chat/completions は : ping コメント行を、15 秒ごとに送信します。 |
| リクエストの停止 | 接続を閉じるとストリームは止まります。ターン自体は最後まで実行され、計上されます。 |
トラブルシューティング
| 症状 | 原因 | 対処 |
|---|---|---|
400 と unknown model: claude-… または unknown model: gpt-… | ツールが自身のデフォルトモデル名を送信しました。提供されるのは公開されている Shannon の ID だけで、他の名前が対応付けられることはありません。 | Shannon の ID を選択してください:Claude Code では ANTHROPIC_MODEL と三つの ANTHROPIC_DEFAULT_…_MODEL 変数、Codex の設定では model です。 |
Codex CLI から、名前のない 400 と unknown model: | リクエストにモデルが指定されていません。/v1/responses では必須です。 | ~/.codex/config.toml で model を設定するか、--model を渡してください。 |
401 と Missing authentication または Invalid API key | キーが API に届いていないか、現在のキーではありません。Shannon のキーは sk- で始まります。 | ツールを起動するシェルで変数が設定されているか確認してください。キーと使用量から、キーをもう一度コピーしてください。 |
すべてのリクエストで 404 | ベース URL の /v1 が、そのツールに対して多すぎるか、足りません。 | Claude Code:/v1 を含まないアドレス。Codex CLI:/v1 を含むアドレス。 |
429 と Shannon Coder call quota reached | 現在の 4 時間枠の Coder 呼び出し回数を使い切りました。 | 次の枠まで待つか、呼び出し回数の多いプランに変更するか、トークンで計上されるモデルを選択してください。 |
429 と Quota exceeded | 残高がリクエストをまかなえません。 | クレジットを追加するか、00:00 UTC のプランの日次枠のリセットを待ってください。 |
400 と prompt is too long | 会話がモデルのコンテキストウィンドウより大きくなっています。 | セッションを圧縮してください(どちらのツールでも /compact)。ツールにモデルのコンテキストウィンドウを伝えると、より早く圧縮されます。 |
| Claude Code がおおよそのコンテキスト数を表示する | /v1/messages/count_tokens はホスト型オープンウェイトモデルで数えます。Shannon の ID では 400 を返し、Claude Code はサイズを自分で見積もります。 | 対処は不要です。正確なカウントが必要な場合は、ホスト型オープンウェイトモデルを選択してください。 |
| 貼り付けたスクリーンショットが反映されない | shannon-coder-1 はテキスト入力に対応しています。 | そのセッションでは、画像に対応するモデルを選択してください。 |
キーと残高は、キーと使用量のページで確認できます。 キーと使用量