{% from "_macros.html" import icon %} {# Everything is rendered through normal Jinja escaping and never `|safe`. This JSON is full of model output, search results and uploaded documents -- hard rule 6 applies here exactly as it does to a chat bubble. #}

Rebuilt now against the current configuration. This is not a recording of the request that produced the last reply — if a prompt or a setting has changed since, this shows what would be sent today.

This chat

Model
{{ chat.model_id or "—" }}
Context
{% if model and model.context_length %} {{ model.context_length }} tokens {% else %} {# Shown here rather than only beside a reply, because "why is there no percentage" is a question people have before the first one. #} not set{% if model %} — set it{% endif %} {% endif %}
{% if chat.temporary %}
Lifetime
temporary
{% endif %}

Last reply

{% if row %}
Tokens
{% if metrics.has_anything %} {% if metrics.estimated %}~{% endif %}{{ metrics.prompt_tokens }} in, {% if metrics.estimated %}~{% endif %}{{ metrics.completion_tokens }} out {% if metrics.estimated %}estimated{% endif %} {% else %} not reported {% endif %}
Elapsed
{{ metrics.elapsed_ms }} ms
Thinking
{{ row.reasoning_ms }} ms
Tool calls
{{ row.tool_calls_json | length }}
Rounds
{{ metrics.rounds }}
State
{% if row.error %}error {% elif row.stopped %}stopped {% elif not row.complete %}writing {% else %}complete{% endif %}
{% if row.error %}

{{ row.error }}

{% endif %} {% else %}

Nothing has been answered in this chat yet.

{% endif %}

System message

{% if system %}
{{ system }}
{% else %}

None is being sent.

{% endif %}

Tools offered {{ tool_names | length }}

{% if tool_names %}

{{ tool_names | join(", ") }}

{% else %}

None. A model has to be marked as supporting tools, the user needs the permission, and the tool itself has to be turned on.

{% endif %}

Request body

{{ request_json }}