Tracing module
TracingProcessor
Bases: ABC
Interface for processing spans.
Source code in src/agents/tracing/processor_interface.py
on_trace_start
abstractmethod
on_trace_start(trace: Trace) -> None
Called when a trace is started.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
trace
|
Trace
|
The trace that started. |
required |
on_trace_end
abstractmethod
on_trace_end(trace: Trace) -> None
Called when a trace is finished.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
trace
|
Trace
|
The trace that started. |
required |
on_span_start
abstractmethod
on_span_start(span: Span[Any]) -> None
Called when a span is started.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
span
|
Span[Any]
|
The span that started. |
required |
on_span_end
abstractmethod
on_span_end(span: Span[Any]) -> None
Called when a span is finished. Should not block or raise exceptions.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
span
|
Span[Any]
|
The span that finished. |
required |
shutdown
abstractmethod
Span
Bases: ABC
, Generic[TSpanData]
Source code in src/agents/tracing/spans.py
start
abstractmethod
Start the span.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
mark_as_current
|
bool
|
If true, the span will be marked as the current span. |
False
|
finish
abstractmethod
Finish the span.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
reset_current
|
bool
|
If true, the span will be reset as the current span. |
False
|
Trace
A trace is the root level object that tracing creates. It represents a logical "workflow".
Source code in src/agents/tracing/traces.py
start
abstractmethod
Start the trace.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
mark_as_current
|
bool
|
If true, the trace will be marked as the current trace. |
False
|
finish
abstractmethod
Finish the trace.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
reset_current
|
bool
|
If true, the trace will be reset as the current trace. |
False
|
agent_span
agent_span(
name: str,
handoffs: list[str] | None = None,
tools: list[str] | None = None,
output_type: str | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[AgentSpanData]
Create a new agent span. The span will not be started automatically, you should either do
with agent_span() ...
or call span.start()
+ span.finish()
manually.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
The name of the agent. |
required |
handoffs
|
list[str] | None
|
Optional list of agent names to which this agent could hand off control. |
None
|
tools
|
list[str] | None
|
Optional list of tool names available to this agent. |
None
|
output_type
|
str | None
|
Optional name of the output type produced by the agent. |
None
|
span_id
|
str | None
|
The ID of the span. Optional. If not provided, we will generate an ID. We
recommend using |
None
|
parent
|
Trace | Span[Any] | None
|
The parent span or trace. If not provided, we will automatically use the current trace/span as the parent. |
None
|
disabled
|
bool
|
If True, we will return a Span but the Span will not be recorded. |
False
|
Returns:
Type | Description |
---|---|
Span[AgentSpanData]
|
The newly created agent span. |
Source code in src/agents/tracing/create.py
custom_span
custom_span(
name: str,
data: dict[str, Any] | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[CustomSpanData]
Create a new custom span, to which you can add your own metadata. The span will not be
started automatically, you should either do with custom_span() ...
or call
span.start()
+ span.finish()
manually.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
The name of the custom span. |
required |
data
|
dict[str, Any] | None
|
Arbitrary structured data to associate with the span. |
None
|
span_id
|
str | None
|
The ID of the span. Optional. If not provided, we will generate an ID. We
recommend using |
None
|
parent
|
Trace | Span[Any] | None
|
The parent span or trace. If not provided, we will automatically use the current trace/span as the parent. |
None
|
disabled
|
bool
|
If True, we will return a Span but the Span will not be recorded. |
False
|
Returns:
Type | Description |
---|---|
Span[CustomSpanData]
|
The newly created custom span. |
Source code in src/agents/tracing/create.py
function_span
function_span(
name: str,
input: str | None = None,
output: str | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[FunctionSpanData]
Create a new function span. The span will not be started automatically, you should either do
with function_span() ...
or call span.start()
+ span.finish()
manually.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
The name of the function. |
required |
input
|
str | None
|
The input to the function. |
None
|
output
|
str | None
|
The output of the function. |
None
|
span_id
|
str | None
|
The ID of the span. Optional. If not provided, we will generate an ID. We
recommend using |
None
|
parent
|
Trace | Span[Any] | None
|
The parent span or trace. If not provided, we will automatically use the current trace/span as the parent. |
None
|
disabled
|
bool
|
If True, we will return a Span but the Span will not be recorded. |
False
|
Returns:
Type | Description |
---|---|
Span[FunctionSpanData]
|
The newly created function span. |
Source code in src/agents/tracing/create.py
generation_span
generation_span(
input: Sequence[Mapping[str, Any]] | None = None,
output: Sequence[Mapping[str, Any]] | None = None,
model: str | None = None,
model_config: Mapping[str, Any] | None = None,
usage: dict[str, Any] | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[GenerationSpanData]
Create a new generation span. The span will not be started automatically, you should either
do with generation_span() ...
or call span.start()
+ span.finish()
manually.
This span captures the details of a model generation, including the
input message sequence, any generated outputs, the model name and
configuration, and usage data. If you only need to capture a model
response identifier, use response_span()
instead.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
input
|
Sequence[Mapping[str, Any]] | None
|
The sequence of input messages sent to the model. |
None
|
output
|
Sequence[Mapping[str, Any]] | None
|
The sequence of output messages received from the model. |
None
|
model
|
str | None
|
The model identifier used for the generation. |
None
|
model_config
|
Mapping[str, Any] | None
|
The model configuration (hyperparameters) used. |
None
|
usage
|
dict[str, Any] | None
|
A dictionary of usage information (input tokens, output tokens, etc.). |
None
|
span_id
|
str | None
|
The ID of the span. Optional. If not provided, we will generate an ID. We
recommend using |
None
|
parent
|
Trace | Span[Any] | None
|
The parent span or trace. If not provided, we will automatically use the current trace/span as the parent. |
None
|
disabled
|
bool
|
If True, we will return a Span but the Span will not be recorded. |
False
|
Returns:
Type | Description |
---|---|
Span[GenerationSpanData]
|
The newly created generation span. |
Source code in src/agents/tracing/create.py
get_current_span
get_current_span() -> Span[Any] | None
get_current_trace
get_current_trace() -> Trace | None
guardrail_span
guardrail_span(
name: str,
triggered: bool = False,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[GuardrailSpanData]
Create a new guardrail span. The span will not be started automatically, you should either
do with guardrail_span() ...
or call span.start()
+ span.finish()
manually.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
The name of the guardrail. |
required |
triggered
|
bool
|
Whether the guardrail was triggered. |
False
|
span_id
|
str | None
|
The ID of the span. Optional. If not provided, we will generate an ID. We
recommend using |
None
|
parent
|
Trace | Span[Any] | None
|
The parent span or trace. If not provided, we will automatically use the current trace/span as the parent. |
None
|
disabled
|
bool
|
If True, we will return a Span but the Span will not be recorded. |
False
|
Source code in src/agents/tracing/create.py
handoff_span
handoff_span(
from_agent: str | None = None,
to_agent: str | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[HandoffSpanData]
Create a new handoff span. The span will not be started automatically, you should either do
with handoff_span() ...
or call span.start()
+ span.finish()
manually.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
from_agent
|
str | None
|
The name of the agent that is handing off. |
None
|
to_agent
|
str | None
|
The name of the agent that is receiving the handoff. |
None
|
span_id
|
str | None
|
The ID of the span. Optional. If not provided, we will generate an ID. We
recommend using |
None
|
parent
|
Trace | Span[Any] | None
|
The parent span or trace. If not provided, we will automatically use the current trace/span as the parent. |
None
|
disabled
|
bool
|
If True, we will return a Span but the Span will not be recorded. |
False
|
Returns:
Type | Description |
---|---|
Span[HandoffSpanData]
|
The newly created handoff span. |
Source code in src/agents/tracing/create.py
response_span
response_span(
response: Response | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[ResponseSpanData]
Create a new response span. The span will not be started automatically, you should either do
with response_span() ...
or call span.start()
+ span.finish()
manually.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
response
|
Response | None
|
The OpenAI Response object. |
None
|
span_id
|
str | None
|
The ID of the span. Optional. If not provided, we will generate an ID. We
recommend using |
None
|
parent
|
Trace | Span[Any] | None
|
The parent span or trace. If not provided, we will automatically use the current trace/span as the parent. |
None
|
disabled
|
bool
|
If True, we will return a Span but the Span will not be recorded. |
False
|
Source code in src/agents/tracing/create.py
trace
trace(
workflow_name: str,
trace_id: str | None = None,
group_id: str | None = None,
metadata: dict[str, Any] | None = None,
disabled: bool = False,
) -> Trace
Create a new trace. The trace will not be started automatically; you should either use
it as a context manager (with trace(...):
) or call trace.start()
+ trace.finish()
manually.
In addition to the workflow name and optional grouping identifier, you can provide an arbitrary metadata dictionary to attach additional user-defined information to the trace.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
workflow_name
|
str
|
The name of the logical app or workflow. For example, you might provide "code_bot" for a coding agent, or "customer_support_agent" for a customer support agent. |
required |
trace_id
|
str | None
|
The ID of the trace. Optional. If not provided, we will generate an ID. We
recommend using |
None
|
group_id
|
str | None
|
Optional grouping identifier to link multiple traces from the same conversation or process. For instance, you might use a chat thread ID. |
None
|
metadata
|
dict[str, Any] | None
|
Optional dictionary of additional metadata to attach to the trace. |
None
|
disabled
|
bool
|
If True, we will return a Trace but the Trace will not be recorded. This will
not be checked if there's an existing trace and |
False
|
Returns:
Type | Description |
---|---|
Trace
|
The newly created trace object. |
Source code in src/agents/tracing/create.py
gen_span_id
gen_trace_id
add_trace_processor
add_trace_processor(
span_processor: TracingProcessor,
) -> None
Adds a new trace processor. This processor will receive all traces/spans.
set_trace_processors
set_trace_processors(
processors: list[TracingProcessor],
) -> None
Set the list of trace processors. This will replace the current list of processors.