Aller au contenu

Claude Code Routeur

Copier toutes les commandes Générer PDF

Commandes Claude Code Router complètes et flux de travail pour le routage Claude Code demande à différents modèles d'IA, permettant le développement multi-modèles et l'optimisation des coûts.

Aperçu général

Code Claude Router est un outil open-source qui agit comme proxy local pour les demandes de code Claude, vous permettant d'intercepter, de modifier et d'orienter les demandes vers différents modèles d'IA, dont GPT-4, Gemini, modèles locaux et autres API compatibles OpenAI. Cela permet aux développeurs d'utiliser l'interface puissante de Claude Code tout en tirant parti de différents modèles pour des tâches spécifiques, l'optimisation des coûts ou l'accès aux crédits d'API gratuits.

C'est pas vrai. Avis d'utilisation: Code Claude Router modifie les demandes d'API et nécessite une configuration adéquate des clés et des paramètres de l'API. Assurez-vous toujours de gérer en toute sécurité les références et la conformité aux conditions de service de l'API.

Installation

Configuration rapide

# 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

Installation 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}
```_

### Construire à partir de la source
```bash
# 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
```_

## Configuration

### Configuration de base
```json
{
  "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
  }
}

Règles d'acheminement avancées

{
  "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
    }
  ]
}

Commandes de base

Gestion du routeur

Command Description
router start Start the Claude Code Router
router stop Stop the router service
router restart Restart the router
router status Check router status
router config View current configuration
router logs View router logs
router health Health check endpoint

Gestion des modèles

Command Description
router models list List available models
router models add Add new model configuration
router models remove Remove model configuration
router models test Test model connectivity
router models switch Switch default model
router models status Check model status

Intégration du code Claude

Configurer le code Claude

# 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

Configuration du proxy du routeur

# 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

Fournisseurs de modèles

Intégration 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
      }
    }
  }
}

Intégration 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
      }
    }
  }
}

Intégration de modèles locaux

{
  "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"
      }
    }
  }
}

Intégration 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
      }
    }
  }
}

Stratégies d'acheminement

Équilibre de charge

{
  "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
    }
  }
}

Optimisation des coûts

{
  "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"
      }
    ]
  }
}

Routage intelligent

{
  "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
      }
    ]
  }
}

Surveillance et analyse

Suivi de l'utilisation

# 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

Configuration d'enregistrement

{
  "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"
    }
  }
}

Surveillance de la santé

# 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

Caractéristiques avancées

Demande de transformation

// 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()
    };
  }
};

Système de connexion

// 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()
];

Système de mise en cache

{
  "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
      }
    ]
  }
}

Sécurité et authentification

API Gestion des clés

{
  "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
    }
  }
}

Limite des taux

{
  "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
      }
    }
  }
}

Dépannage

Questions communes

# 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

Mode de débogage

# 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

Optimisation des performances

{
  "performance": {
    "connectionPool": {
      "maxConnections": 100,
      "timeout": 30000,
      "keepAlive": true
    },
    "compression": {
      "enabled": true,
      "level": 6,
      "threshold": 1024
    },
    "clustering": {
      "enabled": true,
      "workers": "auto"
    }
  }
}

Déploiement

Déploiement de la production

# 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

Composez Docker

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:

Ressources

  • [Claude Code Router GitHub] (LINK_5)
  • Documentation
  • [Discorde communautaire] (LINK_5)
  • [Tutoriels vidéo] (LINK_5)
  • [Intégration OpenRouter] (LINK_5)