Tracing module
TracingProcessor
Bases: ABC
处理 span 的接口。
Source code in src/agents/tracing/processor_interface.py
AgentSpanData
Bases: SpanData
表示 trace 中的 Agent Span。 包含 name、handoffs、tools 和 output_type。
Source code in src/agents/tracing/span_data.py
CustomSpanData
Bases: SpanData
表示 trace 中的 Custom Span。 包含 name 和 data 属性包。
Source code in src/agents/tracing/span_data.py
FunctionSpanData
Bases: SpanData
表示 trace 中的 Function Span。 包含 input、output 以及 MCP 数据(如适用)。
Source code in src/agents/tracing/span_data.py
GenerationSpanData
Bases: SpanData
表示 trace 中的 Generation Span。 包含 input、output、model、model_config 和 usage。
Source code in src/agents/tracing/span_data.py
GuardrailSpanData
Bases: SpanData
表示 trace 中的 Guardrail Span。 包含 name 和 triggered 状态。
Source code in src/agents/tracing/span_data.py
HandoffSpanData
Bases: SpanData
表示 trace 中的 Handoff Span。 包含源 agent 和目标 agent。
Source code in src/agents/tracing/span_data.py
MCPListToolsSpanData
Bases: SpanData
表示 trace 中的 MCP List Tools Span。 包含 server 和 result。
Source code in src/agents/tracing/span_data.py
ResponseSpanData
Bases: SpanData
表示 trace 中的 Response Span。 包含 response 和 input。
Source code in src/agents/tracing/span_data.py
SpanData
Bases: ABC
表示 trace 中的 span 数据。
Source code in src/agents/tracing/span_data.py
SpeechGroupSpanData
Bases: SpanData
表示 trace 中的 Speech Group Span。
Source code in src/agents/tracing/span_data.py
SpeechSpanData
Bases: SpanData
表示 trace 中的 Speech Span。 包含 input、output、model、model_config 和 first_content_at。
Source code in src/agents/tracing/span_data.py
TranscriptionSpanData
Bases: SpanData
表示 trace 中的 Transcription Span。 包含 input、output、model 和 model_config。
Source code in src/agents/tracing/span_data.py
Span
Bases: ABC
, Generic[TSpanData]
Source code in src/agents/tracing/spans.py
start
abstractmethod
finish
abstractmethod
Trace
Trace(追踪)是 tracing 创建的最顶层对象。它代表一个逻辑上的“工作流”。
Source code in src/agents/tracing/traces.py
start
abstractmethod
finish
abstractmethod
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]
创建一个新的 agent span。该 span 不会自动启动,你需要使用 with agent_span() ...
,或者手动调用 span.start()
和 span.finish()
。
参数
name: agent 的名称。
handoffs: 可选,agent 可以交接控制权的其他 agent 名称列表。
tools: 可选,该 agent 可用的工具名称列表。
output_type: 可选,agent 产生的输出类型名称。
span_id: span 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_span_id()
生成 span ID,以确保格式正确。
parent: 父级 span 或 trace。如果未提供,我们会自动使用当前的 trace/span 作为父级。
disabled: 如果为 True,我们会返回一个 Span,但不会记录该 Span。
返回
新创建的 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]
创建一个新的自定义 span,你可以为其添加自定义元数据。该 span 不会自动启动,你需要使用 with custom_span() ...
,或者手动调用 span.start()
和 span.finish()
。
参数
name: 自定义 span 的名称。
data: 要关联到 span 的任意结构化数据。
span_id: span 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_span_id()
生成 span ID,以确保格式正确。
parent: 父级 span 或 trace。如果未提供,我们会自动使用当前的 trace/span 作为父级。
disabled: 如果为 True,我们会返回一个 Span,但不会记录该 Span。
返回
新创建的自定义 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]
创建一个新的 function span。该 span 不会自动启动,你需要使用 with function_span() ...
,或者手动调用 span.start()
和 span.finish()
。
参数
name: 函数的名称。
input: 传递给函数的输入。
output: 函数的输出。
span_id: span 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_span_id()
生成 span ID,以确保格式正确。
parent: 父级 span 或 trace。如果未提供,我们会自动使用当前的 trace/span 作为父级。
disabled: 如果为 True,我们会返回一个 Span,但不会记录该 Span。
返回
新创建的 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]
创建一个新的 generation span。该 span 不会自动启动,你需要使用 with generation_span() ...
,
或者手动调用 span.start()
和 span.finish()
。
该 span 用于捕获模型生成的详细信息,包括输入消息序列、生成的输出、模型名称与配置,以及用量数据。
如果你只需要捕获模型响应标识符,请使用 response_span()
。
参数
input: 发送给模型的输入消息序列。
output: 从模型接收到的输出消息序列。
model: 用于生成的模型标识符。
model_config: 使用的模型配置(超参数)。
usage: 用量信息字典(如输入 token 数、输出 token 数等)。
span_id: span 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_span_id()
生成 span ID,以确保格式正确。
parent: 父级 span 或 trace。如果未提供,我们会自动使用当前的 trace/span 作为父级。
disabled: 如果为 True,我们会返回一个 Span,但不会记录该 Span。
返回
新创建的 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]
创建一个新的 guardrail span。该 span 不会自动启动,你需要使用 with guardrail_span() ...
,
或者手动调用 span.start()
和 span.finish()
。
参数
name: guardrail 的名称。
triggered: guardrail 是否被触发。
span_id: span 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_span_id()
生成 span ID,以确保格式正确。
parent: 父级 span 或 trace。如果未提供,我们会自动使用当前的 trace/span 作为父级。
disabled: 如果为 True,我们会返回一个 Span,但不会记录该 Span。
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]
创建一个新的 handoff span。该 span 不会自动启动,你需要使用 with handoff_span() ...
,
或者手动调用 span.start()
和 span.finish()
。
参数
from_agent: 发起交接的 agent 名称。
to_agent: 接收交接的 agent 名称。
span_id: span 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_span_id()
生成 span ID,以确保格式正确。
parent: 父级 span 或 trace。如果未提供,我们会自动使用当前的 trace/span 作为父级。
disabled: 如果为 True,我们会返回一个 Span,但不会记录该 Span。
返回
新创建的 handoff span。
Source code in src/agents/tracing/create.py
mcp_tools_span
mcp_tools_span(
server: str | None = None,
result: list[str] | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[MCPListToolsSpanData]
创建一个新的 MCP list tools span。该 span 不会自动启动,你需要使用 with mcp_tools_span() ...
,
或者手动调用 span.start()
和 span.finish()
。
参数
server: MCP 服务器的名称。
result: MCP list tools 调用的结果。
span_id: span 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_span_id()
生成 span ID,以确保格式正确。
parent: 父级 span 或 trace。如果未提供,我们会自动使用当前的 trace/span 作为父级。
disabled: 如果为 True,我们会返回一个 Span,但不会记录该 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]
创建一个新的 response span。该 span 不会自动启动,你需要使用 with response_span() ...
,
或者手动调用 span.start()
和 span.finish()
。
参数
response: OpenAI 的 Response 对象。
span_id: span 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_span_id()
生成 span ID,以确保格式正确。
parent: 父级 span 或 trace。如果未提供,我们会自动使用当前的 trace/span 作为父级。
disabled: 如果为 True,我们会返回一个 Span,但不会记录该 Span。
Source code in src/agents/tracing/create.py
speech_group_span
speech_group_span(
input: str | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[SpeechGroupSpanData]
创建一个新的 speech group span。该 span 不会自动启动,你需要使用 with speech_group_span() ...
,
或者手动调用 span.start()
和 span.finish()
。
参数
input: 用于语音请求的输入文本。
span_id: span 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_span_id()
生成 span ID,以确保格式正确。
parent: 父级 span 或 trace。如果未提供,我们会自动使用当前的 trace/span 作为父级。
disabled: 如果为 True,我们会返回一个 Span,但不会记录该 Span。
Source code in src/agents/tracing/create.py
speech_span
speech_span(
model: str | None = None,
input: str | None = None,
output: str | None = None,
output_format: str | None = "pcm",
model_config: Mapping[str, Any] | None = None,
first_content_at: str | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[SpeechSpanData]
创建一个新的 speech span。该 span 不会自动启动,你需要使用 with speech_span() ...
,或者手动调用 span.start()
和 span.finish()
。
参数
model: 用于文本转语音的模型名称。
input: 文本转语音的输入文本。
output: 文本转语音的音频输出,作为 base64 编码的 PCM 音频字节字符串。
output_format: 音频输出的格式(默认为 "pcm")。
model_config: 使用的模型配置(超参数)。
first_content_at: 音频输出第一个字节的时间。
span_id: span 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_span_id()
生成 span ID,以确保格式正确。
parent: 父级 span 或 trace。如果未提供,我们会自动使用当前的 trace/span 作为父级。
disabled: 如果为 True,我们会返回一个 Span,但不会记录该 Span。
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
创建一个新的 trace(追踪)。该 trace 不会自动启动;你需要将其作为上下文管理器使用(with trace(...):
),或者手动调用 trace.start()
和 trace.finish()
。
除了工作流名称和可选的分组标识符外,你还可以提供一个任意的元数据字典,将用户自定义的信息附加到 trace 上。
参数
workflow_name: 逻辑应用或工作流的名称。例如,你可以为编码代理提供 "code_bot",或为客服代理提供 "customer_support_agent"。
trace_id: trace 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_trace_id()
生成 trace ID,以确保格式正确。
group_id: 可选的分组标识符,用于将同一会话或流程中的多个 trace 关联起来。例如,你可以使用聊天线程 ID。
metadata: 可选的附加元数据字典,将其附加到 trace 上。
disabled: 如果为 True,我们会返回一个 Trace,但不会记录该 Trace。如果已存在 trace 且 even_if_trace_running
为 True,则不会检查此项。
返回
新创建的 trace 对象。
Source code in src/agents/tracing/create.py
transcription_span
transcription_span(
model: str | None = None,
input: str | None = None,
input_format: str | None = "pcm",
output: str | None = None,
model_config: Mapping[str, Any] | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[TranscriptionSpanData]
创建一个新的转录(transcription)span。该 span 不会自动启动,你需要使用 with transcription_span() ...
,
或者手动调用 span.start()
和 span.finish()
。
参数
model: 用于语音转文本的模型名称。
input: 语音转文本的音频输入,作为 base64 编码的音频字节字符串。
input_format: 音频输入的格式(默认为 "pcm")。
output: 语音转文本的输出文本。
model_config: 使用的模型配置(超参数)。
span_id: span 的 ID。可选。如果未提供,我们会自动生成一个 ID。建议使用 util.gen_span_id()
生成 span ID,以确保格式正确。
parent: 父级 span 或 trace。如果未提供,我们会自动使用当前的 trace/span 作为父级。
disabled: 如果为 True,我们会返回一个 Span,但不会记录该 Span。
返回
新创建的语音转文本 span。
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.