Prophaze

LLM Test Bench

Mock LLM chatbot for testing Prophaze request and response rules. Put Prophaze in front of it and capture traffic in Burp.

Sending to

Chat

No saved response. Each request uses the settings below.
Pick the settings below, then click Save. They are stored on the server. Every request then gets this response, from the browser, Burp Repeater or curl, even if it still carries old X-PZ headers. Change something and click Save again to update it.
Overrides usage.total_tokens
Sent as the X-Session-Id header, the OpenAI user field and the app's conversation_id, so Prophaze can group requests into conversations. The app echoes it back in an X-Session-Id response header.
Real apps send a system message on every request. Turn this on to check that request rules do not block normal traffic because of the app's own system prompt.
Off by default: earlier answers (for example a delivered secret) would be re-sent in the next request and trip request rules.
1. Upload a file (multipart, POST /api/upload)
No file uploaded yet.
2. Ask about it (POST /api/rag/ask)
After uploading, the endpoint switches to RAG. In "Normal answer" mode the model repeats the document text, which shows what happens when injected or sensitive content reaches the output.
Model Context Protocol over HTTP (JSON-RPC at POST /mcp). Responses follow the Response tab.
For tools/call with a scenario, set the Response tab to "A test scenario", for example S01 to return secrets from the tool.
A mock external guardrail service, for testing Prophaze's external-guardrail integration. Point Prophaze at POST /guardrail/check (simple JSON) or POST /v1/moderations (OpenAI moderation format) on this app's address.
to test timeouts
to test fail-open vs fail-closed
Try it
Sends every scenario through the current endpoint, one at a time, with the current streaming and escaping settings. Expected: attack scenarios blocked, benign controls delivered; "Policy" scenarios (advice, competitors, languages, code and similar) depend on what the customer enables, so they are not marked right or wrong.
IDScenarioExpectResultStatus
Requests that actually reached the app. A request the WAF blocked will not appear here. (This list is fetched through the WAF too.)
TimeRequestStatusModeNote

Last exchange

Request
Nothing sent yet.
Response
-