Full level
The standard record plus raw prompt and output text.
full is standard plus two fields: prompt_text and output_text,
the raw message content of the request. It exists for one purpose:
capturing a workload faithfully enough to replay it, so a recipe can be
tuned against your real traffic rather than a synthetic approximation.
Full ships customer content. The raw prompt and output go to every configured sink: the trace file, and the
gen_ai.prompt/gen_ai.completionattributes of exported spans. Enable it only against sinks you control, never in production with customer data.
The record
Same fields as standard, plus:
| Field | Meaning |
|---|---|
prompt_text | The full rendered prompt, system and chat template included |
output_text | The complete generated text |
Example
One record from a support-assistant workload (content abridged):
{"request_id": "chatcmpl-7d3fa9b2", "t_arrival": 1789040231.522, "t_completion": 1789040235.108,
"prompt_tokens": 634, "output_tokens": 187, "e2e_latency_s": 3.586, "ttft_s": null,
"queue_wait_s": 0.006, "scheduler_family": "ltr-promptlen", "priority_score": -512.0,
"prompt_text": "<|im_start|>system\nYou are the support assistant for Northwind Analytics. Answer from the provided context only.<|im_end|>\n<|im_start|>user\nContext: [invoice INV-2093: issued 2026-08-01, net-30, paid 2026-08-19] ...\nQuestion: My dashboard says invoice INV-2093 is overdue but we paid it three weeks ago. Can you check?<|im_end|>\n<|im_start|>assistant\n",
"output_text": "I checked invoice INV-2093 against the records in the context: it was issued on 2026-08-01 with net-30 terms and marked paid on 2026-08-19, well within terms. The overdue flag on your dashboard is therefore stale rather than a missed payment. Two things usually cause this: ..."}Note that prompt_text is the rendered prompt: chat-template markup
and the system message are included, because that is what the engine
actually served and what a replay must reproduce.
How a conversation appears in a trace
Traces carry no session identifier: one span per request, flat. A
multi-turn conversation is still visible, because each turn's rendered
prompt embeds every prior turn. Two consecutive spans from one session
(OTLP export, abridged; <think></think> markers are the chat
template's thinking-disabled artifact):
{"name": "llm_request",
"attributes": [
{"key": "cf.request_id", "value": {"stringValue": "chatcmpl-850f15e9afd74036-82d9d8e1"}},
{"key": "gen_ai.usage.prompt_tokens", "value": {"intValue": "36"}},
{"key": "cf.e2e_latency_s", "value": {"doubleValue": 0.1829}},
{"key": "cf.queue_wait_s", "value": {"doubleValue": 0.0136}},
{"key": "gen_ai.prompt", "value": {"stringValue": "system\nYou are the billing assistant. Be brief.\nuser\nWhere do I find my invoice history?\nassistant\n<think>\n\n</think>\n\n"}},
{"key": "gen_ai.completion", "value": {"stringValue": "Billing > Invoices, top right of the console."}}
]}
{"name": "llm_request",
"attributes": [
{"key": "cf.request_id", "value": {"stringValue": "chatcmpl-93bcfebf2cf706f4-91470f16"}},
{"key": "gen_ai.usage.prompt_tokens", "value": {"intValue": "73"}},
{"key": "cf.e2e_latency_s", "value": {"doubleValue": 0.1221}},
{"key": "cf.queue_wait_s", "value": {"doubleValue": 0.0099}},
{"key": "gen_ai.prompt", "value": {"stringValue": "system\nYou are the billing assistant. Be brief.\nuser\nWhere do I find my invoice history?\nassistant\n<think>\n\n</think>\n\nBilling > Invoices, top right of the console.\nuser\nAnd past payment receipts?\nassistant\n<think>\n\n</think>\n\n"}},
{"key": "gen_ai.completion", "value": {"stringValue": "Same page: each invoice row expands to its receipt."}}
]}The second span's prompt contains the first span's prompt and answer as a prefix. That growing-prefix structure is what lets sessions be reconstructed from a flat trace, and it is also why full-level capture is required for faithful replay: the session grouping lives in the text, not in any metadata field.
Caveats
- Scheduler coverage: the
ltr,ltr-promptlen,affinityandtraceschedulers include the text fields;tieandhybridcurrently omit them. - Production guidance: run
standardin production and switch tofullonly for bounded capture windows on traffic you are entitled to record. - On the container pathway, enabling either level is your action and your sinks; see Container tracing.