|
|
"""
|
|
|
LISA Model Deployment Script
|
|
|
Developed in Kenya, Africa by the LISA Team
|
|
|
"""
|
|
|
|
|
|
from fastapi import FastAPI, File, UploadFile, HTTPException
|
|
|
from fastapi.responses import JSONResponse
|
|
|
import torch
|
|
|
import uvicorn
|
|
|
import argparse
|
|
|
from pathlib import Path
|
|
|
import logging
|
|
|
|
|
|
app = FastAPI(
|
|
|
title="LISA AI API",
|
|
|
description="Learning Intelligence with Sensory Awareness - Developed in Kenya, Africa",
|
|
|
version="3.5"
|
|
|
)
|
|
|
|
|
|
|
|
|
lisa_model = None
|
|
|
|
|
|
@app.on_startup
|
|
|
async def startup_event():
|
|
|
"""Load LISA model on startup"""
|
|
|
global lisa_model
|
|
|
try:
|
|
|
from lisa import LISAModel
|
|
|
lisa_model = LISAModel.from_pretrained("./")
|
|
|
print("[SUCESS] LISA model loaded successfully")
|
|
|
print(" Proudly developed in Kenya, Africa by the LISA Team")
|
|
|
except Exception as e:
|
|
|
print(f" Failed to load LISA model: {e}")
|
|
|
|
|
|
@app.get("/")
|
|
|
async def root():
|
|
|
"""API health check"""
|
|
|
return {
|
|
|
"message": "LISA AI API is running",
|
|
|
"version": "3.5",
|
|
|
"developed_in": "Kenya, Africa",
|
|
|
"team": "LISA Team",
|
|
|
"status": "operational"
|
|
|
}
|
|
|
|
|
|
@app.get("/info")
|
|
|
async def model_info():
|
|
|
"""Get model information"""
|
|
|
return {
|
|
|
"model_name": "LISA v3.5",
|
|
|
"description": "Learning Intelligence with Sensory Awareness",
|
|
|
"developed_by": "LISA Team",
|
|
|
"development_location": "Kenya, East Africa",
|
|
|
"architecture": "Lisa Multimodal Transformer",
|
|
|
"capabilities": [
|
|
|
"Computer Vision",
|
|
|
"Audio Processing",
|
|
|
"Speech Recognition",
|
|
|
"Object Detection",
|
|
|
"Emotion Detection",
|
|
|
"Real-time Processing"
|
|
|
],
|
|
|
"cultural_context": "African AI Innovation"
|
|
|
}
|
|
|
|
|
|
@app.post("/process/text")
|
|
|
async def process_text(data: dict):
|
|
|
"""Process text input"""
|
|
|
try:
|
|
|
if not lisa_model:
|
|
|
raise HTTPException(status_code=503, detail="Model not loaded")
|
|
|
|
|
|
text = data.get("text", "")
|
|
|
result = lisa_model.process_text(text)
|
|
|
|
|
|
return {
|
|
|
"input": text,
|
|
|
"response": result.response,
|
|
|
"processed_by": "LISA v3.5 (Kenya, Africa)"
|
|
|
}
|
|
|
except Exception as e:
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
@app.post("/process/image")
|
|
|
async def process_image(file: UploadFile = File(...)):
|
|
|
"""Process image input"""
|
|
|
try:
|
|
|
if not lisa_model:
|
|
|
raise HTTPException(status_code=503, detail="Model not loaded")
|
|
|
|
|
|
|
|
|
image_bytes = await file.read()
|
|
|
result = lisa_model.process_image(image_bytes)
|
|
|
|
|
|
return {
|
|
|
"filename": file.filename,
|
|
|
"detections": result.detections,
|
|
|
"description": result.description,
|
|
|
"processed_by": "LISA v3.5 (Kenya, Africa)"
|
|
|
}
|
|
|
except Exception as e:
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
@app.post("/process/audio")
|
|
|
async def process_audio(file: UploadFile = File(...)):
|
|
|
"""Process audio input"""
|
|
|
try:
|
|
|
if not lisa_model:
|
|
|
raise HTTPException(status_code=503, detail="Model not loaded")
|
|
|
|
|
|
|
|
|
audio_bytes = await file.read()
|
|
|
result = lisa_model.process_audio(audio_bytes)
|
|
|
|
|
|
return {
|
|
|
"filename": file.filename,
|
|
|
"transcript": result.transcript,
|
|
|
"emotion": result.predicted_emotion,
|
|
|
"sounds": result.sound_classes,
|
|
|
"processed_by": "LISA v3.5 (Kenya, Africa)"
|
|
|
}
|
|
|
except Exception as e:
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
parser = argparse.ArgumentParser(description="LISA API Server")
|
|
|
parser.add_argument("--host", default="0.0.0.0", help="Host address")
|
|
|
parser.add_argument("--port", type=int, default=8000, help="Port number")
|
|
|
parser.add_argument("--workers", type=int, default=1, help="Number of workers")
|
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
print(" Starting LISA API Server...")
|
|
|
print(f" Proudly developed in Kenya, Africa")
|
|
|
print(f" Created by the LISA Team")
|
|
|
|
|
|
uvicorn.run(
|
|
|
"deploy:app",
|
|
|
host=args.host,
|
|
|
port=args.port,
|
|
|
workers=args.workers,
|
|
|
reload=False
|
|
|
)
|
|
|
|