File size: 5,048 Bytes
79ecf54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0234ead
 
b692bce
0234ead
 
 
 
 
 
 
79ecf54
 
 
b692bce
8ced746
79ecf54
 
 
 
b692bce
8ced746
79ecf54
 
a41ffcc
 
b692bce
8ced746
a41ffcc
 
79ecf54
 
b692bce
8970855
79ecf54
ec02902
8970855
 
 
 
79ecf54
 
 
8ced746
79ecf54
8970855
 
8ced746
8970855
 
8ced746
8970855
79ecf54
 
 
43a01f6
 
 
 
a41ffcc
0234ead
43a01f6
8970855
79ecf54
0234ead
43a01f6
 
0234ead
8970855
79ecf54
 
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import gradio as gr
import mdtex2html
import os
import json
import requests

def postprocess(self, y):
    if y is None:
        return []
    for i, (message, response) in enumerate(y):
        y[i] = (
            None if message is None else mdtex2html.convert((message)),
            None if response is None else mdtex2html.convert(response),
        )
    return y


gr.Chatbot.postprocess = postprocess


def parse_text(text):
    """copy from https://github.com/GaiZhenbiao/ChuanhuChatGPT/"""
    lines = text.split("\n")
    lines = [line for line in lines if line != ""]
    count = 0
    for i, line in enumerate(lines):
        if "```" in line:
            count += 1
            items = line.split('`')
            if count % 2 == 1:
                lines[i] = f'<pre><code class="language-{items[-1]}">'
            else:
                lines[i] = f'<br></code></pre>'
        else:
            if i > 0:
                if count % 2 == 1:
                    line = line.replace("`", "\`")
                    line = line.replace("<", "&lt;")
                    line = line.replace(">", "&gt;")
                    line = line.replace(" ", "&nbsp;")
                    line = line.replace("*", "&ast;")
                    line = line.replace("_", "&lowbar;")
                    line = line.replace("-", "&#45;")
                    line = line.replace(".", "&#46;")
                    line = line.replace("!", "&#33;")
                    line = line.replace("(", "&#40;")
                    line = line.replace(")", "&#41;")
                    line = line.replace("$", "&#36;")
                lines[i] = "<br>"+line
    text = "".join(lines)
    return text


def SubmitKey(chatbot, key):
    data = {'AgentStart': True, 'key': key}
    response=requests.request('POST', os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
    msg = str(response.content, encoding="utf-8")
    if not response.status_code == 200:
        chatbot = [(None, parse_text(msg))]
        return chatbot, gr.update(value=msg), gr.update(value=msg)
    response = json.loads(msg)
    chatbot = response['chatbot']
    return chatbot, gr.update(value=response['story']), gr.update(value=response['answer'])

def CheckTrue(chatbot, key):
    data = {'AgentCheck': True, 'key': key}
    response=requests.request('POST', os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
    chatbot.append((parse_text("是。"), parse_text(str(response.content, encoding="utf-8"))))
    return chatbot

def CheckFalse(chatbot, key):
    data = {'AgentCheck': False, 'key': key}
    response=requests.request('POST', os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
    chatbot.append((parse_text("否。"), parse_text(str(response.content, encoding="utf-8"))))
    return chatbot

def CheckIrrelevant(chatbot, key):
    data = {'AgentCheck': 'Irrelevant', 'key': key}
    response=requests.request('POST', os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
    chatbot.append((parse_text("无关。"), parse_text(str(response.content, encoding="utf-8"))))
    return chatbot

def CheckTerm(chatbot, key):
    data = {'AgentFinish': True, 'key': key}
    response=requests.request('POST', os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
    msg = str(response.content, encoding="utf-8")
    if not response.status_code == 200:
        chatbot = [(None, parse_text(msg))]
        return chatbot, gr.update(value=msg), gr.update(value=msg)
    response = json.loads(msg)
    chatbot = [(None, parse_text(response['response']))]
    return chatbot, gr.update(value=response['story']), gr.update(value=response['answer'])

with gr.Blocks() as demo:
    gr.HTML("""<h1 align="center">Generative Agents测试平台</h1>""")
    user_key = gr.Textbox(label='密钥', placeholder="Input your key, press enter to apply", lines=1, max_lines=1).style(
        container=False)
    with gr.Row():
        with gr.Column(scale=1):
            story = gr.Textbox(label='汤面', lines=3, max_lines=3).style(
                container=False)
        with gr.Column(scale=1):
            answer = gr.Textbox(label='汤底', lines=3, max_lines=3).style(
                container=False)
    chatbot = gr.Chatbot([])

    with gr.Row():
        with gr.Column(scale=1):
            trueBtn = gr.Button('是')
        with gr.Column(scale=1):
            falseBtn = gr.Button('否')
        with gr.Column(scale=1):
            irreBtn = gr.Button('无关')
        with gr.Column(scale=1):
            termBtn = gr.Button('达到终止条件')
        
    user_key.submit(SubmitKey, [chatbot, user_key], [chatbot, story, answer])
    trueBtn.click(CheckTrue, [chatbot, user_key], [chatbot])
    falseBtn.click(CheckFalse, [chatbot, user_key], [chatbot])
    irreBtn.click(CheckIrrelevant, [chatbot, user_key], [chatbot])
    termBtn.click(CheckTerm, [chatbot, user_key], [chatbot, story, answer])
    
demo.queue().launch()