Observed since 20 Oct, 21:53 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Telemetry and Observability SDK for AI Agents — with Trace Tree MRI
Python SDK for the AgentEval observability platform. Instrument your AI agents in minutes and get Trace Tree MRI — a full visual breakdown of every agent decision, latency, PII exposure, and cost.
pip install agenteval_sdk
import os
from agenteval_sdk import AgentEvalClient, trace
client = AgentEvalClient(
api_key=os.environ["AGENTEVAL_API_KEY"],
project_id="aml-system",
)
# Decorate each agent function — span hierarchy is wired automatically
@trace(name="Orchestrator", latency_threshold=5000)
def run_case(case_id: str) -> str:
result = kyc_agent(case_id)
return result
@trace(name="KYC_Agent", latency_threshold=3000)
def kyc_agent(case_id: str) -> str:
output = "KYC: PASS"
client.log_trace(
agent_name="KYC_Agent",
input_text=f"Check case {case_id}",
output_text=output,
latency_ms=340,
tokens_used=180,
status="pass",
pii_scan=True, # lightweight regex pre-flight before Presidio
)
return output
run_case("TXN-9921")
This produces a Trace Tree visible in the AgentEval dashboard — parent/child spans, Gantt swimlane, PII audit trail, and cost estimate — with zero manual wiring.
@trace decorator@trace # bare
@trace(name="MyAgent") # custom display name
@trace(name="MyAgent", latency_threshold=2000) # red UI alert if > 2 s
latency_threshold (ms) controls when the node appears red in the Trace Tree UI.
Nested agents inherit the parent's threshold unless they define their own.
AgentEvalClient.log_trace()| Parameter | Type | Description |
|---|---|---|
agent_name | str | Display name in the UI |
input_text | str | Agent input / prompt |
output_text | str | Agent response |
latency_ms | int | Wall-clock time for this span |
tokens_used | int | Token count (for cost estimate) |
status | str | "pass" / "fail" / "NEW" |
trace_id | str | Auto-generated if omitted |
session_id | str | Group related traces (e.g. one customer case) |
pii_scan | bool | Client-side regex PII scan before sending |
pii_types | list[str] | Explicit PII types (overrides pii_scan) |
span_id | str | Auto-populated from @trace ContextVar |
parent_span_id | str | Auto-populated from @trace ContextVar |
latency_threshold | int | Per-span override (ms) |
log_trace()For lighter usage without AgentEvalClient:
from agenteval_sdk import log_trace
log_trace(
trace_id="abc-123",
input_text="Hello",
output_text="World",
latency_ms=200,
tokens_used=50,
status="pass",
api_key=os.environ["AGENTEVAL_API_KEY"],
pii_scan=True,
)
| Variable | Default | Description |
|---|---|---|
AGENTEVAL_API_URL | https://sandbox.agenteval.in/trace | Ingestion endpoint |
AGENTEVAL_API_KEY | — | API key (or pass directly) |
AgentEvalClient writes every trace to a local SQLite database before attempting the network POST. No traces are lost on network failure. Call client.flush() to retry unsynced traces.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.3.8 | 6 Apr 2026 | 2 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 21:53 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:c04638e53b251f8b7e1349deb402d7ae31a246632ba08a1d5a2be7a449ef3a52