diff --git a/.env.example b/.env.example index fd00877..c36aced 100644 --- a/.env.example +++ b/.env.example @@ -22,29 +22,12 @@ ANTHROPIC_API_KEY=your-api-key-here # OPENAI_API_KEY=sk-your-openai-key # ROUTER_DEFAULT=openai,gpt-5.2 -# --- Google Gemini --- -# GEMINI_API_KEY=your-gemini-key -# ROUTER_DEFAULT=gemini,gemini-2.5-pro - -# --- DeepSeek (cheapest option) --- -# DEEPSEEK_API_KEY=your-together-or-deepseek-key -# DEEPSEEK_API_BASE=https://api.together.xyz/v1/chat/completions # Default: Together.ai -# ROUTER_DEFAULT=deepseek,deepseek-ai/DeepSeek-V3 -# -# To use DeepSeek's official API instead: -# DEEPSEEK_API_BASE=https://api.deepseek.com/chat/completions -# ROUTER_DEFAULT=deepseek,deepseek-chat - -# --- OpenRouter (access 100+ models via single API) --- +# --- OpenRouter (access Gemini 3 models via single API) --- # OPENROUTER_API_KEY=sk-or-your-openrouter-key -# ROUTER_DEFAULT=openrouter,anthropic/claude-sonnet-4 +# ROUTER_DEFAULT=openrouter,google/gemini-3-pro-preview # ============================================================================= # Available Models # ============================================================================= # OpenAI: gpt-5.2, gpt-5-mini -# Gemini: gemini-2.5-pro -# DeepSeek: (Together.ai) deepseek-ai/DeepSeek-V3 -# (Official) deepseek-chat -# OpenRouter: anthropic/claude-sonnet-4, google/gemini-3-pro-preview, -# openai/gpt-5.2 (100+ more) +# OpenRouter: google/gemini-3-pro-preview, google/gemini-3-flash-preview diff --git a/CLAUDE.md b/CLAUDE.md index 8d2d55c..be22c68 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -282,9 +282,7 @@ Shannon supports routing Claude Agent SDK requests through alternative LLM provi | Provider | Models | Use Case | |----------|--------|----------| | OpenAI | `gpt-5.2`, `gpt-5-mini` | Good tool use, balanced cost/performance | -| Gemini | `gemini-2.5-pro` | Long context (1M+ tokens), strong reasoning | -| DeepSeek | `deepseek-ai/DeepSeek-V3`, `deepseek-chat` | Cheapest option for dev/testing | -| OpenRouter | `anthropic/claude-sonnet-4`, `google/gemini-3-pro-preview`, `openai/gpt-5.2` | Multi-provider access via single API | +| OpenRouter | `google/gemini-3-pro-preview`, `google/gemini-3-flash-preview` | Access to Gemini 3 models via single API | **Configuration (in .env):** ```bash @@ -292,17 +290,9 @@ Shannon supports routing Claude Agent SDK requests through alternative LLM provi OPENAI_API_KEY=sk-your-key ROUTER_DEFAULT=openai,gpt-5.2 -# Gemini -GEMINI_API_KEY=your-gemini-key -ROUTER_DEFAULT=gemini,gemini-2.5-pro - -# DeepSeek (via Together.ai) -DEEPSEEK_API_KEY=your-together-key -ROUTER_DEFAULT=deepseek,deepseek-ai/DeepSeek-V3 - # OpenRouter OPENROUTER_API_KEY=sk-or-your-key -ROUTER_DEFAULT=openrouter,anthropic/claude-sonnet-4 +ROUTER_DEFAULT=openrouter,google/gemini-3-pro-preview ``` **Note:** Shannon is optimized for Anthropic's Claude models. Alternative providers are useful for cost savings during development but may produce varying results. diff --git a/README.md b/README.md index a0cf107..5bb0049 100644 --- a/README.md +++ b/README.md @@ -269,10 +269,6 @@ Shannon can route requests through alternative AI providers instead of Anthropic # Choose one provider: OPENAI_API_KEY=sk-... # OR - GEMINI_API_KEY=... - # OR - DEEPSEEK_API_KEY=... - # OR OPENROUTER_API_KEY=sk-or-... # Set default model: @@ -286,13 +282,11 @@ Shannon can route requests through alternative AI providers instead of Anthropic #### Supported Providers -| Provider | Models | Approx. Cost | Notes | -|----------|--------|--------------|-------| -| **Anthropic** (default) | Claude Sonnet 4 | $3/$15 per M tokens | Best quality, recommended | -| **OpenAI** | gpt-5.2, gpt-5-mini | $2.50/$10 per M tokens | Good alternative | -| **Google Gemini** | gemini-2.5-pro | ~$1.25/$5 per M tokens | Long context (1M+), strong reasoning | -| **DeepSeek** | DeepSeek-V3 | ~$0.14/$0.28 per M tokens | Cheapest option | -| **OpenRouter** | 100+ models | Varies | Single API for many models | +| Provider | Models | Notes | +|----------|--------|-------| +| **Anthropic** | Claude Sonnet 4 | Best quality, recommended | +| **OpenAI** | gpt-5.2, gpt-5-mini | Good alternative | +| **OpenRouter** | google/gemini-3-pro-preview, google/gemini-3-flash-preview | Access to Gemini 3 models | #### Disclaimer diff --git a/configs/router-config.json b/configs/router-config.json index d1a430f..f12973c 100644 --- a/configs/router-config.json +++ b/configs/router-config.json @@ -15,32 +15,13 @@ "use": [["maxcompletiontokens", { "max_completion_tokens": 16384 }]] } }, - { - "name": "gemini", - "api_base_url": "https://generativelanguage.googleapis.com/v1beta/models/", - "api_key": "$GEMINI_API_KEY", - "models": ["gemini-2.5-pro"], - "transformer": { - "use": ["gemini"] - } - }, - { - "name": "deepseek", - "api_base_url": "$DEEPSEEK_API_BASE", - "api_key": "$DEEPSEEK_API_KEY", - "models": ["deepseek-ai/DeepSeek-V3", "deepseek-chat"], - "transformer": { - "use": ["deepseek", "enhancetool"] - } - }, { "name": "openrouter", "api_base_url": "https://openrouter.ai/api/v1/chat/completions", "api_key": "$OPENROUTER_API_KEY", "models": [ - "anthropic/claude-sonnet-4", "google/gemini-3-pro-preview", - "openai/gpt-5.2" + "google/gemini-3-flash-preview" ], "transformer": { "use": ["openrouter"] diff --git a/docker-compose.yml b/docker-compose.yml index f551b58..26cbdfa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -58,9 +58,6 @@ services: - HOST=0.0.0.0 - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-} - OPENAI_API_KEY=${OPENAI_API_KEY:-} - - GEMINI_API_KEY=${GEMINI_API_KEY:-} - - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY:-} - - DEEPSEEK_API_BASE=${DEEPSEEK_API_BASE:-https://api.together.xyz/v1/chat/completions} - OPENROUTER_API_KEY=${OPENROUTER_API_KEY:-} - ROUTER_DEFAULT=${ROUTER_DEFAULT:-openai,gpt-4o} healthcheck: diff --git a/shannon b/shannon index 760b0b1..e971a2a 100755 --- a/shannon +++ b/shannon @@ -125,12 +125,12 @@ cmd_start() { # Check for API key (router mode can use alternative provider API keys) if [ -z "$ANTHROPIC_API_KEY" ] && [ -z "$CLAUDE_CODE_OAUTH_TOKEN" ]; then - if [ "$ROUTER" = "true" ] && { [ -n "$OPENAI_API_KEY" ] || [ -n "$GEMINI_API_KEY" ] || [ -n "$DEEPSEEK_API_KEY" ] || [ -n "$OPENROUTER_API_KEY" ]; }; then + if [ "$ROUTER" = "true" ] && { [ -n "$OPENAI_API_KEY" ] || [ -n "$OPENROUTER_API_KEY" ]; }; then # Router mode with alternative provider - set a placeholder for SDK init export ANTHROPIC_API_KEY="router-mode" else echo "ERROR: Set ANTHROPIC_API_KEY or CLAUDE_CODE_OAUTH_TOKEN in .env" - echo " (or use ROUTER=true with OPENAI_API_KEY, GEMINI_API_KEY, DEEPSEEK_API_KEY, or OPENROUTER_API_KEY)" + echo " (or use ROUTER=true with OPENAI_API_KEY or OPENROUTER_API_KEY)" exit 1 fi fi @@ -166,8 +166,8 @@ cmd_start() { echo "Starting claude-code-router..." # Check for provider API keys - if [ -z "$OPENAI_API_KEY" ] && [ -z "$GEMINI_API_KEY" ] && [ -z "$DEEPSEEK_API_KEY" ] && [ -z "$OPENROUTER_API_KEY" ]; then - echo "WARNING: No provider API key set (OPENAI_API_KEY, GEMINI_API_KEY, DEEPSEEK_API_KEY, or OPENROUTER_API_KEY). Router may not work." + if [ -z "$OPENAI_API_KEY" ] && [ -z "$OPENROUTER_API_KEY" ]; then + echo "WARNING: No provider API key set (OPENAI_API_KEY or OPENROUTER_API_KEY). Router may not work." fi # Start router with profile