Skip to main content

AISuperServer

AISuperServer Logo

AISuperServer es un servidor de inferencia local potente y fácil de usar, diseñado para ejecutar modelos de IA con Ollama. Proporciona una API REST robusta construida con Flask o FastAPI que permite:

  • 🚀 Despliegue rápido de modelos de IA locales
  • 🔑 Autenticación configurable mediante API keys
  • 📡 Soporte para respuestas en streaming
  • 🖼️ Capacidades multimodales para procesamiento de imágenes
  • 🛠️ Configuración flexible y monitoreo de recursos

Perfecto para desarrolladores que necesitan una solución ligera y eficiente para servir modelos de IA localmente.

Instalación via Pypi

pip install AISuperServer

Inicio rápido

Instalación de Ollama

macOS

Descargar

Windows

Descargar

Linux

curl -fsSL https://ollama.com/install.sh | sh

Instrucciones de instalación manual

Descarga del modelo a usar

ollama pull <modelo a usar>

Levantar tu servidor

from AISuperServer import SuperServerFlask

app = SuperServerFlask(
    model='deepseek-r1', # Recuerda que aqui vas a usar el modelo que descargaste anteriormente con el Ollama pull
    stream=True,
    port=8080, # Recuerda el puerto donde haz configurado tu servidor para hacer las peticiones
    api_key_required=False,
    enable_memory_monitor=True
)

Levantar tu servidor con FastAPI

from AISuperServer import SuperServerFastAPI

api_keys = ['dummy-apikey-OTXEYCZNS4NBR8YA9V0PBPV4VST2FBAE3PEZDKBDXKCQ88CSTIPI5NPOLN0ZN0CG', 'dummy-apikey-4VQF9L4NFF71GAW4NTOY6EPZUSE6SVNEKW3DHBHWGZIZM8IS8VTT2ZUR75Z0VBZI']

app = SuperServerFastAPI(
    model='qwq:32b', # Recuerda que aqui vas a usar el modelo que descargaste anteriormente con el Ollama pull
    stream=True,
    port=8080, # Recuerda el puerto donde haz configurado tu servidor para hacer las peticiones
    threads=3,
    api_key_required=True, # La opción de API keys ya esta disponible en FastAPI tambien 
    api_keys=api_keys, 
    enable_memory_monitor=True
)

Asi de facil es levantar tu servidor de inferencia local con AISuperServer en menos de 20 lineas de código

Peticiones a tu servidor

API de health

import requests
import json
import sys

def test_healt():
    x = requests.get('http://0.0.0.0:8080/api/health')
    return x.json()

health = test_healt()
print(health)

API de query a tu modelo

import requests
import json
import sys

def test_query():
    url = 'http://0.0.0.0:8080/api/inference'
    payload = { "query": "Oye haz la función de fibonacci en TypeScript",
                "system_prompt": "Eres un asistente útil y conciso.",
                "stream": False}
    x = requests.post(url, json=payload)
    return x.json()

query = test_query()
print(query)

API de query a tu modelo con respuesta en Stream

import requests
import json
import sys

def test_query_stream():
    url = 'http://0.0.0.0:8080/api/inference'
    payload = {
        "query": "Oye haz la función de fibonacci en TypeScript",
        "system_prompt": "Eres un asistente útil y conciso.",
        "stream" : True
    }
  
    # Usar stream=True en la petición para recibir la respuesta por partes
    response = requests.post(url, json=payload, stream=True)
  
    if response.status_code == 200:
        # Procesar la respuesta SSE línea por línea
        for line in response.iter_lines():
            if line:
                # Las líneas SSE comienzan con "data: "
                line = line.decode('utf-8')
                if line.startswith('data:'):
                    # Extraer el JSON después de "data: "
                    json_str = line[6:]  # Saltamos los primeros 6 caracteres ("data: ")
                    try:
                        chunk_data = json.loads(json_str)
                        chunk = chunk_data.get('chunk', '')
                        sys.stdout.write(chunk)
                        sys.stdout.flush()
                    except json.JSONDecodeError as e:
                        print(f"Error decodificando JSON: {e}")
    else:
        print(f"Error: {response.status_code}")
        try:
            print(response.json())
        except:
            print(response.text)

query = test_query_stream()
print(query)

Cliente API de SuperServer

Cliente API con modelos de Texto

from AISuperServer import SuperServerClient

dummy_api_key = 'dummy-apikey-OTXEYCZNS4NBR8YA9V0PBPV4VST2FBAE3PEZDKBDXKCQ88CSTIPI5NPOLN0ZN0CG'

client = SuperServerClient(api_key=dummy_api_key)
# Toma en cuenta que si tu servidor es levantado en un host y puerto diferente al '0.0.0.0:8080'
# Debes configuraro en el SuperServerClient algo asi: SuperServerClient(host='Tu host', port= 'Tu puerto')
# Y se ha configurado al api_key porque el servidor que levantamos para probar el cliente lo configuramos con api_key
query = client.Query('Oye explicame la secuencia de Fibonacci, como si se lo explicara a un niño pequeño', stream=True)

Cliente API con modelos multimodales

from AISuperServer import SuperServerClient
from pathlib import Path

dummy_api_key = 'dummy-apikey-OTXEYCZNS4NBR8YA9V0PBPV4VST2FBAE3PEZDKBDXKCQ88CSTIPI5NPOLN0ZN0CG'

client = SuperServerClient(api_key=dummy_api_key, multimodal=True)

image_path = Path("Logo.png").resolve()

image_path = str(image_path)

print(image_path)

query = client.Query('Oye describe la imagen y dime que hay de llamativo y de que producto puede ser la imagen', image_path=image_path, stream=True)

# Toma en cuenta que si tu servidor es levantado en un host y puerto diferente al '0.0.0.0:8080'
# Debes configuraro en el SuperServerClient algo asi: SuperServerClient(host='Tu host', port= 'Tu puerto')
# Y se ha configurado al api_key porque el servidor que levantamos para probar el cliente lo configuramos con api_key

Documentación 📚

Documentación Detallada

En la carpeta /tests encontrarás ejemplos completos y documentación detallada sobre:

  • 🔧 Configuración avanzada del servidor
  • 🔑 Implementación de autenticación con API keys
  • 🔄 Manejo de respuestas en streaming
  • 🖼️ Procesamiento de imágenes (modo multimodal)
  • 📝 Ejemplos prácticos de cada funcionalidad

Donaciones 💸

Si deseas apoyar este proyecto, puedes hacer una donación a través de PayPal:

Donate with PayPal

Tu donativo permite mantener y expandir nuestros proyectos de código abierto en beneficio de toda la comunidad.

Metadata

Release files for AISuperServer 0.1.99

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for AISuperServer 0.1.99
File Size Uploaded
aisuperserver-0.1.99.tar.gz 78.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for AISuperServer 0.1.99
File Interpreter ABI Platform
aisuperserver-0.1.99-py3-none-any.whl Python 3 none any Details

Total release size: 91.2 kB

Release files / aisuperserver-0.1.99.tar.gz

Download URL aisuperserver-0.1.99.tar.gz
Size 78.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c0edaab895c4a6cff68b02f32aeef1396fbd2a4c5e0f40defe245487023ce76f
BLAKE2b-256 checksum
How to use checksums
b6123adbe7a22bccc050342d367bdf07cea1e30a12a2736868d27516df397ba3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.13.2

Release files / aisuperserver-0.1.99-py3-none-any.whl

Download URL aisuperserver-0.1.99-py3-none-any.whl
Size 12.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
484bd799b0d17d4285cbc44c5c336a626bc8ec6d010a69d49f7ffe7ee36c84d3
BLAKE2b-256 checksum
How to use checksums
d6a126e6d8bc888592640f1aba52776232250b1ff004600f9936c52bc6b72310
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.13.2

Release history Release notifications | RSS feed

This release

0.1.99 This release

2 release files

0.1.98

2 release files

0.1.8

2 release files

0.1.5

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page