Spaces:
Sleeping
Sleeping
Nguyen Tran Thong
"Fix login bug" -m "Co-authored-by: thongnguyen07102004@gmail.com"
ad1b6c0
unverified
| import gradio as gr | |
| from app.gen_ai import generate_response | |
| from app.mlops_logger import log_prompt | |
| from app.safety_check import check_nsfw_image, check_violence_image, is_prompt_safe, check_url | |
| # === Kiểm duyệt Prompt === | |
| def handle_prompt(prompt): | |
| safe, info = is_prompt_safe(prompt) | |
| if not safe: | |
| log_prompt(prompt, info, False, "") | |
| return f" Prompt không an toàn! Phát hiện: {', '.join(info)}", "" | |
| response = generate_response(prompt) | |
| log_prompt(prompt, "OK", True, response) | |
| return "✅ Prompt an toàn", response | |
| # === Giao diện === | |
| with gr.Blocks(title="SAIFGuard - HỆ THỐNG KIỂM DUYỆT THÔNG MINH", css=""" | |
| .yellow-btn { | |
| background-color: #FFD700 !important; | |
| color: black !important; | |
| } | |
| """) as demo: | |
| gr.Markdown("## 🛡️ SAIFGuard: HỆ THỐNG KIỂM DUYỆT THÔNG MINH") | |
| with gr.Tab("📝 Kiểm duyệt Prompt"): | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| prompt_input = gr.Textbox(label="Nhập Prompt", lines=2) | |
| with gr.Column(scale=1): | |
| prompt_status = gr.Textbox(label="Trạng thái kiểm duyệt") | |
| prompt_output = gr.Textbox(label="Kết quả GenAI") | |
| prompt_button = gr.Button("Kiểm tra Prompt", elem_classes="yellow-btn") | |
| prompt_button.click(handle_prompt, inputs=prompt_input, outputs=[prompt_status, prompt_output]) | |
| with gr.Tab("🖼️ Kiểm duyệt Hình ảnh"): | |
| gr.Markdown("### 📷 Tải ảnh và kiểm tra từng tiêu chí") | |
| with gr.Row(): | |
| image_input = gr.Image(type="pil", label="Tải ảnh lên") | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| nsfw_output = gr.Textbox(label="🔞 Kết quả kiểm duyệt ảnh nhạy cảm") | |
| nsfw_button = gr.Button("Kiểm tra Ảnh Nhạy Cảm", elem_classes="yellow-btn") | |
| with gr.Column(scale=1): | |
| violence_output = gr.Textbox(label="🧨 Kết quả kiểm duyệt ảnh bạo lực") | |
| violence_button = gr.Button("Kiểm tra Ảnh Bạo Lực", elem_classes="yellow-btn") | |
| nsfw_button.click(fn=check_nsfw_image, inputs=image_input, outputs=nsfw_output) | |
| violence_button.click(fn=check_violence_image, inputs=image_input, outputs=violence_output) | |
| with gr.Tab("🌐 Kiểm duyệt URL"): | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| url_input = gr.Textbox(label="Nhập đường dẫn URL cần kiểm tra") | |
| with gr.Column(scale=1): | |
| url_output = gr.Textbox(label="Kết quả kiểm duyệt URL") | |
| url_button = gr.Button("Kiểm tra URL", elem_classes="yellow-btn") | |
| url_button.click(fn=check_url, inputs=url_input, outputs=url_output) | |