OpenAI Agents SDK 中文文档 中文教程 (3)

 英文文档原文详见 OpenAI Agents SDKhttps://openai.github.io/openai-agents-python/

本文是OpenAI-agents-sdk-python使用翻译软件翻译后的中文文档/教程。分多个帖子发布,帖子的目录如下:

(1) OpenAI 代理 SDK, 介绍及快速入门

(2)OpenAI agents sdk, agents,运行agents,结果,流,工具,交接 

(3) OpenAi agents sdk, 跟踪,上下文管理,护栏


目录

跟踪

跟踪和跨度

默认跟踪

更高级别的跟踪

创建跟踪

创建 Span

敏感数据

自定义跟踪处理器

上下文管理

本地上下文

代理/LLM 上下文

护栏

输入护栏

输出护栏

绊线

实施护栏


跟踪

代理 SDK 包括内置跟踪功能,可收集代理运行期间事件的全面记录:LLM 生成、工具调用、切换、防护机制,甚至发生的自定义事件。使用 Traces 控制面板,您可以在开发和生产期间调试、可视化和监控您的工作流程。

注意

默认情况下,跟踪处于启用状态。有两种方法可以禁用跟踪:

  1. 您可以通过设置 env varOPENAI_AGENTS_DISABLE_TRACING=1
  2. 您可以通过将 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_at
    • trace_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() 函数创建跟踪。需要启动和完成跟踪。您有两种选择:

  1. 建议:将跟踪用作上下文管理器,即 .这将在正确的时间自动开始和结束跟踪。with trace(...) as my_trace
  2. 您还可以手动调用 trace.start() 和 trace.finish()。

当前跟踪是通过 Python contextvar 跟踪的。这意味着它会自动使用并发。如果您手动启动/结束跟踪,则需要传递 和 to / 来更新当前跟踪。mark_as_currentreset_currentstart()finish()

创建 Span

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值