deepagents 是一个构建在 LangGraph 之上的开源智能体框架,专为需要规划、工具使用和子智能体委托的复杂、多步骤任务而设计。Deep Agents 支持原生 LangSmith 跟踪。 本指南将向您展示如何为 Deep Agents 启用 LangSmith 跟踪、在 LangSmith 用户界面中查看跟踪记录,并(可选地)为更高级的用例自定义跟踪配置。

安装

在您的 Python 环境中安装 deepagents:
deepagents 需要:
  • Python 3.11+。
  • 一个支持工具调用的 LLM(例如 OpenAI 或 Anthropic 模型)。
  • 用于跟踪时,需要一个 LangSmith 账户和 API 密钥(注册免费)。
您无需安装 langsmith Python 包即可跟踪 Deep Agents。deepagents 构建于 LangGraph 之上,后者包含原生 LangSmith 跟踪支持。只要设置了 LangSmith 环境变量,跟踪数据就会自动发送。只有当您需要以编程方式控制跟踪时(例如,使用 tracing_context、添加自定义元数据或从 Python 查询运行记录),才需要 langsmith 包。

设置

您可以在 LangSmith 用户界面 的 Settings 下找到您的 LangSmith API 密钥和项目名称:

创建跟踪

一旦通过环境变量启用了跟踪,Deep Agents 将自动向 LangSmith 发送跟踪数据。例如:

查看跟踪

详细信息视图

点击跟踪记录,并在右上角切换到 Details 视图。您在 LangSmith 用户界面 中的跟踪树将看起来像这样,具有以下结构:
  • 智能体运行(顶层)代表完整的 Deep Agents 调用。
  • LLM 调用,智能体在此分析用户请求并决定使用哪些工具。
  • 工具运行:compute_compound_interest:
    • 显示工具输入(例如 principal, annual_rate, years 和 compounds_per_year)。
    • 显示结构化输出,包括最终余额和赚取的总利息。
  • LLM 调用,用于解释计算结果并确定下一步。
  • 工具运行:yearly_balance_schedule:
    • 显示用于生成计划的输入。
    • 返回逐年最终余额和赚取利息的明细。
  • 最终的 LLM 响应,为用户总结结果。
生成的跟踪包含多个嵌套跨度,这允许您在 LangSmith 用户界面中跟踪智能体的规划、计算步骤和解释流程。

消息视图

LangSmith 用户界面中的 Messages 视图显示了用户与智能体之间的简化对话历史记录。此视图从顶层跟踪中提取消息(包括用户的初始请求、工具调用和智能体的最终响应),并以类似聊天的格式呈现它们。

按子智能体筛选

Deep Agents 会自动将子智能体的 name 写入该子智能体产生的每个运行记录的 lc_agent_name 元数据键中。使用此功能可以在 LangSmith 中隔离来自特定子智能体的所有运行记录——这对于调试、监控或比较子智能体行为非常有用。 在 LangSmith 用户界面中筛选:
  1. 在 LangSmith 中打开您的跟踪项目。
  2. 将视图切换到 Runs 以查看各个跨度。
  3. 点击 Add filter 并选择 Metadata。
  4. 将 Key 设置为 lc_agent_name,将 Value 设置为子智能体名称,例如 coordinator。
LangSmith 运行视图,显示对 lc_agent_name 设置为 coordinator 的元数据筛选器 将筛选器保存为命名视图以便快速重用。有关筛选选项的完整参考,请参阅筛选跟踪记录。 使用 SDK 以编程方式筛选:
有关筛选查询语言的完整参考,请参阅跟踪查询语法。

自定义 LangSmith 跟踪

默认情况下,当通过环境变量启用 LangSmith 跟踪时,Deep Agents 的跟踪数据会自动发送。您可以直接使用 LangSmith SDK 来自定义您的跟踪,例如将跟踪范围限定在代码的某部分、附加标签或元数据,或者覆盖项目名称。 如果您想要执行以下操作,请安装并使用 langsmith:
  • 仅跟踪特定的智能体调用。
  • 添加自定义标签或元数据以在用户界面中进行筛选。
  • 在运行时覆盖项目名称。
此示例调用了相同的 deep agent 两次:
  • 第一次调用未被跟踪,因为它运行在 tracing_context 之外。
  • 第二次调用被跟踪,因为它运行在 tracing_context(enabled=True, ...) 内部。
您可以有选择地仅跟踪工作流的一部分,而无需使用 LANGSMITH_TRACING=true 为整个进程启用全局跟踪:
tracing_context 块启用了跟踪,并配置了跟踪数据在 LangSmith 中的记录和组织方式:
  • enabled=True 为该代码块的持续时间显式启用跟踪,即使 LANGSMITH_TRACING 未设置或设置为 false。
  • project_name="deepagents-demo" 将此代码块的跟踪数据路由到指定的 LangSmith 项目。这会覆盖在上下文中创建的运行记录的 LANGSMITH_PROJECT。
  • tags=[...] 将标签附加到被跟踪的运行记录上。标签 会出现在 LangSmith 用户界面 中,您可以使用它们来筛选和分组跟踪记录。
  • metadata={...} 附加任意的结构化元数据(例如环境、实验名称或功能标志)。
在此示例中,智能体被调用了两次,但只有在 tracing_context 内的调用被记录下来。这演示了如何在不为整个进程启用全局跟踪的情况下,有选择地跟踪 Deep Agents 工作流的特定部分。