refactor: simplify router to OpenAI and OpenRouter providers only
- Remove Gemini direct and DeepSeek provider configurations - Keep OpenAI (gpt-5.2, gpt-5-mini) and OpenRouter (Gemini 3 models) - Update documentation and environment examples - Remove cost column from README providers table
This commit is contained in:
+3
-20
@@ -22,29 +22,12 @@ ANTHROPIC_API_KEY=your-api-key-here
|
|||||||
# OPENAI_API_KEY=sk-your-openai-key
|
# OPENAI_API_KEY=sk-your-openai-key
|
||||||
# ROUTER_DEFAULT=openai,gpt-5.2
|
# ROUTER_DEFAULT=openai,gpt-5.2
|
||||||
|
|
||||||
# --- Google Gemini ---
|
# --- OpenRouter (access Gemini 3 models via single API) ---
|
||||||
# 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_API_KEY=sk-or-your-openrouter-key
|
# 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
|
# Available Models
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# OpenAI: gpt-5.2, gpt-5-mini
|
# OpenAI: gpt-5.2, gpt-5-mini
|
||||||
# Gemini: gemini-2.5-pro
|
# OpenRouter: google/gemini-3-pro-preview, google/gemini-3-flash-preview
|
||||||
# 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)
|
|
||||||
|
|||||||
@@ -282,9 +282,7 @@ Shannon supports routing Claude Agent SDK requests through alternative LLM provi
|
|||||||
| Provider | Models | Use Case |
|
| Provider | Models | Use Case |
|
||||||
|----------|--------|----------|
|
|----------|--------|----------|
|
||||||
| OpenAI | `gpt-5.2`, `gpt-5-mini` | Good tool use, balanced cost/performance |
|
| OpenAI | `gpt-5.2`, `gpt-5-mini` | Good tool use, balanced cost/performance |
|
||||||
| Gemini | `gemini-2.5-pro` | Long context (1M+ tokens), strong reasoning |
|
| OpenRouter | `google/gemini-3-pro-preview`, `google/gemini-3-flash-preview` | Access to Gemini 3 models via single API |
|
||||||
| 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 |
|
|
||||||
|
|
||||||
**Configuration (in .env):**
|
**Configuration (in .env):**
|
||||||
```bash
|
```bash
|
||||||
@@ -292,17 +290,9 @@ Shannon supports routing Claude Agent SDK requests through alternative LLM provi
|
|||||||
OPENAI_API_KEY=sk-your-key
|
OPENAI_API_KEY=sk-your-key
|
||||||
ROUTER_DEFAULT=openai,gpt-5.2
|
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
|
||||||
OPENROUTER_API_KEY=sk-or-your-key
|
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.
|
**Note:** Shannon is optimized for Anthropic's Claude models. Alternative providers are useful for cost savings during development but may produce varying results.
|
||||||
|
|||||||
@@ -269,10 +269,6 @@ Shannon can route requests through alternative AI providers instead of Anthropic
|
|||||||
# Choose one provider:
|
# Choose one provider:
|
||||||
OPENAI_API_KEY=sk-...
|
OPENAI_API_KEY=sk-...
|
||||||
# OR
|
# OR
|
||||||
GEMINI_API_KEY=...
|
|
||||||
# OR
|
|
||||||
DEEPSEEK_API_KEY=...
|
|
||||||
# OR
|
|
||||||
OPENROUTER_API_KEY=sk-or-...
|
OPENROUTER_API_KEY=sk-or-...
|
||||||
|
|
||||||
# Set default model:
|
# Set default model:
|
||||||
@@ -286,13 +282,11 @@ Shannon can route requests through alternative AI providers instead of Anthropic
|
|||||||
|
|
||||||
#### Supported Providers
|
#### Supported Providers
|
||||||
|
|
||||||
| Provider | Models | Approx. Cost | Notes |
|
| Provider | Models | Notes |
|
||||||
|----------|--------|--------------|-------|
|
|----------|--------|-------|
|
||||||
| **Anthropic** (default) | Claude Sonnet 4 | $3/$15 per M tokens | Best quality, recommended |
|
| **Anthropic** | Claude Sonnet 4 | Best quality, recommended |
|
||||||
| **OpenAI** | gpt-5.2, gpt-5-mini | $2.50/$10 per M tokens | Good alternative |
|
| **OpenAI** | gpt-5.2, gpt-5-mini | Good alternative |
|
||||||
| **Google Gemini** | gemini-2.5-pro | ~$1.25/$5 per M tokens | Long context (1M+), strong reasoning |
|
| **OpenRouter** | google/gemini-3-pro-preview, google/gemini-3-flash-preview | Access to Gemini 3 models |
|
||||||
| **DeepSeek** | DeepSeek-V3 | ~$0.14/$0.28 per M tokens | Cheapest option |
|
|
||||||
| **OpenRouter** | 100+ models | Varies | Single API for many models |
|
|
||||||
|
|
||||||
#### Disclaimer
|
#### Disclaimer
|
||||||
|
|
||||||
|
|||||||
@@ -15,32 +15,13 @@
|
|||||||
"use": [["maxcompletiontokens", { "max_completion_tokens": 16384 }]]
|
"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",
|
"name": "openrouter",
|
||||||
"api_base_url": "https://openrouter.ai/api/v1/chat/completions",
|
"api_base_url": "https://openrouter.ai/api/v1/chat/completions",
|
||||||
"api_key": "$OPENROUTER_API_KEY",
|
"api_key": "$OPENROUTER_API_KEY",
|
||||||
"models": [
|
"models": [
|
||||||
"anthropic/claude-sonnet-4",
|
|
||||||
"google/gemini-3-pro-preview",
|
"google/gemini-3-pro-preview",
|
||||||
"openai/gpt-5.2"
|
"google/gemini-3-flash-preview"
|
||||||
],
|
],
|
||||||
"transformer": {
|
"transformer": {
|
||||||
"use": ["openrouter"]
|
"use": ["openrouter"]
|
||||||
|
|||||||
@@ -58,9 +58,6 @@ services:
|
|||||||
- HOST=0.0.0.0
|
- HOST=0.0.0.0
|
||||||
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
|
||||||
- OPENAI_API_KEY=${OPENAI_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:-}
|
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY:-}
|
||||||
- ROUTER_DEFAULT=${ROUTER_DEFAULT:-openai,gpt-4o}
|
- ROUTER_DEFAULT=${ROUTER_DEFAULT:-openai,gpt-4o}
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|||||||
@@ -125,12 +125,12 @@ cmd_start() {
|
|||||||
|
|
||||||
# Check for API key (router mode can use alternative provider API keys)
|
# Check for API key (router mode can use alternative provider API keys)
|
||||||
if [ -z "$ANTHROPIC_API_KEY" ] && [ -z "$CLAUDE_CODE_OAUTH_TOKEN" ]; then
|
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
|
# Router mode with alternative provider - set a placeholder for SDK init
|
||||||
export ANTHROPIC_API_KEY="router-mode"
|
export ANTHROPIC_API_KEY="router-mode"
|
||||||
else
|
else
|
||||||
echo "ERROR: Set ANTHROPIC_API_KEY or CLAUDE_CODE_OAUTH_TOKEN in .env"
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -166,8 +166,8 @@ cmd_start() {
|
|||||||
echo "Starting claude-code-router..."
|
echo "Starting claude-code-router..."
|
||||||
|
|
||||||
# Check for provider API keys
|
# Check for provider API keys
|
||||||
if [ -z "$OPENAI_API_KEY" ] && [ -z "$GEMINI_API_KEY" ] && [ -z "$DEEPSEEK_API_KEY" ] && [ -z "$OPENROUTER_API_KEY" ]; then
|
if [ -z "$OPENAI_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."
|
echo "WARNING: No provider API key set (OPENAI_API_KEY or OPENROUTER_API_KEY). Router may not work."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Start router with profile
|
# Start router with profile
|
||||||
|
|||||||
Reference in New Issue
Block a user