Tracing

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.completion attributes of exported spans. Enable it only against sinks you control, never in production with customer data.

The record

Same fields as standard, plus:

FieldMeaning
prompt_textThe full rendered prompt, system and chat template included
output_textThe 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, affinity and trace schedulers include the text fields; tie and hybrid currently omit them.
  • Production guidance: run standard in production and switch to full only 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.