DRAFT Single Agent Tool LlamaIndex Instrumentation #86
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adding a separate workflow agent instrumentation mechanism with a wrapper function:
✅ Dual instrumentation paths for backward compatibility
✅ Non-invasive: Uses monkey-patching, no code changes needed
✅ Async-aware: Background task doesn't block user code
✅ Context propagation: Manual for workflows, automatic for callbacks
✅ Shared TelemetryHandler: Both paths use same handler instance
User code:
agent = ReActAgent(tools=[...])
handler = agent.run("Calculate 5*3+2")
↓
↓ (intercepted by wrap_agent_run)
↓
wrap_agent_run():
Line 137: handler = wrapped(*args, **kwargs)
↓
└─→ Calls original ReActAgent.run()
↓
└─→ Returns WorkflowHandler
(contains stream of events)
Line 159: await instrumentor.instrument_workflow_handler(handler, ...)
↓
└─→ Pass handler to instrumentor
Line 169: return handler # Return to user
↓
└─→ User can await it
instrument_workflow_handler(workflow_handler):
Line 43: async for event in workflow_handler.stream_events():
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
THIS IS THE CONSUMPTION!