{% set active_page = 'docs' %} {% include '_nav.html' %} {% macro badge(status) %} {{ status }} {% endmacro %} {% macro tokens(n) %}{{ '{:,}'.format(n) if n is not none else '—' }}{% endmacro %} {% macro file_strip(files) %}
{% for f in files %} {% if f.missing %} ⚠ {{ f.name }} {% elif f.preview %} {{ f.name }} {% else %} 📄 {{ f.name }} {% endif %} {% endfor %}
{% endmacro %}

pbt docs

prompt-build-tool run history — generated {{ generated_at }}

{% if latest_files %}

Files — latest run {{ latest_run.short_id }}

{% endif %}

Run History

Click a row to expand model details.

{% if runs and not tokens_reported %}

Token usage is not being reported. To track it, have llm_call in client.py return pbt.LLMResult(text, spent_tokens=…) instead of the bare text. How to count is up to you: input + output + thinking, or the provider's total when it reports one (e.g. Gemini usage_metadata.total_token_count, OpenAI usage.total_tokens). pbt init scaffolds a client that does this.

{% endif %}
{% for run in runs %} {% if run.results %} {% endif %} {% else %} {% endfor %}
Run ID Status Models Started Duration Tokens used From cache Est. cold start
{{ run.short_id }} {{ badge(run.status) }} {{ run.model_count }} {{ run.created }} {{ run.duration }} {{ tokens(run.tokens_used) }} {{ tokens(run.tokens_cached) }} {{ tokens(run.tokens_cold) }}
{% for r in run.results %} {# 0 ms is a real measurement (a model that made no call); — means not recorded. #} {% if r.error %} {% else %} {% endif %} {% endfor %}
ModelTypeConfigStatusTimeTokensFrom cacheInputOutput previewFiles
{{ r.model_name }} {{ r.model_type }} {{ r.config or '—' }} {{ badge(r.status) }}{% if r.cached %}Cached{% endif %} {{ (r.execution_ms ~ ' ms') if r.execution_ms is not none else '—' }} {{ tokens(r.tokens_used) }} {{ tokens(r.tokens_cached) }} {{ r.input_preview or '—' }}{{ r.error }}{{ r.output_preview or ('—' if not r.files else '') }}{% if r.files %}{{ file_strip(r.files) }}{% else %}—{% endif %}
No runs recorded yet. Run pbt run first.
{% if dag_section %}

Model DAG

{{ dag_section | safe }}
{% endif %}