File size: 2,537 Bytes
b8345f6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78c0efe
b8345f6
c412eb0
78c0efe
b8345f6
 
 
 
 
 
 
 
78c0efe
b8345f6
c412eb0
78c0efe
b8345f6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d0a3516
a0c7db2
b8345f6
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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()