audityzer-demo / app_v2.py
AuditorSEC's picture
Create app_v2.py
61f1533 verified
Raw
History Blame Contribute Delete
2.41 kB
import gradio as gr
from huggingface_hub import InferenceClient
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
SCAN_TYPES = [
"Smart Contract Audit",
"Web Application Security",
"API Security",
"Cloud Infrastructure",
"IoT / OT Device",
"SAF-T UA Compliance Check",
]
def run_audit(target_description, scan_type, detail_level):
system_prompt = (
"You are an AI-powered security auditor for the Audityzer platform. "
"Perform a structured security audit and return: "
"1) Executive Summary, 2) Critical Findings (CVSS scored), "
"3) Medium Findings, 4) Recommendations, 5) Compliance Status (ISO 27001 / DSTU)."
)
verbosity = {1: "brief", 2: "standard", 3: "comprehensive"}[detail_level]
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": f"Scan Type: {scan_type}\nDetail Level: {verbosity}\nTarget: {target_description}"},
]
response = ""
for chunk in client.chat_completion(messages, max_tokens=768, stream=True):
token = chunk.choices[0].delta.content
if token:
response += token
return response
with gr.Blocks(title="Audityzer Demo", theme=gr.themes.Monochrome()) as demo:
gr.Markdown(
"""# 🔍 Audityzer — AI Security Audit Platform
**Automated vulnerability scanning & compliance auditing**
Part of AuditorSEC ecosystem | [auditorsec.com](https://auditorsec.com)
"""
)
with gr.Row():
with gr.Column(scale=1):
target = gr.Textbox(
label="Target / System Description",
placeholder="Describe the system, contract, or API endpoint to audit...",
lines=5
)
scan_type = gr.Dropdown(
choices=SCAN_TYPES,
label="Scan Type",
value="Smart Contract Audit"
)
detail = gr.Radio(
choices=[1, 2, 3],
label="Detail Level (1=Brief, 2=Standard, 3=Comprehensive)",
value=2
)
audit_btn = gr.Button("🚀 Run Audit", variant="primary")
with gr.Column(scale=2):
result = gr.Textbox(label="Audit Report", lines=20)
audit_btn.click(run_audit, inputs=[target, scan_type, detail], outputs=result)
if __name__ == "__main__":
demo.launch()