Skip to main content

prompt-flamegraph

PyPI version Python versions License: GPL v3 Website

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.

Metadata

Release files for prompt-flamegraph 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for prompt-flamegraph 0.2.4
File Size Uploaded
prompt_flamegraph-0.2.4.tar.gz 28.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for prompt-flamegraph 0.2.4
File Interpreter ABI Platform
prompt_flamegraph-0.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 63.2 kB

Release files / prompt_flamegraph-0.2.4.tar.gz

Download URL prompt_flamegraph-0.2.4.tar.gz
Size 28.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ed712b9b4456b403dd03529c8bf48e0868c41c416c5072fafbf94797caefd01e
BLAKE2b-256 checksum
How to use checksums
b8ba9f9e6873a69ff1297e25b5e8d19bc2adf84566a7c3abd170106b39b63371
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / prompt_flamegraph-0.2.4-py3-none-any.whl

Download URL prompt_flamegraph-0.2.4-py3-none-any.whl
Size 34.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fc519a68c3457a0826f2070f83ea317d409bebe2a0b8471d436acc0c4d409618
BLAKE2b-256 checksum
How to use checksums
34580d6bcb94f7a5a35399dd28d6d7f856b7c0dd2ee2e7fdeae3a409af6d71e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release history Release notifications | RSS feed

0.4.1

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

This release

0.2.4 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release 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