File size: 3,720 Bytes
4c2aac5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import requests

API_URL = "http://localhost:5000"  # URL của Flask backend

def get_text_response(user_message, chat_history):
    response = requests.post(f"{API_URL}/translate", json={"text": user_message})
    translation = response.json()["translation"]
    chat_history.append(("Người dùng", user_message))
    chat_history.append(("Chatbot", translation))
    return chat_history, chat_history

def translate_text(text):
    response = requests.post(f"{API_URL}/translate", json={"text": text})
    if response.status_code == 200:
        return response.json()["translation"]
    else:
        return "Lỗi khi dịch văn bản"

def create_text_file(text, name, format):
    response = requests.post(f"{API_URL}/create_file", json={"text": text, "filename": name, "file_format": format})
    if response.status_code == 200:
        with open(f"{name}.{format}", "wb") as f:
            f.write(response.content)
        return f"{name}.{format}"
    else:
        return "Lỗi khi tạo file"

def send_email(subject, body, to_email):
    response = requests.post(f"{API_URL}/send_email", json={"subject": subject, "body": body, "to_email": to_email})
    if response.status_code == 200:
        return "Email đã được gửi thành công"
    else:
        return f"Lỗi khi gửi email: {response.json().get('message')}"

def chatbot_interface():
    with gr.Blocks() as demo:
        chatbot = gr.Chatbot()
        msg = gr.Textbox(placeholder="Nhập tin nhắn...")
        clear = gr.Button("Xóa hội thoại")
        translate_input = gr.Textbox(placeholder="Nhập văn bản để dịch...")
        translate_button = gr.Button("Dịch sang tiếng Việt")
        translate_output = gr.Textbox(label="Bản dịch")
        file_text = gr.Textbox(placeholder="Nhập văn bản để tạo file...")
        file_name = gr.Textbox(placeholder="Nhập tên file (không bao gồm đuôi)...")
        file_format = gr.Dropdown(choices=["docx", "pdf"], label="Chọn định dạng file")
        create_file_button = gr.Button("Tạo File")
        download = gr.File(label="Tải về file", interactive=False)
        email_subject = gr.Textbox(placeholder="Nhập tiêu đề email...")
        email_body = gr.Textbox(placeholder="Nhập nội dung email...", lines=5)
        email_to = gr.Textbox(placeholder="Nhập địa chỉ email người nhận...")
        send_email_button = gr.Button("Gửi Email")

        def respond(message, chat_history):
            response = get_text_response(message, chat_history)
            chat_history.append(("Người dùng", message))
            chat_history.append(("Chatbot", response))
            return chat_history, chat_history

        def clear_chat():
            return [], []

        def translate_and_display(text):
            translation = translate_text(text)
            return translation

        def create_and_return_file(text, name, format):
            file_path = create_text_file(text, name, format)
            return file_path

        def handle_send_email(subject, body, to_email):
            email_response = send_email(subject, body, to_email)
            return email_response

        msg.submit(respond, [msg, chatbot], [chatbot, chatbot])
        clear.click(clear_chat, [], [chatbot])
        translate_button.click(translate_and_display, [translate_input], [translate_output])
        create_file_button.click(create_and_return_file, [file_text, file_name, file_format], [download])
        send_email_button.click(handle_send_email, [email_subject, email_body, email_to], [])

    return demo

if __name__ == "__main__":
    demo = chatbot_interface()
    demo.launch()