hackathon_test / app.py
Elfe's picture
Update app.py
c412eb0
import random
import json
import gradio as gr
import requests
def getResponse(api, p, qid, uid):
if api.strip().endswith(".hf.space/run/predict"):
return getResponseFromHF(api, p, qid, uid)
else:
return getResponseFromDefault(api, p, qid, uid)
return reply
def getResponseFromHF(api, p, qid, uid):
response = requests.post(api, json={
"data": [
p,
qid,
uid,
]
})
print(response)
print(response.json())
data = response.json()["data"]
if (len(data) == 2):
return data[1]
def getResponseFromDefault(api, p, qid, uid):
response = requests.post(api, json={
"p":p,
"qid":qid,
"uid":uid
})
print(response)
print(response.json())
return response.json()["data"]["content"]
def chat(api, p, qid, uid, history):
history = history or []
reply = getResponse(api, p, qid, uid)
history.append((p, reply))
return history, history
gr.Interface(fn=chat,
theme="default",
css=".footer {display:none !important}",
inputs=["text", "text", "text", "text", "state"],
outputs=["chatbot", "state"],
title="ChatAPI Test",
description="""你可以通过本应用来模拟接入瀛海威广场后的效果。
#### 左侧:模拟来自瀛海威广场的调用
* api: 请填写你的机器人的 api 地址
当用户在广场找到你的机器人,和它说话,你的 api 将会收到如下参数的调用:
* p: 人们在广场里对你的机器人说话的内容
* qid: 当前消息的唯一标识。例如 `'bxqid-cManAtRMszw...'`。由平台生成并传递给机器人,以便机器人区分单个问题(写日志、追踪调试、异步回调等)。同步调用可忽略。
* uid: 用户的唯一标识。例如`'bxuid-Aj8Spso8Xsp...'`。由平台生成并传递给机器人,以便机器人区分用户。可被用于实现多轮对话的功能。
#### 右侧:对话界面
当你的机器人 api 返回给瀛海威广场后,瀛海威广场上的机器人和用户的对话,将会呈现如右侧的效果。
(瀛海威广场上的对话窗口将有 markdown 格式呈现的功能)
[参考文档](https://huggingface.co/spaces/baixing/hackathon_test/blob/main/bot-api.md) [极简 bot 示例](https://huggingface.co/spaces/baixing/hackathon_chatbot_simple) [Q & A](https://huggingface.co/spaces/baixing/hackathon_test/blob/main/qna.md)
"""
).launch()