"""决策台 Web UI(零依赖,stdlib http.server):粘贴任意文本,自定义问题,实时看概率条。 用法: python apps/web_console.py [port=7860] 然后打开 http://127.0.0.1:7860 """ import sys, json, time from http.server import ThreadingHTTPServer, BaseHTTPRequestHandler from common import get_agent HTML = r"""Laya 决策台

Laya 决策台 单次前向传播 · 不生成文本 · 校准概率

状态 (JSON 或纯文本)

问题 (JSON)

""" class H(BaseHTTPRequestHandler): def log_message(self, *a): pass def do_GET(self): self.send_response(200); self.send_header("Content-Type", "text/html; charset=utf-8"); self.end_headers() self.wfile.write(HTML.encode()) def do_POST(self): n = int(self.headers.get("Content-Length", 0)); req = json.loads(self.rfile.read(n)) try: st = req["state"].strip() try: st = json.loads(st) except Exception: st = {"text": st} qs = json.loads(req["questions"]) agent = get_agent(req.get("model", "multilingual")) t = time.time(); r = agent.predict(st, qs); ms = (time.time() - t) * 1000 body = {"answers": r["answers"], "raw": r, "ms": ms} except Exception as e: body = {"error": f"{type(e).__name__}: {e}"} data = json.dumps(body, ensure_ascii=False, default=str).encode() self.send_response(200); self.send_header("Content-Type", "application/json"); self.end_headers(); self.wfile.write(data) if __name__ == "__main__": port = int(sys.argv[1]) if len(sys.argv) > 1 else 7860 get_agent("multilingual") print(f"open http://127.0.0.1:{port}") ThreadingHTTPServer(("127.0.0.1", port), H).serve_forever()