Skip to Content
Rius

How can I see the prompts and responses for my AI agent?

Rius shows the prompts and responses of an agent in the Input / Output tab of a span’s details, on any span that carries content attributes. Select a span in the trace’s waterfall to open it. Content is captured by default, so it appears once your agent sends spans. If your privacy controls strip it, or your instrumentation never records it, the tab says so and timings, tokens and cost still show.

How it works

Rius splits span data into two families. Content is the prompts, completions, tool arguments and tool results. Metadata is everything else: names, timings, kinds, models, token counts and statuses. The concepts page covers the split in full.

These attributes carry content on the wire:

  • gen_ai.input.messages and gen_ai.output.messages for the messages of a model call.
  • gen_ai.system_instructions and gen_ai.tool.definitions for the system prompt and the tools offered.
  • input.value and output.value for generic input and output, such as tool arguments and results.

Where each thing appears in the trace view:

  • Waterfall. The tree shows each span’s kind (chain, llm, tool), inline token counts on model calls, and the failing path highlighted. It does not show prompt text. Use it to find the span you want.
  • Span details, Model section. Provider, requested and response model, input and output tokens, and cost for model calls.
  • Span details, Input / Output tab. The prompt and completion, rendered from the content attributes above.
  • Span details, Raw tab. The span exactly as ingested, which is the quickest way to check which attributes your spans carry.

A span that has started but not ended, shown as running, carries no content. When partial spans are enabled, Rius stores a content-free snapshot at the start of each span, and the real span with its inputs and outputs replaces it when it ends.

Set it up

  1. Send traces from your agent. Initialize the SDK once, and see Monitor AI agents in production for the full path from first trace to a monitored agent.
import rius client = rius.init( api_key="ri_...", service_name="my-agent", )
  1. Leave content capture on. RIUS_CAPTURE_CONTENT defaults to true. Setting it to false strips prompt and response content at export, and the SDK’s capture_content option and mask callable control the same thing in code.
export RIUS_CAPTURE_CONTENT=true
  1. If you send spans without the SDK, put the messages on the model-call span in gen_ai.input.messages and gen_ai.output.messages. Use input.value and output.value for generic input and output.

  2. Open Traces in the console and select a trace. See Exploring traces for finding it by time range, status or filters.

  3. In the waterfall, select the model-call span you care about and open the Input / Output tab. Use the previous and next buttons to read each call in turn. The tab stays open as you step, and the URL keeps the selected span and tab, so a copied link opens the same place. The keys ]l and [l jump to the next or previous model call.

  4. The console has no text search inside prompts: attribute filters match exact values only, and the search boxes match names and IDs. To find a span by a whole content value, type that value yourself in a filter, since Rius leaves content out of the suggested values.

What you get

  • The full prompt and completion for each model call, in the Input / Output tab of its span.
  • Tool arguments and results on tool spans, when your instrumentation records them.
  • Since previous llm call, a view on the same tab that shows what changed in the input since the trace’s previous model call. Each message is marked added, removed or changed, with the earlier version of a changed message under Before. In an agent loop this shows what each step added to the prompt, and a dropped turn or a rewritten system prompt stands out.
  • A Raw tab that shows exactly what was ingested, to confirm which content attributes arrived.
  • Full timing, token and cost analytics on every span, even when content is stripped, because metadata always flows.

A shared view, created with Share on the trace list, never carries span content, so use it to hand over trace metadata and open the span in the console to read prompts.

When something else fits

  • If the Input / Output tab says no content was recorded, check RIUS_CAPTURE_CONTENT, your mask callable and what your instrumentation records. The Raw tab shows what arrived.
  • If you only need to know where time, tokens or cost went, the waterfall and the Model section answer that without reading prompts, and you can keep content capture off.
  • If you need to see a run that is still going or crashed, enable partial spans. They show the run as running, but without prompts.

Still stuck? Get help

Last updated on