콘텐츠로 이동

Claude 코드 라우터

Claude 코드 요청을 다른 AI 모델로 라우팅하기 위한 포괄적인 Claude 코드 라우터 명령어와 워크플로우로, 멀티 모델 개발 및 비용 최적화를 가능하게 합니다.

개요

Claude 코드 라우터는 Claude 코드 요청을 위한 로컬 프록시로 작동하는 오픈 소스 도구로, GPT-4, Gemini, 로컬 모델, 기타 OpenAI 호환 API를 포함한 다양한 AI 모델로 요청을 가로채고, 수정하고, 라우팅할 수 있게 해줍니다. 이를 통해 개발자들은 Claude 코드의 강력한 인터페이스를 사용하면서 특정 작업, 비용 최적화, 또는 무료 API 크레딧 접근을 위해 다른 모델을 활용할 수 있습니다.

⚠️ 사용 주의사항: Claude 코드 라우터는 API 요청을 수정하므로 API 키와 엔드포인트를 적절히 구성해야 합니다. 항상 자격 증명을 안전하게 처리하고 API 서비스 약관을 준수하세요.

설치

빠른 설정

# 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

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}

소스에서 빌드

# 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

구성

기본 구성

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

고급 라우팅 규칙

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

핵심 명령어

라우터 관리

명령어설명
router startClaude Code Router 시작하기
router stop라우터 서비스를 중지하세요
router restart라우터 재시작
router status라우터 상태 확인
router config현재 구성 보기
router logs라우터 로그 보기
router health상태 확인 엔드포인트

모델 관리

명령어설명
router models list사용 가능한 모델 목록
router models add새 모델 구성 추가
router models remove모델 구성 제거
router models test테스트 모델 연결성
router models switch기본 모델 전환
router models status모델 상태 확인

Claude 코드 통합

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

라우터 프록시 설정

# 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

모델 제공자

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

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

로컬 모델 통합

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

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

라우팅 전략

로드 밸런싱

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

비용 최적화

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

지능형 라우팅

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

모니터링 및 분석

사용량 추적

# 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

로깅 구성

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

상태 모니터링

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

```javascript
// 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()
    };
  }
};
```### 요청 변환
```javascript
// 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()
];
```### 플러그인 시스템
```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
      }
    ]
  }
}
```### 캐싱 시스템
```json
{
  "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
    }
  }
}
```## 보안 및 인증
```json
{
  "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
      }
    }
  }
}
```### API 키 관리
```bash
# 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
```### 속도 제한
```bash
# 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
```## 문제 해결
```json
{
  "performance": {
    "connectionPool": {
      "maxConnections": 100,
      "timeout": 30000,
      "keepAlive": true
    },
    "compression": {
      "enabled": true,
      "level": 6,
      "threshold": 1024
    },
    "clustering": {
      "enabled": true,
      "workers": "auto"
    }
  }
}
```### 일반적인 문제
```yaml
# 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
```### 디버그 모드
```yaml
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:
```### 성능 최적화
https://github.com/musistudio/claude-code-router#

# 배포
https://docs.claude-router.dev/##

# 프로덕션 배포
https://discord.gg/claude-router##

# Docker Compose
https://youtube.com/claude-router#

# 리소스
https://openrouter.ai/docs- [Claude Code Router GitHub](