import requests import json import os from datetime import datetime from zoneinfo import ZoneInfo import gradio as gr from gradio_client import Client from extract import extract functionality_shared = [ "games", "greet", "tokenization", "upload game", "download game", ] game_list = [ "angry birds", "snake", ] functionality_list = [ "AI", "functionality", "json dedup", "json", ] 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)}") # assert False spaces = { "b_demo_hf": "stevez-proxy", "pgdemo2": "stevez-proxy2", "pgdemo3": "stevez-proxy3", } identity = os.environ.get("identity") if not identity: identity = "b_demo_hf" space = "stevez-proxy" if identity in spaces: space = spaces[identity] def run(hf_token, service, game, functionality, nlp_command): """ event handler """ # reuse hf_token field as json string token, user_name, redirect, _ = extract(hf_token) if user_name is None: user_name = "__fake__" # redirect all traffic to the proxy sever global space if redirect is not None: space = redirect url = f"https://{space}.hf.space" if token is None or token == "": return "please specify hf token" if service not in functionality_shared[1:]: if game is None: return "please specify which game" if functionality is None: return "please choose the AI functionality" if functionality == "AI": if nlp_command in ["", None]: return "please make sure the command is not empty" try: if service not in functionality_shared[1:]: pass client = Client( url, hf_token=token, verbose=False, ) res = client.predict( user_name, service, game, functionality, nlp_command, nlp_command, api_name="/predict", ) # if service in [ # "upload game", # "download game", # ]: # res2 = json.loads(res[0]) # return json.dumps(res2,indent=4) # else: # res2 = json.loads(res[0]) # return json.dumps(res2[0], indent=4) res2 = json.loads(res[0]) return json.dumps(res2, indent=4) except Exception as e: return ( f"{type(e)}, {str(e)}. \nyou may want to make sure your hf_token is correct" ) demo = gr.Interface( fn=run, inputs=[ "text", gr.Radio( functionality_shared, value=functionality_shared[0], info="Shared services", ), gr.Radio( game_list, value=game_list[1], info="Which game you want the AI to support?", ), gr.Radio( functionality_list, value=functionality_list[0], # label = "What do you want to do?", info="What functionality?", ), "text", ], outputs="text", title="Demo", ) demo.launch()