--- title: Prompt Squirrel colorFrom: gray colorTo: gray sdk: gradio sdk_version: 5.43.1 python_version: 3.10.12 app_file: app.py pinned: false license: apache-2.0 --- # Prompt Squirrel RAG Prompt Squirrel converts rough natural-language image descriptions into a structured, editable prompt built from a fixed image-tag vocabulary. The intent is practical: produce a strong starting prompt quickly, then let users directly refine tag choices in the UI. ## What This Space Does - Rewrites free text into retrieval-friendly pseudo-tags. - Retrieves candidate tags from a fixed vocabulary. - Uses closed-set LLM selection (index-only) so models cannot invent arbitrary tags. - Expands implications and groups tags into ranked editable rows. - Builds the final suggested prompt from current toggle states. ## How To Use 1. Enter an image description in `Enter Prompt`. 2. Click `Run`. 3. Toggle tags in rows to add/remove them. 4. Copy the final text from `Suggested Prompt`. ## Technologies Used - FastText embeddings for semantic retrieval. - HNSW indexes for efficient nearest-neighbor search. - Reduced TF-IDF vectors for context-aware ranking. - OpenRouter instruction models for rewrite, structural inference, probe inference, and closed-set selection. Default model: `mistralai/mistral-small-24b-instruct-2501` (chosen empirically on internal caption-evident evaluations; configurable). - Gradio for the interactive web UI. ## Current Snapshot Latest relabel-aware rescore on caption-evident n=30: - Micro precision/recall/F1: `0.554 / 0.750 / 0.638` - Macro precision/recall/F1: `0.564 / 0.764 / 0.633` - Ground-truth scale: 30 images, 440 total tag assignments, 205 unique tags Latency from local UI timing logs (n=110 runs): - Median: `8.56s` - P75: `12.56s` - P90: `18.33s` ## Documentation And Contracts - Full architecture and rationale (same source used by the in-app docs accordion): [docs/space_overview.md](docs/space_overview.md) - Retrieval contract: [docs/retrieval_contract.md](docs/retrieval_contract.md) - Rewrite contract: [docs/rewrite_contract.md](docs/rewrite_contract.md) - Closed-set selection contract: [docs/stage3_contract.md](docs/stage3_contract.md)