Skip to content

Tracing end user input and agent output #4593

@B-Step62

Description

@B-Step62

🔴 Required Information

Please ensure all items in this section are completed to allow for efficient
triaging. Requests without complete information may be rejected / deprioritized.
If an item is not applicable to you - please mark it as N/A

Is your feature request related to a specific problem?

OpenTelemetry trace from Google ADK creates an empty root span and does not capture end user input and output.

Image

Describe the Solution You'd Like

Optionally record user inputs and agent outputs to the invocation span created here.

Alternatively, add a callback to the runner execution so we can customize the behavior. The agent callbacks does not help because they are executed after the span is created.

Impact on your work

Only LLM spans include user input and agent output, which makes it tricky to process traces for downstream operations (e.g. review conversation sessions, evaluate traces, etc).

Willingness to contribute

Yes. Happy to contribute if the proposal makes sense.


🟡 Recommended Information

Describe Alternatives You've Considered

We could dreate a wrapper span and set inputs/outputs. However, invoking agent directly is not the primary way to run/deploy ADK agents. Also handling streaming event requires boilerplate code.

with tracer.start_as_current_span as span:
    span.set_attributes("user_content", user_content)
    async with Aclosing(ctx.agent.run_async(ctx)) as agen:
                async for event in agen:
                  yield event
   ...

Proposed API / Implementation

Add a new environment variable like ADK_CAPTURE_END_USER_INPUTS_OUTPUTS with default to False. When it is set, the end user inputs and outputs will be recorded in the root span.

Additional Context

Add any other context or screenshots about the feature request here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    tracing[Component] This issue is related to OpenTelemetry tracing

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions