Claude Code Router¶
Router di Codice Claude completo con comandi e flussi di lavoro per instradare richieste di Claude Code a diversi modelli di intelligenza artificiale, consentendo lo sviluppo multi-modello e l'ottimizzazione dei costi.
Panoramica¶
Claude Code Router è uno strumento open-source che agisce come un proxy locale per le richieste di Claude Code, permettendo di intercettare, modificare e instradare richieste a diversi modelli di intelligenza artificiale tra cui GPT-4, Gemini, modelli locali e altre API compatibili con OpenAI. Questo consente agli sviluppatori di utilizzare l'interfaccia potente di Claude Code sfruttando modelli diversi per compiti specifici, ottimizzazione dei costi o accesso a crediti API gratuiti.
⚠️ Avviso di Utilizzo: Claude Code Router modifica le richieste API e richiede una configurazione corretta delle chiavi e degli endpoint API. Assicurarsi sempre della gestione sicura delle credenziali e della conformità con i termini di servizio delle API.
Installazione¶
Configurazione Rapida¶
# Install via npm
npm install -g claude-code-router
# Install via pip
pip install claude-code-router
# Clone from GitHub
git clone https://github.com/musistudio/claude-code-router.git
cd claude-code-router
npm install
Installazione Docker¶
# Pull Docker image
docker pull claudecode/router:latest
# Run with Docker
docker run -p 8080:8080 -e OPENAI_API_KEY=your-key claudecode/router
# Docker Compose
version: '3.8'
services:
claude-router:
image: claudecode/router:latest
ports:
- "8080:8080"
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
Compilazione da Sorgente¶
# Clone repository
git clone https://github.com/musistudio/claude-code-router.git
cd claude-code-router
# Install dependencies
npm install
# Build project
npm run build
# Start router
npm start
Configurazione¶
Configurazione Base¶
{
"router": {
"port": 8080,
"host": "localhost",
"logLevel": "info",
"enableCors": true
},
"models": {
"claude-3-sonnet": {
"provider": "anthropic",
"apiKey": "${ANTHROPIC_API_KEY}",
"endpoint": "https://api.anthropic.com/v1/messages"
},
"gpt-4": {
"provider": "openai",
"apiKey": "${OPENAI_API_KEY}",
"endpoint": "https://api.openai.com/v1/chat/completions"
},
"gemini-pro": {
"provider": "google",
"apiKey": "${GOOGLE_API_KEY}",
"endpoint": "https://generativelanguage.googleapis.com/v1/models"
}
},
"routing": {
"defaultModel": "claude-3-sonnet",
"fallbackModel": "gpt-4",
"loadBalancing": false,
"costOptimization": true
}
}
Regole di Instradamento Avanzate¶
{
"routingRules": [
{
"name": "code_generation",
"condition": {
"messageContains": ["write code", "implement", "create function"],
"fileTypes": [".py", ".js", ".ts", ".java"]
},
"targetModel": "gpt-4",
"priority": 1
},
{
"name": "documentation",
"condition": {
"messageContains": ["document", "explain", "comment"],
"taskType": "documentation"
},
"targetModel": "claude-3-sonnet",
"priority": 2
},
{
"name": "cost_optimization",
"condition": {
"tokenCount": { "max": 1000 },
"complexity": "low"
},
"targetModel": "gpt-3.5-turbo",
"priority": 3
}
]
}
Comandi Principali¶
Gestione Router¶
| Comando | Descrizione |
|---|---|
router start |
Avvia il Claude Code Router |
router stop |
Arrestare il servizio router |
router restart |
Riavvia il router |
router status |
Controlla lo stato del router |
router config |
Visualizza configurazione corrente |
router logs |
Visualizza log del router |
router health |
Endpoint di health check |
| ### Gestione Modelli | |
| Comando | Descrizione |
| --------- | ------------- |
router models list |
Elenca modelli disponibili |
router models add |
Aggiungi nuova configurazione del modello |
router models remove |
Rimuovi configurazione modello |
router models test |
Verifica connettività del modello |
router models switch |
Cambia modello predefinito |
router models status |
Controlla stato del modello |
| ## Integrazione Claude Code |
Configura Claude Code¶
# Set Claude Code to use router
export ANTHROPIC_API_BASE=http://localhost:8080/v1
export ANTHROPIC_API_KEY=router-proxy-key
# Alternative configuration
claude-code config set api.base_url http://localhost:8080/v1
claude-code config set api.key router-proxy-key
# Verify configuration
claude-code config show
Configurazione Proxy Router¶
# Start router with specific configuration
claude-code-router --config config.json --port 8080
# Start with environment variables
ROUTER_PORT=8080 ROUTER_CONFIG=config.json claude-code-router
# Start with custom models
claude-code-router --models gpt-4,claude-3-sonnet,gemini-pro
Provider di Modelli¶
Integrazione OpenAI¶
{
"openai": {
"apiKey": "${OPENAI_API_KEY}",
"baseUrl": "https://api.openai.com/v1",
"models": {
"gpt-4": {
"maxTokens": 8192,
"temperature": 0.7,
"costPerToken": 0.00003
},
"gpt-3.5-turbo": {
"maxTokens": 4096,
"temperature": 0.7,
"costPerToken": 0.000002
}
}
}
}
Integrazione Google Gemini¶
{
"google": {
"apiKey": "${GOOGLE_API_KEY}",
"baseUrl": "https://generativelanguage.googleapis.com/v1",
"models": {
"gemini-pro": {
"maxTokens": 32768,
"temperature": 0.7,
"costPerToken": 0.000001
},
"gemini-pro-vision": {
"maxTokens": 16384,
"temperature": 0.7,
"supportsImages": true
}
}
}
}
Integrazione Modelli Locali¶
{
"local": {
"baseUrl": "http://localhost:11434/v1",
"models": {
"llama2": {
"endpoint": "/api/generate",
"maxTokens": 4096,
"temperature": 0.7,
"costPerToken": 0
},
"codellama": {
"endpoint": "/api/generate",
"maxTokens": 8192,
"temperature": 0.3,
"specialization": "code"
}
}
}
}
Integrazione OpenRouter¶
{
"openrouter": {
"apiKey": "${OPENROUTER_API_KEY}",
"baseUrl": "https://openrouter.ai/api/v1",
"models": {
"anthropic/claude-3-sonnet": {
"maxTokens": 200000,
"costPerToken": 0.000015
},
"openai/gpt-4": {
"maxTokens": 8192,
"costPerToken": 0.00003
},
"google/gemini-pro": {
"maxTokens": 32768,
"costPerToken": 0.000001
}
}
}
}
Strategie di Instradamento¶
Bilanciamento del Carico¶
{
"loadBalancing": {
"enabled": true,
"strategy": "round_robin",
"models": ["gpt-4", "claude-3-sonnet", "gemini-pro"],
"weights": {
"gpt-4": 0.4,
"claude-3-sonnet": 0.4,
"gemini-pro": 0.2
},
"healthCheck": {
"enabled": true,
"interval": 60,
"timeout": 10
}
}
}
Ottimizzazione dei Costi¶
{
"costOptimization": {
"enabled": true,
"budget": {
"daily": 10.00,
"monthly": 300.00,
"currency": "USD"
},
"rules": [
{
"condition": "tokenCount < 500",
"model": "gpt-3.5-turbo"
},
{
"condition": "tokenCount >= 500 && tokenCount < 2000",
"model": "claude-3-haiku"
},
{
"condition": "tokenCount >= 2000",
"model": "claude-3-sonnet"
}
]
}
}
Instradamento Intelligente¶
{
"intelligentRouting": {
"enabled": true,
"rules": [
{
"name": "code_tasks",
"patterns": ["implement", "write code", "debug", "refactor"],
"model": "gpt-4",
"confidence": 0.8
},
{
"name": "analysis_tasks",
"patterns": ["analyze", "explain", "review", "understand"],
"model": "claude-3-sonnet",
"confidence": 0.9
},
{
"name": "creative_tasks",
"patterns": ["create", "design", "brainstorm", "generate"],
"model": "gemini-pro",
"confidence": 0.7
}
]
}
}
Monitoraggio e Analisi¶
Tracciamento Utilizzo¶
# View usage statistics
curl http://localhost:8080/api/stats
# Model usage breakdown
curl http://localhost:8080/api/stats/models
# Cost analysis
curl http://localhost:8080/api/stats/costs
# Performance metrics
curl http://localhost:8080/api/stats/performance
Configurazione Logging¶
{
"logging": {
"level": "info",
"format": "json",
"outputs": ["console", "file"],
"file": {
"path": "./logs/router.log",
"maxSize": "100MB",
"maxFiles": 10,
"compress": true
},
"metrics": {
"enabled": true,
"interval": 60,
"endpoint": "/metrics"
}
}
}
Monitoraggio Salute¶
Would you like me to continue with the remaining sections?```bash
Health check endpoint¶
curl http://localhost:8080/health
Detailed health status¶
curl http://localhost:8080/health/detailed
Model availability¶
curl http://localhost:8080/health/models
Performance metrics¶
curl http://localhost:8080/metrics
## Funzionalità Avanzatejavascript
// Custom request transformer
const requestTransformer = {
transform: (request, targetModel) => {
// Modify request based on target model
if (targetModel === 'gpt-4') {
request.temperature = 0.3; // Lower temperature for code
} else if (targetModel === 'claude-3-sonnet') {
request.max_tokens = 4096; // Adjust token limit
}
return request;
}
};
// Response transformer
const responseTransformer = {
transform: (response, sourceModel) => {
// Standardize response format
return {
content: response.content || response.message,
model: sourceModel,
usage: response.usage,
timestamp: new Date().toISOString()
};
}
};
### Sistema di Pluginjavascript
// Router plugin interface
class RouterPlugin {
constructor(config) {
this.config = config;
}
onRequest(request, context) { // Pre-process request return request; }
onResponse(response, context) { // Post-process response return response; }
onError(error, context) { // Handle errors console.error('Router error:', error); } }
// Load plugins
const plugins = [
new CostTrackingPlugin(),
new CachePlugin(),
new RateLimitPlugin()
];
### Sistema di Cachingjson
{
"cache": {
"enabled": true,
"type": "redis",
"connection": {
"host": "localhost",
"port": 6379,
"password": "${REDIS_PASSWORD}"
},
"ttl": 3600,
"keyPrefix": "claude-router:",
"compression": true,
"rules": [
{
"pattern": "explain*",
"ttl": 7200
},
{
"pattern": "generate*",
"ttl": 1800
}
]
}
}
## Sicurezza e Autenticazionejson
{
"security": {
"authentication": {
"enabled": true,
"type": "bearer",
"keys": [
{
"key": "router-key-1",
"permissions": ["read", "write"],
"rateLimit": 1000
},
{
"key": "router-key-2",
"permissions": ["read"],
"rateLimit": 100
}
]
},
"encryption": {
"enabled": true,
"algorithm": "AES-256-GCM",
"keyRotation": 86400
}
}
}
### Gestione delle Chiavi APIjson
{
"rateLimit": {
"enabled": true,
"global": {
"requests": 1000,
"window": 3600
},
"perKey": {
"requests": 100,
"window": 3600
},
"perModel": {
"gpt-4": {
"requests": 50,
"window": 3600
},
"claude-3-sonnet": {
"requests": 100,
"window": 3600
}
}
}
}
### Limitazione dei Tassibash
Router not starting¶
- Check port availability
- Verify configuration file
- Check API key validity
- Review log files
Model connection failures¶
- Test API endpoints
- Verify API keys
- Check network connectivity
- Review rate limits
Performance issues¶
- Monitor memory usage
- Check cache configuration
- Review routing rules
- Optimize model selection
## Risoluzione dei Problemibash
Enable debug logging¶
DEBUG=claude-router:* npm start
Verbose logging¶
claude-code-router --log-level debug
Request tracing¶
curl -H "X-Debug: true" http://localhost:8080/v1/messages
Performance profiling¶
curl http://localhost:8080/debug/profile
### Problemi Comunijson
{
"performance": {
"connectionPool": {
"maxConnections": 100,
"timeout": 30000,
"keepAlive": true
},
"compression": {
"enabled": true,
"level": 6,
"threshold": 1024
},
"clustering": {
"enabled": true,
"workers": "auto"
}
}
}
### Modalità Debugyaml
Kubernetes deployment¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: claude-router
spec:
replicas: 3
selector:
matchLabels:
app: claude-router
template:
metadata:
labels:
app: claude-router
spec:
containers:
- name: claude-router
image: claudecode/router:latest
ports:
- containerPort: 8080
env:
- name: OPENAI_API_KEY
valueFrom:
secretKeyRef:
name: api-keys
key: openai
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: api-keys
key: anthropic
### Ottimizzazione delle Prestazioniyaml
version: '3.8'
services:
claude-router:
image: claudecode/router:latest
ports:
- "8080:8080"
environment:
- NODE_ENV=production
- ROUTER_CONFIG=/app/config/production.json
volumes:
- ./config:/app/config
- ./logs:/app/logs
restart: unless-stopped
redis: image: redis:alpine ports: - "6379:6379" volumes: - redis_data:/data
volumes: redis_data: ```## Distribuzione https://github.com/musistudio/claude-code-router##
Distribuzione in Produzione¶
https://docs.claude-router.dev/##
Docker Compose¶
https://discord.gg/claude-router#
Risorse¶
https://youtube.com/claude-router- Repository GitHub di Claude Code Router