เครื่องมือเขียนโค้ดแบบ CLI
ใหม่ใช้ Shannon เป็นโมเดลเบื้องหลัง Claude Code, Codex CLI และ agent CLI อื่นๆ
เครื่องมือเขียนโค้ดต้องมีการตั้งค่าสามอย่างเพื่อทำงานกับ Shannon: base URL ของ API, API key ของคุณ และ model id ของ Shannon หน้านี้ให้การตั้งค่าที่ถูกต้องสำหรับ Claude Code และ Codex CLI อธิบายวิธีนับโมเดลเขียนโค้ด shannon-coder-1 และรวบรวมข้อผิดพลาดที่เครื่องมือเหล่านี้พบ
แต่ละเครื่องมือใช้ endpoint ใด
| เครื่องมือ | Endpoint | Base URL ที่ต้องตั้งค่า | หมายเหตุ |
|---|---|---|---|
| Claude Code | POST /v1/messagesPOST /v1/messages/count_tokens | https://api.shannon-ai.com | เครื่องมือจะเติม /v1/messages ต่อท้าย base URL เอง |
| Codex CLI | POST /v1/responses | https://api.shannon-ai.com/v1 | เครื่องมือจะเติม /responses ต่อท้าย base URL |
| เครื่องมือ agent อื่นๆ ที่ใช้รูปแบบแชตของ OpenAI | POST /v1/chat/completions | https://api.shannon-ai.com/v1 | ตั้งค่า base URL คีย์ และ model id ของ Shannon ในการตั้งค่าของเครื่องมือนั้นเอง |
ทั้งสาม endpoint ใช้ API key เดียวกัน ทั้งแบบ Authorization: Bearer หรือ x-api-key ระบบรับเฮดเดอร์ anthropic-version, anthropic-beta และ openai-beta ที่เครื่องมือเหล่านี้ส่งมา
เลือกโมเดล Shannon
ทุกคำขอต้องระบุ model id ที่ Shannon เผยแพร่ เครื่องมือเขียนโค้ดจะส่งชื่อโมเดลเริ่มต้นของตัวเองเว้นแต่คุณจะบอกเป็นอย่างอื่น และชื่อที่ Shannon ไม่ได้เผยแพร่จะได้รับ 400 พร้อมข้อความ unknown model: <name> ไม่มีชื่ออื่นที่ถูกแมปไปยังโมเดลของ Shannon ดังนั้นให้ตั้งค่าโมเดลในเครื่องมือก่อนส่งคำขอแรก
GET /v1/models แสดงรายการทุก id พร้อม context window ไม่ต้องใช้คีย์ โมเดลและราคา
| โมเดล | นับเป็น | สิ่งที่ได้ |
|---|---|---|
shannon-coder-1 | หนึ่งการเรียกต่อหนึ่งคำขอบน /v1/messages และ /v1/chat/completions นับเป็น tokens บน /v1/responses | โมเดลสำหรับเขียนโค้ด รับอินพุตข้อความ รองรับการเรียก tool, context window 131,072 tokens |
shannon-1.6-liteshannon-1.6-pro | Tokens จากยอดคงเหลือของคุณ | โมเดลทั่วไปที่รองรับการเรียก tool shannon-1.6-lite เหมาะกับคำขอเบื้องหลังสั้นๆ ที่เครื่องมือส่งออกมา |
| โมเดล open-weight ที่โฮสต์ | Tokens จากยอดคงเหลือของคุณ โดยอินพุตที่แคชไว้คิด 25% ของราคา input | รองรับการเรียก tool, prompt caching สำหรับเซสชันยาว และการนับที่แม่นยำจาก /v1/messages/count_tokens |
เครื่องมือเขียนโค้ดควบคุมโมเดลด้วย system prompt ยาวๆ system 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 | Shannon API key ของคุณ ส่งเป็น 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 | โมเดลที่ใช้เมื่อ subagent หรือคำสั่งขอ sonnet |
ANTHROPIC_DEFAULT_OPUS_MODEL | โมเดลที่ใช้เมื่อ subagent หรือคำสั่งขอ opus |
CLAUDE_CODE_MAX_CONTEXT_TOKENS | context window ที่ Claude Code สันนิษฐานสำหรับโมเดล ใช้ค่า context_window ที่ GET /v1/models รายงานสำหรับ id ที่คุณเลือก |
- ตั้งค่าตัวแปร
ANTHROPIC_DEFAULT_…_MODELทั้งสามตัว Subagent และบางคำสั่งขอโมเดลด้วยชื่อที่มีมาในตัว และแต่ละชื่อต้องชี้ไปที่ id ของ Shannon - ตัวอย่างชี้คำขอเบื้องหลังไปที่
shannon-1.6-liteซึ่งนับเป็น tokens ดังนั้นชื่อเซสชันและคำขอลักษณะเดียวกันจะไม่ใช้การเรียก Coder - Claude Code เรียก
POST /v1/messages/count_tokensเพื่อถามขนาดของ context endpoint นี้นับให้โมเดล open-weight ที่โฮสต์ ส่วน id ของ Shannon จะตอบ400โดย Claude Code ถือว่าการนับ tokens เป็นทางเลือกและประมาณขนาดเอง การนับ token
หากต้องการตรวจสอบที่อยู่ คีย์ และ model 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 เป็น model provider ใน ~/.codex/config.toml เลือก model id ของ Shannon ที่นั่น และใส่ API key ของคุณในตัวแปรสภาพแวดล้อมที่ 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 | คีย์ | คำอธิบาย |
|---|---|
model | model id ของ Shannon codex --model <id> กำหนดค่านี้สำหรับการรันหนึ่งครั้ง |
model_provider | ชื่อของบล็อก provider ที่จะใช้ ในที่นี้คือ shannon |
base_url | ที่อยู่ API พร้อม /v1 |
env_key | ชื่อของตัวแปรสภาพแวดล้อมที่เก็บ Shannon API key ของคุณ |
wire_api | responses: Codex คุยกับ POST /v1/responses |
model_context_window | context window ของโมเดล เพื่อให้ Codex บีบอัดเซสชันที่ยาวได้ทันเวลา ใช้ค่า context_window ที่ GET /v1/models รายงาน |
/v1/responsesไม่เก็บบทสนทนาไว้บนเซิร์ฟเวอร์: แต่ละคำขอส่งบทสนทนามาในinputระบบรับprevious_response_idไว้เพื่อความเข้ากันได้- Function tools (
type: "function") ถูกเสนอให้โมเดลบน/v1/responses - บน
/v1/responsesshannon-coder-1นับเป็น tokens จากยอดคงเหลือของคุณ ไม่ใช่เป็นการเรียก Coder
การตรวจสอบแบบเดียวกันสำหรับ 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."
}' โมเดลสำหรับเขียนโค้ดและวิธีนับ
shannon-coder-1 คือโมเดล Shannon สำหรับ coding agent GET /v1/models รายงานว่ามี context window 131,072 tokens รองรับการเรียก tool การให้เหตุผล และอินพุตข้อความ โมเดลนี้นับได้สองวิธี ขึ้นอยู่กับ endpoint ที่เครื่องมือใช้
| Endpoint | ค่าใช้จ่ายของคำขอ | หักจาก |
|---|---|---|
/v1/messages | 1 การเรียกต่อคำขอ | โควตาการเรียก Coder ของแผนของคุณ ไม่มีการหัก tokens จากยอดคงเหลือ |
/v1/chat/completions | 1 การเรียกต่อคำขอ | โควตาการเรียก Coder ของแผนของคุณ ไม่มีการหัก tokens จากยอดคงเหลือ |
/v1/responses | Tokens ในราคา $8.00 ต่อ 1M | ยอดคงเหลือของคุณ เหมือนโมเดลอื่น ไม่ใช้โควตาการเรียก |
การเรียกคือหนึ่งคำขอ ไม่ว่าขนาดเท่าใด จะนับเมื่อรับคำขอ ก่อนที่โมเดลจะตอบ เซสชัน agent ส่งหนึ่งคำขอต่อทุกขั้นที่ทำ งานยาวจึงใช้การเรียกหลายครั้ง โควตาขึ้นกับแผนของคุณ และเริ่มใหม่ทุก 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"
}
} Context ล้น
เมื่อบทสนทนาใหญ่กว่า context window ของโมเดล /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"} สิ่งที่ลูปของ agent พึ่งพาได้
| หัวข้อ | พฤติกรรม |
|---|---|
| Tool schema | นิยาม tool จะถูกรับตามที่เครื่องมือส่งมา บน shannon-coder-1 และ shannon-1.6-* คีย์เวิร์ด JSON Schema ที่โมเดลไม่ใช้ เช่น $schema, $ref, additionalProperties, default และ title จะถูกตัดออกจากสิ่งที่โมเดลอ่าน และ oneOf จะถูกอ่านเป็น anyOf ไม่มีคำขอใดถูกปฏิเสธเพราะคีย์เวิร์ดเหล่านี้ |
| อาร์กิวเมนต์ของการเรียก tool | ในสตรีม อาร์กิวเมนต์ของการเรียก tool จะมาถึงครบใน delta เดียว: tool_calls[].function.arguments, input_json_delta.partial_json หรือ response.function_call_arguments.delta |
| จุดสิ้นสุดของรอบ tool | ค่า 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 เหล่านั้น | เลือก 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- | ตรวจสอบว่าได้ตั้งค่าตัวแปรในเชลล์ที่เริ่มเครื่องมือ คัดลอกคีย์อีกครั้งจากหน้าคีย์และการใช้งาน |
404 ในทุกคำขอ | base URL มี /v1 เกินหรือขาดไปหนึ่งตัวสำหรับเครื่องมือนั้น | Claude Code: ที่อยู่ที่ไม่มี /v1 Codex CLI: ที่อยู่ที่มี /v1 |
429 พร้อม Shannon Coder call quota reached | ใช้การเรียก Coder ของช่วง 4 ชั่วโมงปัจจุบันครบแล้ว | รอช่วงเวลาถัดไป เปลี่ยนไปใช้แผนที่มีการเรียกมากกว่า หรือเลือกโมเดลที่นับเป็น tokens |
429 พร้อม Quota exceeded | ยอดคงเหลือของคุณไม่พอสำหรับคำขอ | เติมเครดิต หรือรอโควตารายวันของแผนที่เวลา 00:00 UTC |
400 พร้อม prompt is too long | บทสนทนาใหญ่กว่า context window ของโมเดล | บีบอัดเซสชัน (/compact ในทั้งสองเครื่องมือ) แจ้งเครื่องมือถึง context window ของโมเดลเพื่อให้บีบอัดเร็วขึ้น |
| Claude Code แสดงตัวเลข context โดยประมาณ | /v1/messages/count_tokens นับให้โมเดล open-weight ที่โฮสต์ กับ id ของ Shannon จะตอบ 400 และ Claude Code จะประมาณขนาดเอง | ไม่มีอะไรต้องแก้ เลือกโมเดล open-weight ที่โฮสต์หากต้องการตัวเลขที่แม่นยำ |
| ภาพหน้าจอที่วางไว้ไม่ถูกนำมาพิจารณา | shannon-coder-1 รับอินพุตข้อความ | เลือกโมเดลที่รับรูปภาพสำหรับเซสชันนั้น |
คีย์และยอดคงเหลือของคุณอยู่ในหน้าคีย์และการใช้งาน คีย์และการใช้งาน