vsa-gpt / frontend.py
TDN-M's picture
Create frontend.py
4c2aac5 verified
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()