{% extends "base.html" %} {% block title %}Prompt Analytics - AISBF Dashboard{% endblock %} {% macro format_tokens(value) %} {% if value is none or value == 0 %}0{% else %} {% set val = value | float %} {% if val >= 1000000000 %} {{ "%.2f"|format(val / 1000000000) }}B {% elif val >= 1000000 %} {{ "%.2f"|format(val / 1000000) }}M {% elif val >= 1000 %} {{ "%.2f"|format(val / 1000) }}K {% else %} {{ "%.0f"|format(val) }} {% endif %} {% endif %} {% endmacro %} {% macro pct(part, total) %} {% if total and total > 0 %} {{ "%.0f"|format((part / total) * 100) }}% {% else %} 0% {% endif %} {% endmacro %} {% block content %}
Native AISBF prompt analysis for prompt-security findings, request composition, blocking posture, and model/provider exposure. {% if is_config_admin %} This view can compare global traffic with user-scoped runs when filters are applied. {% else %} This view is limited to your own requests and does not expose global visitor activity. {% endif %}
Run volume, high-risk detections, and blocking decisions over time.
| Category | Severity | Count |
|---|---|---|
| {{ finding.category }} | {{ finding.severity }} | {{ finding.count }} |
No findings were recorded in this range.
{% endif %}| Risk | Runs | Share |
|---|---|---|
| {{ row.risk_level }} | {{ row.count }} | {{ pct(row.count, total_runs) }} |
No risk distribution available.
{% endif %}| Provider | Runs | Blocked | High Risk |
|---|---|---|---|
| {{ provider.provider_id }} | {{ provider.runs }} | {{ provider.blocked }} | {{ provider.high_risk }} |
No provider breakdown available.
{% endif %}| Model | Runs | Blocked | High Risk |
|---|---|---|---|
| {{ model.model_name }} | {{ model.runs }} | {{ model.blocked }} | {{ model.high_risk }} |
No model breakdown available.
{% endif %}| Segment | Runs | Share |
|---|---|---|
| {{ row.role }} | {{ row.count }} | {{ pct(row.count, total_runs) }} |
No segment mix available.
{% endif %}| Shape | Runs | Share |
|---|---|---|
| {{ row.prompt_shape }} | {{ row.count }} | {{ pct(row.count, total_runs) }} |
No prompt-shape data available.
{% endif %}| When | Provider | Model | Risk | Blocked | Prompt / Context | Shape | Signals | Findings |
|---|---|---|---|---|---|---|---|---|
| {{ run.created_at }} | {{ run.provider_id }} |
{{ run.model_name }}
{% if run.rotation_id or run.autoselect_id %}
{% if run.rotation_id %}Rotation: {{ run.rotation_id }}{% endif %}
{% if run.rotation_id and run.autoselect_id %} | {% endif %}
{% if run.autoselect_id %}Autoselect: {{ run.autoselect_id }}{% endif %}
{% endif %}
|
{{ run.risk_level }}
score {{ run.risk_score }}
|
{% if run.blocked %}Yes{% else %}No{% endif %} | {{ format_tokens(run.prompt_tokens) }} / {{ format_tokens(run.effective_context) }} |
{{ run.prompt_shape }}
largest: {{ run.largest_segment_role }}
|
{% if run.has_system_prompt %}system{% endif %} {% if run.has_tools %}tools{% endif %} {% if not run.has_system_prompt and not run.has_tools %}base{% endif %} |
{{ run.findings_count }} total
H {{ run.high_count }} / M {{ run.medium_count }} / I {{ run.info_count }}
{% if run.findings %}
{% for finding in run.findings %}
{% endif %}
{{ finding.category }} ({{ finding.severity }}) x{{ finding.count }}
{% endfor %}
|
No recent prompt-analysis runs matched the current filters.
{% endif %}No prompt analysis data available yet.
{% endif %} {% endblock %}