wpl-discovery / server.py
GameTheory's picture
Sync from GitHub
24c5932 verified
Raw
History Blame Contribute Delete
1.49 kB
"""
server.py - a fully custom frontend via `gradio.Server` (Off-Brand badge).
Reuses the SAME backend as app.py (one source of truth: app.respond), but serves
a hand-built HTML/CSS/JS chat UI instead of the default Gradio look. The frontend
talks to this server with the Gradio JS client and streams the answer.
NOTE: app.py (Gradio Blocks) remains the tested, go-live default. This is the
custom-UI variant - **smoke-test it on the Space first** (we couldn't boot Gradio
locally on Python 3.9). To use it on a Space, set `app_file: server.py` in README.
Run: python server.py → http://localhost:7860
"""
from __future__ import annotations
import os
from fastapi.responses import HTMLResponse
from gradio import Server
import app as backend # reuse respond(), tools, model wrapper, traces
HERE = os.path.dirname(os.path.abspath(__file__))
server = Server()
@server.api(name="ask")
def ask(message: str):
"""Stream the assistant's growing markdown answer to the custom frontend."""
last = ""
for text, _chips in backend.respond(message, []):
last = text
yield text
if not last:
yield "Sorry - I didn't catch that. Try asking about a book, a branch, " \
"events, or printing."
@server.get("/", response_class=HTMLResponse)
def home():
with open(os.path.join(HERE, "index.html"), encoding="utf-8") as f:
return f.read()
if __name__ == "__main__":
server.launch(server_name="0.0.0.0", server_port=7860)