>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
TypeScript

Cómo dejar de escribir adaptadores para redes neuronales y tomar control de los costos de tokens

Recently, I was rewriting the Claude integration to an updated client and caught myself thinking. One day clients ask to connect GPT-4o, another day they demand Anthropic, and a week later the finance department asks where a several-hundred-dollar bill for tests came from. Each time I have to add error handling logic, manage keys, and manually calculate token expenses.

Esta rutina se resuelve con LLM Gateway del equipo de The Open Co. El proyecto funciona como una puerta de enlace API unificada que acepta llamadas en el formato estándar de OpenAI y las enruta a los proveedores correspondientes.

Una Solicitud para Cualquier Modelo

El concepto central es sencillo. En lugar de integrar múltiples SDKs, envías una única solicitud HTTP a una puerta de enlace local o en la nube. El controlador identifica automáticamente el proveedor objetivo, transforma el formato y devuelve la respuesta.

Actualmente se admiten los principales proveedores:

  • OpenAI
  • Anthropic
  • Google Vertex AI
  • Otros servicios con APIs compatibles

Así se ve una solicitud estándar a la puerta de enlace:

curl -X POST https://api.llmgateway.io/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $LLM_GATEWAY_API_KEY" \
  -d '{
  "model": "gpt-4o",
  "messages": [
    {"role": "user", "content": "Hello, how are you?"}
  ]
}'

Si necesitas cambiar a Claude 3.5 Sonnet, la estructura JSON en tu aplicación permanece igual. Solo cambia el nombre del modelo en el cuerpo de la solicitud.

Seguimiento de Costos y Métricas de Latencia

Cuando múltiples servicios o desarrolladores trabajan con redes neuronales, controlar los límites se vuelve difícil. A veces alguien ejecuta un script con un prompt incorrecto en un bucle infinito y consume el presupuesto de un mes en una hora.

La puerta de enlace se encarga del seguimiento. Cada transacción se guarda en la base de datos y el sistema calcula automáticamente:

  • Número de tokens de entrada y salida
  • Costo total de cada llamada
  • Tiempo de respuesta del modelo
  • Estadísticas generales por claves y proyectos

A través del panel web, puedes ver gráficos listos para usar e inmediatamente identificar qué modelo específico está consumiendo la mayor parte del presupuesto.

Estructura del Proyecto y Ejecución en Docker

Los autores construyeron un monorepo en TypeScript. Bajo el capó se utilizan tecnologías probadas:

  • Hono maneja el proxy de solicitudes API
  • Next.js gestiona la interfaz web y el playground
  • Drizzle ORM trabaja con las bases de datos de PostgreSQL y Redis
  • TypeScript asegura la escritura de extremo a extremo de los componentes

Puedes desplegar tu propio servicio en un par de minutos mediante Docker. Los autores ensamblaron una imagen lista para usar que combina los componentes principales.

docker volume create llmgateway_postgres
docker volume create llmgateway_redis

docker run -d \
  --name llmgateway \
  --restart unless-stopped \
  -p 3002:3002 \
  -p 3003:3003 \
  -p 3005:3005 \
  -p 3006:3006 \
  -p 4001:4001 \
  -p 4002:4002 \
  -v llmgateway_postgres:/var/lib/postgresql/data \
  -v llmgateway_redis:/var/lib/redis \
  -e AUTH_SECRET="$(openssl rand -base64 32 | tr -d '\n')" \
  -e GATEWAY_API_KEY_HASH_SECRET="$(openssl rand -base64 32 | tr -d '\n')" \
  ghcr.io/theopenco/llmgateway-unified:latest

Un pequeño detalle de la documentación: no montes una carpeta de la máquina host directamente en /var/lib/postgresql/data. Due to the specifics of PostgreSQL permission initialization in the container, the process may crash. Los volúmenes con nombre en el comando anterior eliminan este problema.

Si quieres probar el sistema primero sin despliegue, los desarrolladores tienen una versión en la nube en llmgateway.io.

Limitaciones de la Versión Gratuita

El repositorio utiliza doble licenciamiento. El código principal se distribuye bajo AGPLv3, sin embargo algunas carpetas en el código fuente pertenecen a la versión Enterprise.

En la versión gratuita de código abierto, el historial de llamadas se almacena durante 30 días. Si necesitas retención ilimitada de logs, facturación avanzada de usuarios o separación de equipos dentro de tu organización, necesitarás comprar una licencia comercial.

Quién se Beneficiará de Esta Herramienta

Si tu aplicación realiza tres solicitudes al día a un único modelo, no tiene sentido configurar un proxy separado. Solo añadirás un punto de fallo extra y una latencia de red negligible.

La puerta de enlace se mostrará útil en las siguientes situaciones:

  • El proyecto utiliza modelos de diferentes proveedores
  • Se requiere seguimiento transparente de costos de tokens en diferentes servicios
  • Necesitas desplegar el proxy en tu propio entorno
  • Se planea una conmutación rápida por error al modelo de respaldo en caso de fallos

Puedes probar el proyecto en GitHub. El README allí es bastante minimalista, pero el proyecto se entiende incluso sin instrucciones extensas.

Proyectos relacionados