SuperLilLM / app.py
StarpowerTechnology's picture
Upload 19 files
3781007 verified
Raw
History Blame Contribute Delete
1.59 kB
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()