Skip to main content

prompt-flamegraph

PyPI version Python versions License: GPL v3

Lightweight, zero-dependency Python package to profile LLM prompt tokens with interactive flamegraphs, waste detection, prompt diffs and HTML/SVG/Markdown/terminal exports.

What it does

prompt-flamegraph takes a structured prompt (system prompt, tools, RAG context, chat history) and shows you where the tokens go, in an interactive flamegraph.

It is intentionally lightweight: no proxy, no server, no dashboard, no telemetry. One function call, one output file.

Interactive HTML flamegraph

Install

pip install prompt-flamegraph

Extras:

pip install prompt-flamegraph[tiktoken]   # accurate OpenAI-style token counts
pip install prompt-flamegraph[rich]       # prettier terminal output

Quick start

from prompt_flamegraph import profile_prompt

prompt = {
    "system_prompt": "You are a helpful coding assistant.",
    "tools": ["..."],
    "rag_context": {"doc_1": "..."},
    "chat_history": ["..."],
}

profile_prompt(prompt, output="context.html")

Open context.html in your browser.

Waste detection

Identify token waste before sending the prompt to an API:

from prompt_flamegraph import build_tree, detect_waste

prompt = {
    "system_prompt": "You are a helpful coding assistant.",
    "tools": ["read_file", "write_file", "run_command", "search_web", "send_email", "create_ticket"],
    "rag_context": {
        "doc_1.py": "def helper():\n    return 'value'\n",
        "doc_2.py": "def helper():\n    return 'value'\n",
        "doc_3.py": "def helper():\n    return 'value'\n",
    },
    "chat_history": ["Hi!"] * 10,
}

tree = build_tree(prompt, name="prompt")
report = detect_waste(tree)

print(f"Wasted: {report.wasted_tokens} / {report.total_tokens} tokens ({report.waste_ratio:.1%})")
for finding in report.findings:
    print(f"- {finding.kind}: {finding.message}")

Example output:

Wasted: 26 / 88 tokens (29.5%)
- duplicate: 3× duplicate text ('def helper():     return 'value' ') — keep only one
- duplicate: 5× duplicate text ('Hi!') — keep only one
- too_many_tools: 6 tools defined — only declare the ones the model actually calls

Pass detect_waste=True to profile_prompt() to include findings directly in the HTML report.

CLI

# HTML flamegraph
prompt-flamegraph prompt.json -o context.html --cost 1.5e-6

# Terminal bar chart
prompt-flamegraph prompt.json --terminal

# Diff between two prompts (green = added, red = removed, orange = changed)
prompt-flamegraph v1.json --diff v2.json -o diff.html

# SVG or Markdown export
prompt-flamegraph prompt.json --format svg -o context.svg
prompt-flamegraph prompt.json --format md -o context.md

# Demo
prompt-flamegraph --demo --cost 1.5e-6

Terminal example

────────────────────────────── Prompt Flamegraph ──────────────────────────────
Total: 102 tokens
 Category         Tokens      %  Visual
 system_prompt        18  17.6%  ████
 tools                41  40.2%  ██████████
 rag_context          22  21.6%  █████
 chat_history         21  20.6%  █████

Features

  • Pure Python, no required dependencies.
  • Optional tiktoken support.
  • Pluggable tokenizer.
  • Cost estimation.
  • Token waste detection: duplicates, oversized RAG, long history, too many tools.
  • Prompt diff: compare two prompts and visualize token changes.
  • Terminal output: colored ASCII/Rich bar chart.
  • Export formats: HTML, SVG, Markdown.
  • Works with nested dict, list and str structures.

API

profile_prompt(data, output, title, tokenizer, cost_per_token, detect_waste, width, height)

Build and render a prompt flamegraph to HTML.

diff_prompts(v1, v2, output, title, ...)

Render a diff flamegraph between two prompts.

detect_waste(tree)

Analyze a tree and return a WasteReport with findings.

build_tree(data, name, tokenizer)

Build the internal token tree without rendering.

Resources

Source

https://github.com/fjjjuv/prompt-flamegraph

License

This project is licensed under the GNU General Public License v3.0 or later.

See the LICENSE file for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prompt_flamegraph-0.2.3.tar.gz (28.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prompt_flamegraph-0.2.3-py3-none-any.whl (34.1 kB view details)

Uploaded Python 3

File details

Details for the file prompt_flamegraph-0.2.3.tar.gz.

File metadata

  • Download URL: prompt_flamegraph-0.2.3.tar.gz
  • Upload date:
  • Size: 28.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for prompt_flamegraph-0.2.3.tar.gz
Algorithm Hash digest
SHA256 a3e4a3968e3c69e4c71bb4ab4711f0fafa98f6c505aa670b766f2f6931ad6bc2
MD5 1d519543ddcfda5fab4a83edb72bf76b
BLAKE2b-256 8a5822631e1f097f85f497f5f2fe93e820b0d4305d22fd527fc7bd06a1756e61

See more details on using hashes here.

File details

Details for the file prompt_flamegraph-0.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for prompt_flamegraph-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 27d061642eec192b729f95f5d6af1eeaab8bf27941ee65416e387e6ad08ef340
MD5 f0b98c19e410356b4c6bd5c3c128e2a7
BLAKE2b-256 ef77e41b37cc9e1f80c874d8502891a67ceeaac47fbe5e70f9459bffa8563eeb

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page