agent-shield / app.py
Sandeep120205's picture
fix: replace full backend with Gradio UI only
d5bdeea
import gradio as gr
import requests
import datetime
API_URL = "https://agent-shield-chbxh2hkhxgucgax.eastasia-01.azurewebsites.net/v1/check"
css = """
body { background-color: #000000 !important; }
.gradio-container {
background-color: #000000 !important;
font-family: 'Courier New', monospace !important;
color: #ffffff !important;
}
.gr-box, .gr-panel {
background-color: #000000 !important;
border: 1px solid #333333 !important;
}
textarea, input {
background-color: #0a0a0a !important;
color: #00ff00 !important;
font-family: 'Courier New', monospace !important;
border: 1px solid #333333 !important;
}
button {
background-color: #111111 !important;
color: #ffffff !important;
border: 1px solid #444444 !important;
font-family: 'Courier New', monospace !important;
}
button:hover {
background-color: #222222 !important;
border-color: #00ff00 !important;
}
label, p, span {
color: #ffffff !important;
font-family: 'Courier New', monospace !important;
}
.gr-button-primary {
background-color: #111111 !important;
border: 1px solid #00ff00 !important;
color: #00ff00 !important;
}
footer { display: none !important; }
.examples { display: none !important; }
"""
def check_prompt(prompt):
try:
response = requests.post(API_URL, json={"prompt": prompt})
result = response.json()
# Format the output for the UI
verdict = result.get("verdict", "UNKNOWN")
layer = result.get("layer_hit", "N/A")
conf = result.get("confidence", 0)
lat = result.get("latency_ms", 0)
display = (f"VERDICT: {verdict}\n"
f"LAYER : {layer}\n"
f"CONF : {conf:.2f}\n"
f"LATENCY: {lat:.1f}ms\n\n"
f"--- RAW METADATA ---\n"
f"{result.get('details', 'No details available')}")
# LOGGING: Append every test to a local file for your portfolio
with open("security_audit.log", "a") as f:
f.write(f"[{datetime.datetime.now()}] Input: {prompt} | Verdict: {verdict} | Layer: {layer}\n")
return display
except Exception as e:
return f"[SYSTEM ERROR]\n{str(e)}"
demo = gr.Interface(
fn=check_prompt,
inputs=gr.Textbox(
lines=4,
placeholder="$ enter prompt...",
label="INPUT"
),
outputs=gr.Textbox(
label="OUTPUT",
lines=5
),
title="Agent-Shield",
description="[ L0:unicode ] [ L1:regex ] [ L2:bert ] [ L3:guardrails ]",
css=css
)
demo.launch(share=True)