SAIF / app /app_ui.py
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)