Advanced Setup
Node-by-node monitoring for specialized use cases. This guide covers the advanced approach for granular control over individual operations.
Recommended: Use Manual Setup with the @tracing
decorator for most use cases. This advanced approach is only for very specific scenarios.
When to use advanced setup
Use this only when:
- You need to monitor individual LLM calls separately from agent workflows
- You’re building custom monitoring tools that require granular operation data
- You have complex agent architectures that don’t fit the standard pattern
- You need backward compatibility with existing implementations
For most use cases, the simplified agent-level monitoring is recommended.
What you’re doing
You’re manually tracking each operation in your agent workflow, including individual LLM calls and tool executions.
Why this is complex: You must manually track every operation, manage execution IDs, and handle session lifecycle. The @tracing
decorator does all this automatically.
Migration to simplified approach
Before (Advanced):
# Complex manual tracking
tracing_response = tracker.start_tracing(agent_name="agent")
execution_id = tracing_response.get("executionId")
try:
result = await my_function()
tracker.track_node(input=input_data, output=result, ...)
finally:
tracker.end_tracing(execution_id=execution_id, agent_name="agent")
After (Simplified):
# Simple decorator
@tracing(agent="agent")
async def my_agent_function():
result = await my_function()
return result
Benefits:
- 90% less code
- Automatic operation capture
- No manual session management
Next steps
Set up evaluation: Add Quality Assessment so your engineer can detect quality issues.
Enable fixes: Connect GitHub Integration so your engineer can create pull requests with improvements.