import json from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from pathlib import Path from chat import ChatEngine ROOT = Path(__file__).parent engine = ChatEngine() class Handler(BaseHTTPRequestHandler): def do_GET(self): if self.path in {"/", "/index.html"}: html = (ROOT / "ui" / "index.html").read_bytes() self.send_response(200) self.send_header("Content-Type", "text/html; charset=utf-8") self.send_header("Content-Length", str(len(html))) self.end_headers() self.wfile.write(html) return self.send_error(404) def do_POST(self): if self.path != "/api/chat": self.send_error(404) return length = int(self.headers.get("Content-Length", "0")) payload = json.loads(self.rfile.read(length) or b"{}") message = str(payload.get("message", "")).strip() result = engine.generate(message) if message else {"reply": "Say something and I will reply.", "tokens": []} data = json.dumps(result).encode("utf-8") self.send_response(200) self.send_header("Content-Type", "application/json") self.send_header("Content-Length", str(len(data))) self.end_headers() self.wfile.write(data) def log_message(self, fmt, *args): print(fmt % args) def main(): server = ThreadingHTTPServer(("127.0.0.1", 7860), Handler) print("SuperLilLM UI running at http://127.0.0.1:7860") server.serve_forever() if __name__ == "__main__": main()