AI Backend Proxy

Iniciar sesión · Panel admin

¿Qué es este servicio?

Es un proxy que reenvía peticiones a un backend de inferencia (por ejemplo LocalAI, Ollama, vLLM u otro compatible). Solo quien tenga una API key válida puede usar las rutas de la API; el panel de administración está protegido con OAuth (GitHub).

Autenticación en la API

En cada petición a /api/..., /v1/... o /models/... incluye la clave con una de estas cabeceras:

Si envías ambas, el proxy usa x-api-key. Sin clave válida → 401.

Rutas principales

PrefijoUso
/api/*API estilo Ollama (chat, generate, modelos, etc.)
/v1/*API compatible con OpenAI (si el upstream lo soporta)
/models/*Endpoints de administración de modelos (p. ej. LocalAI /models/apply)
/healthzComprobación de vida; no requiere API key

Modelos disponibles

💬 Chat / Texto

gemma-4-26B-A4B-it-UD-IQ3_S.gguf

📐 Embeddings

nomic-embed-text-v1.5.Q5_K_M.gguf

Esta lista se obtiene automáticamente del backend y se actualiza cada pocos minutos.

Ejemplos (curl)

URL base detectada para esta petición:

https://ollama.orinocostudios.dev

Listar modelos (estilo Ollama):

curl -H "x-api-key: TU_API_KEY" https://ollama.orinocostudios.dev/api/v1/models

Listar modelos (OpenAI-compatible):

curl -H "Authorization: Bearer TU_API_KEY" https://ollama.orinocostudios.dev/v1/models

Instalar un modelo (LocalAI):

curl -X POST -H "x-api-key: TU_API_KEY" -H "Content-Type: application/json" https://ollama.orinocostudios.dev/models/apply -d '{"id":"TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF"}'

Uso con imágenes

POST/v1/images/generations

Genera una imagen a partir de un prompt de texto. Requiere un modelo de imagen instalado en el backend (p. ej. stablediffusion, sdxl).

curl -X POST -H "x-api-key: TU_API_KEY" \
  -H "Content-Type: application/json" \
  https://ollama.orinocostudios.dev/v1/images/generations \
  -d '{
  "model": "stablediffusion",
  "prompt": "un gato astronauta en el espacio, estilo pixel art",
  "size": "512x512"
}'

La respuesta incluye la imagen en base64 o una URL temporal, según la configuración del backend.

POST/v1/chat/completions — Visión (analizar imagen)

Envía una imagen junto con texto para que un modelo con capacidad de visión la analice (p. ej. llava, bakllava).

curl -X POST -H "x-api-key: TU_API_KEY" \
  -H "Content-Type: application/json" \
  https://ollama.orinocostudios.dev/v1/chat/completions \
  -d '{
  "model": "llava",
  "messages": [{
    "role": "user",
    "content": [
      {"type": "text", "text": "¿Qué ves en esta imagen?"},
      {"type": "image_url", "image_url": {"url": "data:image/png;base64,iVBOR..."}}
    ]
  }]
}'
Puedes usar una URL pública en lugar de base64: "url": "https://ejemplo.com/foto.jpg". El soporte depende del modelo y el backend.

Uso con audio

POST/v1/audio/transcriptions — Speech-to-Text

Transcribe un archivo de audio a texto usando un modelo STT (p. ej. whisper). Se envía como multipart/form-data.

curl -X POST -H "x-api-key: TU_API_KEY" \
  https://ollama.orinocostudios.dev/v1/audio/transcriptions \
  -F "model=whisper-1" \
  -F "file=@grabacion.mp3" \
  -F "language=es"

Formatos soportados: mp3, mp4, mpeg, mpga, m4a, wav, webm (depende del backend).

POST/v1/audio/speech — Text-to-Speech

Convierte texto a audio usando un modelo TTS (p. ej. piper, bark). Devuelve el audio en el formato indicado.

curl -X POST -H "x-api-key: TU_API_KEY" \
  -H "Content-Type: application/json" \
  https://ollama.orinocostudios.dev/v1/audio/speech \
  -d '{
  "model": "tts-1",
  "input": "Hola, esto es una prueba de texto a voz.",
  "voice": "es-es-female"
}' --output salida.mp3
Las voces disponibles dependen del modelo TTS instalado. Consulta la documentación de tu backend para ver la lista.

Uso con video / visión multimodal

Algunos modelos de visión permiten analizar secuencias de imágenes (frames de video). El patrón es enviar múltiples imágenes en un solo mensaje:

POST/v1/chat/completions — Múltiples frames

curl -X POST -H "x-api-key: TU_API_KEY" \
  -H "Content-Type: application/json" \
  https://ollama.orinocostudios.dev/v1/chat/completions \
  -d '{
  "model": "llava",
  "messages": [{
    "role": "user",
    "content": [
      {"type": "text", "text": "Describe lo que ocurre en este video"},
      {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4AAQ..."}},
      {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4BBR..."}},
      {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4CCT..."}}
    ]
  }]
}'
El soporte de video varía según el modelo y el backend. No todos los modelos aceptan múltiples imágenes. Verifica con el administrador qué modelos tienen esta capacidad habilitada.

Solicitar acceso (API key)

Si necesitas una clave, completa todos los campos. Un administrador revisará la solicitud en el panel.

Nombre y mensaje son obligatorios (mensaje mínimo 20 caracteres) para reducir spam.

Este formulario está protegido con verificación Cloudflare Turnstile.