import uvicorn from fastapi import FastAPI, Request from pydantic import BaseModel from utils.logger import get_logger logger = get_logger("sail.api") class ChatRequest(BaseModel): message: str class APIServer: def __init__(self, engine, port=8080): self.engine = engine self.port = port self.app = FastAPI(title="SAIL v2 API") self.app.post("/chat")(self.chat) self.app.get("/status")(self.status) async def chat(self, request: ChatRequest): logger.info(f"API request: {request.message}") result = self.engine.generate(request.message) return result async def status(self): return { "status": "online", "model": self.engine.settings.model_id, "vram": self.engine.vram_usage() } def start(self): logger.info(f"Starting API server on port {self.port}") uvicorn.run(self.app, host="0.0.0.0", port=self.port)