-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
🔴 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.
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.