推荐阅读:阅读追踪概念指南可能有助于熟悉本页提及的概念。
- 进行重点调查:快速缩小到特定运行进行即席分析
- 调试和分析:识别和检查错误、失败的运行和性能瓶颈
创建和应用过滤器
按运行属性过滤
在追踪项目中过滤运行有两种方式- 过滤器:位于追踪项目页面的左上方。您可以在此处构建和管理详细的过滤条件。

- 过滤器快捷方式:位于追踪项目页面的右侧边栏。过滤器快捷方式栏提供了根据项目中运行中最常出现的属性快速访问过滤器的方法。

默认过滤器默认情况下,应用了
IsTrace为true的过滤器。这只显示顶级追踪。移除此过滤器将显示项目中所有运行,包括中间跨度。按时间范围过滤
除了按运行属性过滤外,您还可以按特定时间范围过滤运行。此选项位于追踪项目页面的左上方。
过滤器运算符
可用的过滤器运算符取决于您正在过滤的属性的数据类型。以下是常用运算符的概述- 是:与过滤器值完全匹配
- 不是:与过滤器值不匹配
- 包含:与过滤器值部分匹配
- 不包含:与过滤器值不部分匹配
- 是其中之一:与列表中任何值匹配
>/<:适用于数值字段
特定过滤技术
过滤中间运行(跨度)
为了过滤中间运行(跨度),您首先需要移除默认的IsTrace为true的过滤器。例如,如果您想按子运行的运行名称或按运行类型过滤,您会这样做。 运行元数据和标签也是强大的过滤条件。这些依赖于管道所有部分的良好标记。要了解更多信息,您可以查看此指南。根据输入和输出进行过滤
您可以根据运行的输入和输出内容过滤运行。 要过滤输入或输出,您可以使用全文搜索过滤器,它将匹配任一字段中的关键词。对于更有针对性的搜索,您可以使用输入或输出过滤器,它们将仅根据各自字段匹配内容。为了性能,我们为全文搜索索引最多250个字符的数据。如果您的搜索查询超过此限制,我们建议使用输入/输出键值搜索。

python和tensorflow,并在输入中搜索embedding,在输出中搜索fine和tune。根据输入/输出键值对进行过滤
除了全文搜索,您还可以根据输入和输出中的特定键值对过滤运行。这允许更精确的过滤,尤其是在处理结构化数据时。我们最多索引100个唯一键,以保持您的数据井然有序且可搜索。每个键的值的字符限制为250个。如果您的数据超过任一限制,文本将不会被索引。这有助于我们确保快速、可靠的性能。
输入键或输出键过滤器。 例如,要匹配以下输入:过滤器,添加过滤器以调出过滤选项。然后选择输入键,输入input作为键,输入What is the capital of France?作为值。 
输出键,输入documents.page_content作为键,输入The capital of France is Paris作为值。这将匹配具有指定值的嵌套键documents.page_content。 
过滤器快捷方式来快速过滤常见的键值对,如下所示: 
示例:过滤工具调用
通常需要搜索包含特定工具调用的追踪。工具调用通常在LLM运行的输出中指示。要过滤工具调用,您将使用输出键过滤器。 虽然此示例将向您展示如何过滤工具调用,但相同的逻辑可以应用于过滤输出中的任何键值对。 在这种情况下,假设这是您要过滤的输出:| 键 | 值 |
|---|---|
generations.type | ChatGeneration |
generations.message.type | constructor |
generations.message.kwargs.type | ai |
generations.message.kwargs.id | run-ca7f7531-f4de-4790-9c3e-960be7f8b109 |
generations.message.kwargs.tool_calls.name | Plan |
generations.message.kwargs.tool_calls.args.steps | 研究LangGraph的节点配置能力 |
generations.message.kwargs.tool_calls.args.steps | 调查如何添加Python代码执行节点 |
generations.message.kwargs.tool_calls.args.steps | 查找代码执行节点的示例或创建示例实现 |
generations.message.kwargs.tool_calls.id | toolu_01XexPzAVknT3gRmUB5PK5BP |
generations.message.kwargs.tool_calls.type | tool_call |
type | LLMResult |
generations.message.kwargs.tool_calls.name = Plan 这将匹配tool_calls名称为Plan的根运行和非根运行。 
键值对的负面过滤
不同类型的负向过滤可以应用于元数据、输入键和输出键字段,以从结果中排除特定运行。 例如,要查找所有元数据键phone不等于1234567890的运行,请将元数据的键操作符设置为is,将键字段设置为phone,然后将值操作符设置为is not,将值字段设置为1234567890。这将匹配所有元数据键phone的值除1234567890之外的运行。 
键操作符设置为is not。例如,将键操作符设置为is not,并将键设置为phone,将匹配所有元数据中不具有phone字段的运行。 
phone键但其他键的值为1234567890的运行,请将键操作符设置为is not,键设置为phone,并将值操作符设置为is,值设置为1234567890。 
phone键但其他键的值为1234567890的运行,请将键操作符设置为is not,键设置为phone,并将值操作符设置为is,值设置为1234567890。 
does not contain操作符代替is not来执行子字符串匹配。保存过滤器
保存过滤器允许您存储和重用常用的过滤器配置。保存的过滤器特定于一个追踪项目。保存过滤器
在过滤器框中,构建好过滤器后,点击保存过滤器按钮。这将弹出一个对话框,让您指定过滤器的名称和描述。
使用已保存的过滤器
保存过滤器后,它将作为快速过滤器在过滤器栏中供您使用。如果您有三个以上已保存的过滤器,则只直接显示两个,其余的可通过“更多”菜单访问。您可以使用已保存过滤器栏中的设置图标选择性地隐藏默认已保存过滤器。
更新已保存的过滤器
选中过滤器后,对过滤器参数进行任何更改。然后点击更新过滤器 > 更新以更新过滤器。 在同一菜单中,您还可以通过点击更新过滤器 > 创建新来创建新的已保存过滤器。删除已保存的过滤器
点击已保存过滤器栏中的设置图标,然后使用垃圾桶图标删除过滤器。复制过滤器
您可以复制已构建的过滤器,以便与同事共享、以后重复使用或在API或SDK中以编程方式查询运行。 要复制过滤器,您可以先在UI中创建它。然后,您可以点击右上角的复制按钮。如果您已构建树或追踪过滤器,您也可以复制它们。 这将为您提供一个代表LangSmith查询语言中过滤器的字符串。例如:and(eq(is_root, true), and(eq(feedback_key, "user_score"), eq(feedback_score, 1)))。有关查询语言语法的更多信息,请参阅此参考。 
在追踪视图中过滤运行
您还可以在追踪视图中直接应用过滤器,这对于筛选大量运行的追踪非常有用。主运行表视图中可用的相同过滤器也可以在此处应用。 默认情况下,只显示匹配过滤器的运行。要在更广泛的追踪树上下文中查看匹配的运行,请将视图选项从“仅过滤”切换到“显示全部”或“最相关”。
在LangSmith查询语言中手动指定原始查询
如果您复制了先前构建的过滤器,您可能希望在将来的会话中手动应用此原始查询。 为此,您可以点击过滤器弹出窗口底部的高级过滤器。从那里您可以将原始查询粘贴到文本框中。 请注意,这会将该查询添加到现有查询中,而不是覆盖它。
使用AI查询自动生成查询(实验性)
有时,找出要指定的精确查询可能很困难!为了使其更容易,我们添加了AI查询功能。有了它,您可以用自然语言输入要构建的过滤器,它会将其转换为有效的查询。 例如:“所有超过10秒的运行” 
高级过滤器
根据根属性过滤中间运行(跨度)
一个常见的概念是过滤属于其根运行具有某些属性的追踪的中间运行。例如,过滤特定类型且其根运行具有正(或负)反馈的中间运行。 为此,首先设置中间运行的过滤器(如上一节所示)。之后,您可以添加另一个过滤规则。然后,您可以点击过滤器底部的高级过滤器链接。这将打开一个新模式,您可以在其中添加追踪过滤器。这些过滤器将应用于您已过滤的单个运行的所有父运行的追踪。 
过滤子运行具有某些属性的运行(跨度)
这与上述情况相反。您可能希望搜索具有特定子运行的运行。例如,这可能是搜索所有具有名称为Foo的子运行的追踪。当Foo不总是被调用,但您想分析调用它的情况时,这非常有用。 为此,您可以点击过滤器底部最下方的高级过滤器链接。这将打开一个新模式,您可以在其中添加树过滤器。这将使您指定的规则应用于您已过滤的单个运行的所有子运行。 
示例:过滤所有包含工具调用过滤器的运行
扩展上述工具调用过滤示例,如果您想过滤所有其树包含工具过滤器调用的运行,您可以使用高级过滤器设置中的树过滤器:
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。