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()