英文文档原文详见 OpenAI Agents SDK
https://openai.github.io/openai-agents-python/
本文是OpenAI-agents-sdk-python使用翻译软件翻译后的中文文档/教程。分多个帖子发布,帖子的目录如下:
(2)OpenAI agents sdk, agents,运行agents,结果,流,工具,交接
(3) OpenAi agents sdk, 跟踪,上下文管理,护栏
目录
跟踪
代理 SDK 包括内置跟踪功能,可收集代理运行期间事件的全面记录:LLM 生成、工具调用、切换、防护机制,甚至发生的自定义事件。使用 Traces 控制面板,您可以在开发和生产期间调试、可视化和监控您的工作流程。
注意
默认情况下,跟踪处于启用状态。有两种方法可以禁用跟踪:
- 您可以通过设置 env var
OPENAI_AGENTS_DISABLE_TRACING=1 - 您可以通过将 agents.run.RunConfig.tracing_disabled 设置为
True
跟踪和跨度
- 跟踪表示 “workflow” 的单个端到端作。它们由 Span 组成。跟踪具有以下属性:
workflow_name:这是逻辑工作流或应用程序。例如,“代码生成”或“客户服务”。trace_id:跟踪的唯一 ID。如果您未传递 1 个,则自动生成。必须具有格式 .trace_<32_alphanumeric>group_id:可选的组 ID,用于链接来自同一对话的多个跟踪。例如,您可以使用聊天会话 ID。disabled:如果为 True,则不会记录跟踪。metadata:跟踪的可选元数据。
- Span 表示具有开始时间和结束时间的作。Span 具有:
started_at和时间戳。ended_attrace_id来表示它们所属的跟踪parent_id,它指向此 Span 的父 Span(如果有)span_data,这是有关 Span 的信息。例如,包含有关 Agent 的信息,包含有关 LLM 生成的信息,等等。AgentSpanDataGenerationSpanData
默认跟踪
默认情况下,SDK 会跟踪以下内容:
- 整个包裹在一个 .
Runner.{run, run_sync, run_streamed}()trace() - 每次代理运行时,都会将其包装在
agent_span() - LLM 代被包装在
generation_span() - 函数工具调用都包装在
function_span() - 护栏被包裹在
guardrail_span() - Handoff 被包裹在
handoff_span()
默认情况下,跟踪名为 “Agent trace”。如果使用 ,则可以设置此名称,也可以使用 RunConfig 配置名称和其他属性。trace
此外,您还可以设置自定义跟踪处理器以将跟踪推送到其他目标(作为替代目标或辅助目标)。
更高级别的跟踪
有时,您可能希望多个调用成为单个跟踪的一部分。您可以通过将整个代码包装在 .run()trace()
from agents import Agent, Runner, trace
async def main():
agent = Agent(name="Joke generator", instructions="Tell funny jokes.")
with trace("Joke workflow"):
first_result = await Runner.run(agent, "Tell me a joke") second_result = await Runner.run(agent, f"Rate this joke: {
first_result.final_output}") print(f"Joke: {
first_result.final_output}") print(f"Rating: {
second_result.final_output}")
创建跟踪
您可以使用 trace() 函数创建跟踪。需要启动和完成跟踪。您有两种选择:
- 建议:将跟踪用作上下文管理器,即 .这将在正确的时间自动开始和结束跟踪。
with trace(...) as my_trace - 您还可以手动调用 trace.start() 和 trace.finish()。
当前跟踪是通过 Python contextvar 跟踪的。这意味着它会自动使用并发。如果您手动启动/结束跟踪,则需要传递 和 to / 来更新当前跟踪。mark_as_currentreset_currentstart()finish()

最低0.47元/天 解锁文章
5131

被折叠的 条评论
为什么被折叠?



