File size: 2,142 Bytes
0339b60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6146562
 
0339b60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 logging
import os

import gradio as gr

from ChatWorld import ChatWorld

logging.basicConfig(level=logging.INFO, filename="demo.log", filemode="w",
                    format="%(asctime)s - %(name)s - %(levelname)-9s - %(filename)-8s : %(lineno)s line - %(message)s",
                    datefmt="%Y-%m-%d %H:%M:%S")

chatWorld = ChatWorld()


def getContent(input_file):
    # ่ฏปๅ–ๆ–‡ไปถๅ†…ๅฎน
    with open(input_file.name, 'r', encoding='utf-8') as f:
        logging.info(f"read file {input_file.name}")
        input_text = f.read()
        logging.info(f"file content: {input_text}")

    # ไฟๅญ˜ๆ–‡ไปถๅ†…ๅฎน
    input_text_list = input_text.split("\n")
    chatWorld.initDB(input_text_list)
    role_name_set = set()

    # ่ฏปๅ–่ง’่‰ฒๅ
    for line in input_text_list:
        role_name_set.add(line.split(":")[0])

    role_name_list = [i for i in role_name_set if i != ""]
    logging.info(f"role_name_list: {role_name_list}")

    return gr.Radio(choices=role_name_list, interactive=True, value=role_name_list[0]), gr.Radio(choices=role_name_list, interactive=True, value=role_name_list[-1])


def submit_message(message, history, model_role_name, role_name, model_role_nickname, role_nickname):
    chatWorld.setRoleName(model_role_name, model_role_nickname)
    response = chatWorld.chat(message,
                              role_name, role_nickname, use_local_model=True)
    return response


with gr.Blocks() as demo:

    upload_c = gr.File(label="ไธŠไผ ๆ–‡ๆกฃๆ–‡ไปถ")

    with gr.Row():
        model_role_name = gr.Radio([], label="ๆจกๅž‹่ง’่‰ฒๅ")
        model_role_nickname = gr.Textbox(label="ๆจกๅž‹่ง’่‰ฒๆ˜ต็งฐ")

    with gr.Row():
        role_name = gr.Radio([], label="่ง’่‰ฒๅ")
        role_nickname = gr.Textbox(label="่ง’่‰ฒๆ˜ต็งฐ")

    upload_c.upload(fn=getContent, inputs=upload_c,
                    outputs=[model_role_name, role_name])

    chatBox = gr.ChatInterface(
        submit_message, chatbot=gr.Chatbot(height=400, render=False), additional_inputs=[model_role_name, role_name, model_role_nickname, role_nickname])


demo.launch(share=True, debug=True, server_name="0.0.0.0")