¿Qué hace relay?
Enruta el tráfico de LLM entre proveedores con una puerta de enlace autoalojada. Usa un único binario Go para gestionar tus claves, conmutación por error y enrutamiento para los dialectos de API de OpenAI y Anthropic.
Características
- Enrutamiento inteligente: Define reglas para dirigir solicitudes a diferentes proveedores según el modelo, la carga o estrategias personalizadas.
- Conmutación por error: Configura respaldo automático si un proveedor falla o alcanza límites de tasa.
- Gestión centralizada de claves: Almacena y administra todas tus claves API en un solo lugar.
- Ligero y eficiente: Un único binario Go, sin dependencias externas pesadas.
- Dialectos de API compatibles: OpenAI (
/v1/chat/completions) y Anthropic (/v1/messages).
Requisitos
- Go 1.21 o superior (para compilar desde el código fuente).
- Sistema operativo: Linux, macOS o Windows.
Instalación
Puedes descargar el binario precompilado desde la página de releases o compilarlo tú mismo:
git clone https://github.com/recorded-phrygian494/relay.git
cd relay
go build -o relay .
Configuración
Crea un archivo config.yaml en el mismo directorio que el binario. Aquí tienes un ejemplo:
---
servers:
- port: 8080
providers:
- name: openai
type: openai
api_key: "sk-your-openai-key"
base_url: "https://api.openai.com"
- name: anthropic
type: anthropic
api_key: "sk-ant-your-anthropic-key"
base_url: "https://api.anthropic.com"
routes:
- model: "gpt-4"
provider: openai
- model: "claude-3-opus-20240229"
provider: anthropic
- model: "*"
provider: openai
fallback: anthropic
Uso
Ejecuta el binario con el archivo de configuración:
./relay --config config.yaml
El servidor se iniciará en el puerto especificado (por defecto 8080). Ahora puedes enviar solicitudes a http://localhost:8080/v1/chat/completions (para OpenAI) o http://localhost:8080/v1/messages (para Anthropic).
Ejemplo con curl:
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"messages": [{"role": "user", "content": "Hola, ¿cómo estás?"}]
}'
Opciones de línea de comandos
--config: Ruta al archivo de configuración (por defectoconfig.yaml).--port: Puerto para el servidor (anula la configuración).--verbose: Habilita la salida detallada.