Drop‑in Replacement
InoenderanaInoshanda neOpenAI neAnthropic SDKs. Chinja base URL chete.
Mitauro yese yakafanana. Sarudza yaunoda kushandisa.
AI API inoenderana neOpenAI neAnthropic ine kudanwa kwemabasa, kutsvaga pawebhu, uye zvinobuda zvakarongeka.
Zvose zvaunoda kuti utumire neAPI inoenderana neOpenAI neAnthropic ya Shannon.
https://api.shannon-ai.com/v1/chat/completions Shandisa Chat Completions API ine kufona mabasa uye streaming.
https://api.shannon-ai.com/v1/messages Claude Messages fomati ine maturusi uye anthropic-version header.
Authorization: Bearer <api-key> Kana X-API-Key ine anthropic-version kune Claude-style calls.
Magwaro eruzhinji - kiyi inodiwa pakufona Streaming, kufona mabasa, structured outputs, kutsvaga web.
Drop‑in kutsiva maAPI eOpenAI neAnthropic ane rutsigiro rwezvishandiso, zvinobuda zvakarongeka, uye kutsvaga pawebhu kwakavakirwa mukati.
Inoshanda neOpenAI neAnthropic SDKs. Chinja base URL chete.
Tsanangura tools, Shannon anodzidaidza. Inotsigira auto, forced, uye none modes.
Kutsvaga web munguva chaiyo nemareferenzi. Inowanikwa otomatiki.
JSON mode uye JSON Schema enforcement yekuburitsa data rakavimbika.
Automatic function execution loops. Kusvika 10 iterations pachikumbiro.
Server‑Sent Events yeku streaming token munguva chaiyo.
Tanga mumatanho matatu. Shannon inotevedzera vatengi veOpenAI neAnthropic.
Shandisa OpenAI‑compatible endpoint.
https://api.shannon-ai.com/v1/chat/completions Shandisa Bearer auth muAuthorization header.
Sarudza mutauro uye chinja kiyi yako.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1"
)
response = client.chat.completions.create(
model="shannon-1.6-lite",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, Shannon!"}
],
max_tokens=1024
)
print(response.choices[0].message.content) import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
const response = await client.chat.completions.create({
model: 'shannon-1.6-lite',
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'Hello, Shannon!' }
],
max_tokens: 1024
});
console.log(response.choices[0].message.content); package main
import (
"context"
"fmt"
openai "github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig("YOUR_API_KEY")
config.BaseURL = "https://api.shannon-ai.com/v1"
client := openai.NewClientWithConfig(config)
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: "shannon-1.6-lite",
Messages: []openai.ChatCompletionMessage{
{Role: "system", Content: "You are a helpful assistant."},
{Role: "user", Content: "Hello, Shannon!"},
},
MaxTokens: 1024,
},
)
if err != nil {
panic(err)
}
fmt.Println(resp.Choices[0].Message.Content)
} curl -X POST "https://api.shannon-ai.com/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-1.6-lite",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, Shannon!"}
],
"max_tokens": 1024
}' {
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1234567890,
"model": "Shannon 1.6 Lite",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! I'm Shannon, your AI assistant. How can I help you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 18,
"total_tokens": 43
}
} Edza Shannon API zvakananga mubrowser yako. Gadzira chikumbiro, mhanyisa uye uone mhinduro munguva chaiyo.
Switch across OpenAI Chat Completions, Responses, and Anthropic Messages without leaving the playground.
Run real requests, inspect raw JSON, and view stream events from the same operator console.
Signed-in users can pull their Shannon API key straight into the dedicated playground workspace.
/sn/docs/playground The playground now lives on its own route so the API docs stay Astro-rendered while the request builder remains an explicitly interactive client tool.
Zvikumbiro zvese zveAPI zvinoda kusimbiswa uchishandisa Shannon API kiyi yako.
Authorization: Bearer YOUR_API_KEY X-API-Key: YOUR_API_KEY
anthropic-version: 2023-06-01 Shannon inopa mamodheru akati wandei akagadzirirwa kushandiswa kwakasiyana.
shannon-1.6-lite Shannon 1.6 Lite Mhinduro dzinokurumidza uye dzinoshanda pamabasa emazuva ese
shannon-1.6-pro Shannon 1.6 Pro Reasoning yepamusoro yezvinetso zvakaoma
shannon-2-lite Shannon 2 Lite
shannon-2-pro Shannon 2 Pro
shannon-coder-1 Shannon Coder Yakagadzirirwa Claude Code CLI ine call‑based quota
Tsanangura zvishandiso zvinogona kudanwa naShannon kuita zviito kana kuwana ruzivo.
from openai import OpenAI
import json
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1"
)
# Define available tools/functions
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "City name, e.g., 'Tokyo'"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
}
]
response = client.chat.completions.create(
model="shannon-1.6-lite",
messages=[{"role": "user", "content": "What's the weather in Tokyo?"}],
tools=tools,
tool_choice="auto"
)
# Check if model wants to call a function
if response.choices[0].message.tool_calls:
tool_call = response.choices[0].message.tool_calls[0]
print(f"Function: {tool_call.function.name}")
print(f"Arguments: {tool_call.function.arguments}") import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
const tools = [
{
type: 'function',
function: {
name: 'get_weather',
description: 'Get current weather for a location',
parameters: {
type: 'object',
properties: {
location: { type: 'string', description: "City name" },
unit: { type: 'string', enum: ['celsius', 'fahrenheit'] }
},
required: ['location']
}
}
}
];
const response = await client.chat.completions.create({
model: 'shannon-1.6-lite',
messages: [{ role: 'user', content: "What's the weather in Tokyo?" }],
tools,
tool_choice: 'auto'
});
if (response.choices[0].message.tool_calls) {
const toolCall = response.choices[0].message.tool_calls[0];
console.log('Function:', toolCall.function.name);
console.log('Arguments:', toolCall.function.arguments);
} "auto" Modhi inosarudza kana kuita function call (default) "none" Dzima function calling pachikumbiro ichi {"type": "function", "function": {"name": "..."}} Manikidza specific function call {
"id": "chatcmpl-xyz",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"tool_calls": [
{
"id": "call_abc123",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"location\": \"Tokyo\", \"unit\": \"celsius\"}"
}
}
]
},
"finish_reason": "tool_calls"
}
]
} Sundidzira Shannon kupindura neJSON inoshanda inoenderana ne schema yako.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1"
)
# Force JSON output with schema
response = client.chat.completions.create(
model="shannon-1.6-lite",
messages=[
{"role": "user", "content": "Extract: John Doe, 30 years old, engineer"}
],
response_format={
"type": "json_schema",
"json_schema": {
"name": "person_info",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"},
"occupation": {"type": "string"}
},
"required": ["name", "age", "occupation"]
}
}
}
)
import json
data = json.loads(response.choices[0].message.content)
print(data) # {"name": "John Doe", "age": 30, "occupation": "engineer"} import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
const response = await client.chat.completions.create({
model: 'shannon-1.6-lite',
messages: [
{ role: 'user', content: 'Extract: John Doe, 30 years old, engineer' }
],
response_format: {
type: 'json_schema',
json_schema: {
name: 'person_info',
schema: {
type: 'object',
properties: {
name: { type: 'string' },
age: { type: 'integer' },
occupation: { type: 'string' }
},
required: ['name', 'age', 'occupation']
}
}
}
});
const data = JSON.parse(response.choices[0].message.content);
console.log(data); // { name: "John Doe", age: 30, occupation: "engineer" } {"type": "json_object"} Manikidza valid JSON output (pasina schema yakatarwa) {"type": "json_schema", "json_schema": {...}} Manikidza output inoenderana neschema yako Batidza token streaming munguva chaiyo neServer‑Sent Events kuti UI ipindure nekukurumidza.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1"
)
# Enable streaming for real-time responses
stream = client.chat.completions.create(
model="shannon-1.6-lite",
messages=[
{"role": "user", "content": "Write a short poem about AI"}
],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True) import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
// Enable streaming for real-time responses
const stream = await client.chat.completions.create({
model: 'shannon-1.6-lite',
messages: [
{ role: 'user', content: 'Write a short poem about AI' }
],
stream: true
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) process.stdout.write(content);
} Shannon ine built‑in web_search inowanikwa otomatiki.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1"
)
# Web search is automatically available!
# Shannon will use it when needed for current information
response = client.chat.completions.create(
model="shannon-1.6-lite",
messages=[
{"role": "user", "content": "What are the latest AI news today?"}
],
# Optionally, explicitly define web_search tool
tools=[{
"type": "function",
"function": {
"name": "web_search",
"description": "Search the web for current information",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "Search query"}
},
"required": ["query"]
}
}
}]
)
print(response.choices[0].message.content)
# Response includes sources and citations import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
// Web search is automatically available!
// Shannon will use it when needed for current information
const response = await client.chat.completions.create({
model: 'shannon-1.6-lite',
messages: [
{ role: 'user', content: 'What are the latest AI news today?' }
],
// Optionally, explicitly define web_search tool
tools: [{
type: 'function',
function: {
name: 'web_search',
description: 'Search the web for current information',
parameters: {
type: 'object',
properties: {
query: { type: 'string', description: 'Search query' }
},
required: ['query']
}
}
}]
});
console.log(response.choices[0].message.content);
// Response includes sources and citations Shannon inotsigirawo Anthropic Messages API format.
https://api.shannon-ai.com/v1/messages import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/messages"
)
response = client.messages.create(
model="shannon-1.6-lite",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello, Shannon!"}
],
# Tool use (Anthropic format)
tools=[{
"name": "web_search",
"description": "Search the web",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string"}
},
"required": ["query"]
}
}]
)
print(response.content[0].text) import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/messages'
});
const response = await client.messages.create({
model: 'shannon-1.6-lite',
max_tokens: 1024,
messages: [
{ role: 'user', content: 'Hello, Shannon!' }
],
// Tool use (Anthropic format)
tools: [{
name: 'web_search',
description: 'Search the web',
input_schema: {
type: 'object',
properties: {
query: { type: 'string' }
},
required: ['query']
}
}]
});
console.log(response.content[0].text); Use Shannon as the AI backend for popular CLI coding agents. Read files, edit code, run tests — all powered by Shannon's API.
Anthropic's official CLI coding agent. Point it at Shannon to use as your AI backend for reading, editing, and running code directly in your terminal.
ANTHROPIC_BASE_URL=https://api.shannon-ai.com ANTHROPIC_API_KEY=sk-YOUR_KEY claude --bare OpenAI's open-source coding agent. Uses the Responses API for multi-turn tool use, file editing, and shell commands — all routed through Shannon.
OPENAI_BASE_URL=https://api.shannon-ai.com/v1 OPENAI_API_KEY=sk-YOUR_KEY codex Anthropic's official CLI coding agent. Set two environment variables and launch with --bare to skip Anthropic account login.
# Install Claude Code (requires Node.js 18+)
npm install -g @anthropic-ai/claude-code
# Connect to Shannon AI as backend
export ANTHROPIC_BASE_URL=https://api.shannon-ai.com
export ANTHROPIC_API_KEY=sk-YOUR_API_KEY
# Launch Claude Code in bare mode (no Anthropic account needed)
claude --bare
# Or run a one-shot command
claude --bare -p "Explain this codebase"
# Claude Code will use Shannon's Anthropic-compatible API
# for all AI operations: reading files, editing code,
# running tests, and multi-turn tool use. # Alternative: set env vars permanently in your shell profile
# ~/.bashrc or ~/.zshrc
export ANTHROPIC_BASE_URL=https://api.shannon-ai.com
export ANTHROPIC_API_KEY=sk-YOUR_API_KEY
# Then just run:
claude --bare
# Supported features through Shannon:
# - Multi-turn conversations with full context
# - File reading and editing (tool use)
# - Shell command execution
# - Streaming responses
# - All Claude Code slash commands (/compact, /clear, etc.) OpenAI's open-source coding agent. Uses the Responses API for multi-turn tool use, file editing, and shell commands.
# Install Codex CLI
npm install -g @openai/codex
# Connect to Shannon AI as backend
export OPENAI_BASE_URL=https://api.shannon-ai.com/v1
export OPENAI_API_KEY=sk-YOUR_API_KEY
# Launch Codex
codex
# Or run a one-shot command
codex "fix the bug in main.py"
# Codex uses the Responses API (POST /v1/responses)
# Shannon handles tool calls including:
# - Reading and writing files
# - Running shell commands
# - Multi-turn function calling # Alternative: set env vars permanently
# ~/.bashrc or ~/.zshrc
export OPENAI_BASE_URL=https://api.shannon-ai.com/v1
export OPENAI_API_KEY=sk-YOUR_API_KEY
# Then just run:
codex
# Supported features through Shannon:
# - Responses API with full tool use
# - Function calling (file read/write, shell exec)
# - Streaming with real-time output
# - Multi-turn conversations
# - All Codex approval modes (suggest, auto-edit, full-auto) Shandisa chero OpenAI kana Anthropic SDK — shandura base URL chete.
Official OpenAI Python SDK - inoshanda neShannon
pip install openai Official OpenAI Node.js SDK - inoshanda neShannon
npm install openai Community Go client yeOpenAI‑compatible APIs
go get github.com/sashabaranov/go-openai Community Ruby client yeOpenAI‑compatible APIs
gem install ruby-openai Community PHP client yeOpenAI‑compatible APIs
composer require openai-php/client Async Rust client yeOpenAI‑compatible APIs
cargo add async-openai Official Anthropic Python SDK - inoshanda neShannon
pip install anthropic Official Anthropic TypeScript SDK - inoshanda neShannon
npm install @anthropic-ai/sdk Shannon inoshandisa standard HTTP status codes uye inodzosa mashoko eruzivo rwemhosho.
{
"error": {
"message": "Invalid API key provided",
"type": "authentication_error",
"code": "invalid_api_key"
}
} Zvigadziriso zvichangoburwa uye kuvandudzwa kuShannon API.
YOUR_API_KEY Chengeta API key yako yakavanzika. Kugadzira patsva kunogadzira kiyi nyowani uye kunodzima yekare.
Paunenge wapinda, ona kushandiswa kwetoken uye kutsvaga papeji iri.
Call‑based quota yeShannon Coder (shannon-coder-1). Inodzokororwa mushure me 4 maawa.
Tora API kiyi yako wotanga kuvaka neShannon AI nhasi.
Kutsvaga kunofarirwa: