| import json |
| import os |
| from datetime import datetime |
| from zoneinfo import ZoneInfo |
|
|
| import gradio as gr |
| from extract import extract |
| import call_logger |
| from pgsoft.pgdate.date_utils import beijing |
| import call_pgai |
| from utils import normalize_text |
|
|
| |
| |
| |
| proxy_version = "1.0.0-2025-05-26-a" |
|
|
| t = datetime.now() |
| t = t.astimezone(ZoneInfo("Asia/Shanghai")) |
| print(f"[Beijing]: {t.replace(microsecond=0)}") |
| t = t.astimezone(ZoneInfo("America/Los_Angeles")) |
| print(f"[Seattle]: {t.replace(microsecond=0)}") |
|
|
|
|
| identity = os.environ.get("identity", "local") |
| print(f"identity: {identity}") |
| db_token = os.environ.get("db_token") |
| if db_token: |
| print(db_token[:5]) |
|
|
| game_list = [ |
| "matchn", |
| "house", |
| "watermelon", |
| "snake", |
| ] |
|
|
|
|
| def run(info, game, nlp_command): |
| """event handler""" |
| |
| user, source, username, _ = extract(info) |
| if nlp_command is None: |
| return "command is required" |
| nlp_command = normalize_text(nlp_command) |
| if nlp_command == "": |
| return "invalid command" |
|
|
| service_start = beijing() |
| print(f"[{service_start}] service starts >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") |
| print(f"[{user}] [{game}] [{nlp_command}]") |
|
|
| call_pgai.from_cache = True |
| outp = call_pgai.call_pgai(nlp_command, game) |
| if outp is None: |
| return "no output" |
| if isinstance(outp, str): |
| return outp |
| |
| outp["timestamp"] = beijing().__str__() |
| outp["proxy-version"] = proxy_version |
| outp["user"] = user |
| outp["username"] = username |
| outp["game"] = game |
| outp["source"] = source |
| outp["cache"] = call_pgai.from_cache |
| call_logger.call_logger(outp, identity, db_token) |
| service_end = beijing() |
| timecost = service_end.timestamp() - service_start.timestamp() |
| print( |
| f"[{service_end}] service ends, costs {timecost:.2f}s " |
| + "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n" |
| ) |
| return json.dumps(outp, indent=4) |
|
|
|
|
| demo = gr.Interface( |
| fn=run, |
| inputs=[ |
| "text", |
| gr.Radio( |
| game_list, |
| value=game_list[0], |
| info="Which game you want the AI to support?", |
| ), |
| "text", |
| ], |
| outputs="text", |
| title="Pgai", |
| allow_flagging="never", |
| ) |
|
|
| demo.launch() |
|
|