b_demo_hf / app.py
stevez's picture
Update app.py
97eaafd
raw
history blame
2.6 kB
import requests
import json
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',
]
game_list = [
'angry birds',
'snake',
]
functionality_list = [
"AI",
"functionality",
"json dedup",
"json",
]
# redirect all traffic to the proxy sever
space = 'stevez-proxy'
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__'
url = f'https://{space}.hf.space'
if redirect is not None:
url = f'https://{redirect}.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:]:
t = datetime.now()
t = t.astimezone(ZoneInfo('Asia/Shanghai'))
t = t.replace(microsecond=0)
print(f"{t} [{game:<12}] [{user_name[:12]:<12}] {nlp_command}")
client = Client(
url,
hf_token=token,
verbose=False,
)
res = client.predict(
user_name, service, game, functionality, nlp_command,
api_name='/predict',
)
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()