Saltar a contenido

Enrutador de Código Claude

Comandos y flujos de trabajo integrales del Enrutador de Código Claude para dirigir solicitudes de Código Claude a diferentes modelos de IA, permitiendo desarrollo multi-modelo y optimización de costos.

Descripción general

El Enrutador de Código Claude es una herramienta de código abierto que actúa como un proxy local para solicitudes de Código Claude, permitiéndole interceptar, modificar y dirigir solicitudes a diferentes modelos de IA, incluyendo GPT-4, Gemini, modelos locales y otras API compatibles con OpenAI. Esto permite a los desarrolladores utilizar la potente interfaz de Código Claude mientras aprovechan diferentes modelos para tareas específicas, optimización de costos o acceso a créditos de API gratuitos.

⚠️ Aviso de Uso: El Enrutador de Código Claude modifica solicitudes de API y requiere una configuración adecuada de claves de API y puntos finales. Siempre asegúrese de manejar las credenciales de manera segura y cumplir con los términos de servicio de la API.

Instalación

Configuración Rápida

# 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

Instalación con 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}

Compilar desde el Código Fuente

# 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

Configuración

Configuración Básica

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

Reglas de Enrutamiento Avanzadas

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

Comandos Principales

Gestión del Enrutador

Comando Descripción
router start Inicie el enrutador de código Claude
router stop Detener el servicio de router
router restart Reiniciar el router
router status Verificar estado del router
router config Ver configuración actual
router logs Ver registros de router
router health Punto de control de salud
### Gestión de Modelos
Comando Descripción
--------- -------------
router models list Listar modelos disponibles
router models add Agregar nueva configuración de modelo
router models remove Eliminar configuración del modelo
router models test Probar conectividad de modelo
router models switch Cambiar modelo predeterminado
router models status Verificar estado del modelo
## Integración de Código Claude

Configurar Código 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

Configuración de Proxy del Enrutador

# 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

Proveedores de Modelos

Integración de 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
      }
    }
  }
}

Integración de 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
      }
    }
  }
}

Integración de Modelos Locales

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

Integración de 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
      }
    }
  }
}

Estrategias de Enrutamiento

Balanceo de Carga

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

Optimización de Costos

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

Enrutamiento Inteligente

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

Monitoreo y Análisis

Seguimiento de Uso

# 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

Configuración de Registro

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

Monitoreo de Salud```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 ## Características Avanzadasjavascript // 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 de Pluginsjavascript // 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 de Cachéjson { "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 } ] } } ## Seguridad y Autenticaciónjson { "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 } } } ### Gestión de Claves 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 } } } } ### Límite de Tasabash

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 ## Resolución de Problemasbash

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 ### Problemas Comunesjson { "performance": { "connectionPool": { "maxConnections": 100, "timeout": 30000, "keepAlive": true }, "compression": { "enabled": true, "level": 6, "threshold": 1024 }, "clustering": { "enabled": true, "workers": "auto" } } } ### Modo de Depuraciónyaml

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 ### Optimización de Rendimientoyaml 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: ```## Despliegue https://github.com/musistudio/claude-code-router### Despliegue en Producción https://docs.claude-router.dev/### Docker Compose https://discord.gg/claude-router## Recursos https://youtube.com/claude-router- Repositorio GitHub de Claude Code Router