追踪模块
TracingProcessor
基类: ABC
处理跨度的接口。
Source code in src/agents/tracing/processor_interface.py
跟踪开始
abstractmethod
on_trace_start(trace: Trace) -> None
on_trace_end
abstractmethod
on_trace_end(trace: Trace) -> None
on_span_start
abstractmethod
on_span_start(span: Span[Any]) -> None
on_span_end
abstractmethod
on_span_end(span: Span[Any]) -> None
关机
abstractmethod
Span
基类: ABC, Generic[TSpanData]
Source code in src/agents/tracing/spans.py
开始
abstractmethod
开始跨度。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
mark_as_current
|
bool
|
如果为true,该span将被标记为当前span。 |
False
|
完成
abstractmethod
完成这个span。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
reset_current
|
bool
|
如果为true,该span将被重置为当前span。 |
False
|
追踪
追踪(trace)是追踪功能创建的根级对象。它代表一个逻辑上的"工作流程"。
Source code in src/agents/tracing/traces.py
开始
abstractmethod
开始追踪。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
mark_as_current
|
bool
|
如果为true,该追踪将被标记为当前追踪。 |
False
|
完成
abstractmethod
完成追踪。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
reset_current
|
bool
|
如果为true,跟踪将被重置为当前跟踪。 |
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]
创建一个新的代理跨度。该跨度不会自动启动,您应该执行with agent_span() ...或手动调用span.start() + span.finish()。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
name
|
str
|
代理的名称。 |
required |
handoffs
|
list[str] | None
|
可选的代理名称列表,该代理可以将控制权移交给这些代理。 |
None
|
tools
|
list[str] | None
|
该代理可选的工具名称列表。 |
None
|
output_type
|
str | None
|
代理生成的输出类型的可选名称。 |
None
|
span_id
|
str | None
|
跨度的ID。可选。如果未提供,我们将生成一个ID。我们建议使用 |
None
|
parent
|
Trace | Span[Any] | None
|
父级跨度或追踪。如果未提供,我们将自动使用当前的追踪/跨度作为父级。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Span但该Span不会被记录。 |
False
|
返回值:
| 类型 | 描述 |
|---|---|
Span[AgentSpanData]
|
新创建的代理范围。 |
Source code in src/agents/tracing/create.py
自定义范围
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),您可以向其添加自己的元数据。该跨度不会自动启动,您应该使用with custom_span() ...语法或手动调用span.start() + span.finish()。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
name
|
str
|
自定义跨度的名称。 |
required |
data
|
dict[str, Any] | None
|
与跨度关联的任意结构化数据。 |
None
|
span_id
|
str | None
|
跨度的ID。可选。如果未提供,我们将生成一个ID。我们建议使用 |
None
|
parent
|
Trace | Span[Any] | None
|
父级span或trace。如果未提供,我们将自动使用当前的trace/span作为父级。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Span但该Span不会被记录。 |
False
|
返回值:
| 类型 | 描述 |
|---|---|
Span[CustomSpanData]
|
新创建的自定义跨度。 |
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]
创建一个新的函数跨度。该跨度不会自动启动,您应该执行with function_span() ...或手动调用span.start() + span.finish()。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
name
|
str
|
函数名称。 |
required |
input
|
str | None
|
函数的输入。 |
None
|
output
|
str | None
|
函数的输出。 |
None
|
span_id
|
str | None
|
跨度的ID。可选。如果未提供,我们将生成一个ID。我们建议使用 |
None
|
parent
|
Trace | Span[Any] | None
|
父级跨度或追踪。如果未提供,我们将自动使用当前的追踪/跨度作为父级。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Span但该Span不会被记录。 |
False
|
返回值:
| 类型 | 描述 |
|---|---|
Span[FunctionSpanData]
|
新创建的函数范围。 |
Source code in src/agents/tracing/create.py
生成范围
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]
创建一个新的生成跨度。该跨度不会自动启动,您应该使用with generation_span() ...语法或手动调用span.start() + span.finish()。
此span捕获模型生成的详细信息,包括输入消息序列、任何生成的输出、模型名称和配置以及使用数据。如果您只需要捕获模型响应标识符,请改用response_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
|
跨度的ID。可选。如果未提供,我们将生成一个ID。我们建议使用 |
None
|
parent
|
Trace | Span[Any] | None
|
父级span或trace。如果未提供,我们将自动使用当前的trace/span作为父级。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Span但该Span不会被记录。 |
False
|
返回值:
| 类型 | 描述 |
|---|---|
Span[GenerationSpanData]
|
新创建的生成跨度。 |
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]
创建一个新的防护栏跨度。该跨度不会自动启动,您应该使用with guardrail_span() ...或手动调用span.start() + span.finish()。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
name
|
str
|
防护栏的名称。 |
required |
triggered
|
bool
|
护栏是否被触发。 |
False
|
span_id
|
str | None
|
跨度的ID。可选。如果未提供,我们将生成一个ID。我们建议使用 |
None
|
parent
|
Trace | Span[Any] | None
|
父级span或trace。如果未提供,我们将自动使用当前的trace/span作为父级。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Span但该Span不会被记录。 |
False
|
Source code in src/agents/tracing/create.py
交接范围
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]
创建一个新的交接跨度。该跨度不会自动启动,您应该执行
with handoff_span() ... 或手动调用 span.start() + span.finish()。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
from_agent
|
str | None
|
正在交接的代理名称。 |
None
|
to_agent
|
str | None
|
接收交接的代理名称。 |
None
|
span_id
|
str | None
|
跨度的ID。可选。如果未提供,我们将生成一个ID。我们建议使用 |
None
|
parent
|
Trace | Span[Any] | None
|
父级span或trace。如果未提供,我们将自动使用当前的trace/span作为父级。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Span但该Span不会被记录。 |
False
|
返回值:
| 类型 | 描述 |
|---|---|
Span[HandoffSpanData]
|
新创建的交接跨度。 |
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列表工具span。该span不会自动启动,您应该使用with mcp_tools_span() ...语法或手动调用span.start() + span.finish()。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
server
|
str | None
|
MCP服务器的名称。 |
None
|
result
|
list[str] | None
|
MCP列表工具调用的结果。 |
None
|
span_id
|
str | None
|
跨度的ID。可选。如果未提供,我们将生成一个ID。我们建议使用 |
None
|
parent
|
Trace | Span[Any] | None
|
父级span或trace。如果未提供,我们将自动使用当前的trace/span作为父级。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Span但该Span不会被记录。 |
False
|
Source code in src/agents/tracing/create.py
响应范围
response_span(
response: Response | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[ResponseSpanData]
创建一个新的响应跨度。该跨度不会自动启动,您应该使用with response_span() ...或手动调用span.start() + span.finish()。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
response
|
Response | None
|
OpenAI响应对象。 |
None
|
span_id
|
str | None
|
跨度的ID。可选。如果未提供,我们将生成一个ID。我们建议使用 |
None
|
parent
|
Trace | Span[Any] | None
|
父级span或trace。如果未提供,我们将自动使用当前的trace/span作为父级。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Span但该Span不会被记录。 |
False
|
Source code in src/agents/tracing/create.py
语音组_span
speech_group_span(
input: str | None = None,
span_id: str | None = None,
parent: Trace | Span[Any] | None = None,
disabled: bool = False,
) -> Span[SpeechGroupSpanData]
创建一个新的语音组跨度。该跨度不会自动启动,您应该执行with speech_group_span() ...或手动调用span.start() + span.finish()。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
input
|
str | None
|
用于语音请求的输入文本。 |
None
|
span_id
|
str | None
|
跨度的ID。可选。如果未提供,我们将生成一个ID。我们建议使用 |
None
|
parent
|
Trace | Span[Any] | None
|
父级span或trace。如果未提供,我们将自动使用当前的trace/span作为父级。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Span但该Span不会被记录。 |
False
|
Source code in src/agents/tracing/create.py
语音片段
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]
创建一个新的语音片段。该片段不会自动开始,您应该使用with speech_span() ...语法或手动调用span.start() + span.finish()。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
model
|
str | None
|
用于文本转语音的模型名称。 |
None
|
input
|
str | None
|
文本转语音的文本输入。 |
None
|
output
|
str | None
|
文本转语音的音频输出,以PCM音频字节的base64编码字符串形式呈现。 |
None
|
output_format
|
str | None
|
音频输出的格式(默认为"pcm")。 |
'pcm'
|
model_config
|
Mapping[str, Any] | None
|
所使用的模型配置(超参数)。 |
None
|
first_content_at
|
str | None
|
音频输出的第一个字节的时间。 |
None
|
span_id
|
str | None
|
跨度的ID。可选。如果未提供,我们将生成一个ID。我们建议使用 |
None
|
parent
|
Trace | Span[Any] | None
|
父级span或trace。如果未提供,我们将自动使用当前的trace/span作为父级。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Span但该Span不会被记录。 |
False
|
Source code in src/agents/tracing/create.py
追踪
trace(
workflow_name: str,
trace_id: str | None = None,
group_id: str | None = None,
metadata: dict[str, Any] | None = None,
disabled: bool = False,
) -> Trace
创建一个新的跟踪。跟踪不会自动启动;您应该将其用作上下文管理器(with trace(...):)或手动调用trace.start() + trace.finish()。
除了工作流名称和可选的分组标识符外,您还可以提供一个任意的元数据字典,用于将额外的用户定义信息附加到跟踪记录中。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
workflow_name
|
str
|
逻辑应用或工作流的名称。例如,对于编码代理可以提供"code_bot",对于客户支持代理可以提供"customer_support_agent"。 |
required |
trace_id
|
str | None
|
追踪ID。可选参数。如果未提供,我们将生成一个ID。建议使用 |
None
|
group_id
|
str | None
|
可选的分组标识符,用于关联来自同一对话或进程的多个跟踪记录。例如,您可以使用聊天线程ID。 |
None
|
metadata
|
dict[str, Any] | None
|
可选的附加元数据字典,用于附加到跟踪记录中。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Trace但不会记录该Trace。如果已存在trace且 |
False
|
返回值:
| 类型 | 描述 |
|---|---|
Trace
|
新创建的跟踪对象。 |
Source code in src/agents/tracing/create.py
转录片段
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]
创建一个新的转录片段。该片段不会自动启动,您应该使用with transcription_span() ...或手动调用span.start() + span.finish()。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
model
|
str | None
|
用于语音转文字的模型名称。 |
None
|
input
|
str | None
|
语音转文字转录的音频输入,作为音频字节的base64编码字符串。 |
None
|
input_format
|
str | None
|
音频输入的格式(默认为"pcm")。 |
'pcm'
|
output
|
str | None
|
语音转文字转录的输出。 |
None
|
model_config
|
Mapping[str, Any] | None
|
所使用的模型配置(超参数)。 |
None
|
span_id
|
str | None
|
跨度的ID。可选。如果未提供,我们将生成一个ID。我们建议使用 |
None
|
parent
|
Trace | Span[Any] | None
|
父级span或trace。如果未提供,我们将自动使用当前的trace/span作为父级。 |
None
|
disabled
|
bool
|
如果为True,我们将返回一个Span但该Span不会被记录。 |
False
|
返回值:
| 类型 | 描述 |
|---|---|
Span[TranscriptionSpanData]
|
新创建的语音转文本范围。 |
Source code in src/agents/tracing/create.py
gen_span_id
gen_trace_id
add_trace_processor
add_trace_processor(
span_processor: TracingProcessor,
) -> None
set_trace_processors
set_trace_processors(
processors: list[TracingProcessor],
) -> None