如果您要导出大量跟踪,我们建议您使用批量数据导出功能,因为它可以更好地处理大量数据,并支持跨分区的自动重试和并行化。
list_runs 方法或 API 中的 /runs/query 端点。
LangSmith 以运行(跨度)数据格式中指定的简单格式存储跟踪。
使用过滤器参数
对于简单查询,您不必依赖我们的查询语法。您可以使用过滤器参数参考中指定的过滤器参数。列出项目内所有运行
列出最近 24 小时的 LLM/Chat 运行
列出项目中的根运行
根运行没有父运行,is_root 会被设置为 True,可据此筛选。
列出未报错的运行
按运行 ID 列出
如果手头有 run ID 列表,可以直接查询:使用过滤查询语言
对于更复杂的需求,可以使用过滤查询语言参考中描述的查询语法。列出对话线程中的全部根运行
以下示例展示如何获取单个对话线程内的运行。关于线程设置,请参阅线程使用指南。 将线程 ID 设为共享值即可将运行归为一组。LangSmith UI 支持以下三个元数据键:session_id、conversation_id、thread_id(其中 session ID 也叫 tracing project ID)。下面的查询会匹配任意一个键。
列出名为 “extractor” 且根运行获得 user_score=1 反馈的运行
列出 star_rating 评分大于 4 的运行
列出耗时超过 5 秒的运行
列出 error 不为 null 的运行
列出 start_time 晚于特定时间戳的运行
列出包含字符串 “substring” 的运行
列出带有 git hash “2aa1cf4” 标签的运行
列出在指定时间后开始,且满足 “error 不为 null” 或 “Correctness 反馈为 0” 的运行
复杂示例:标签包含 “experimental”/“beta” 且延迟大于 2 秒
按全文搜索跟踪树
search() 在不指定字段时会在运行的所有字符串字段中执行全文检索,便于快速定位包含某个关键字的跟踪。
检查元数据是否存在
若要判断元数据是否存在,可使用eq 运算符,并可配合 and 指定特定值。这在记录结构化信息时非常实用。
检查元数据中的环境信息
常见做法是把环境信息写入元数据。需要筛选包含环境字段的运行时,可复用上述模式:检查元数据中的 conversation ID
另一种串联同一会话跟踪的方式是共享conversation_id。若需按该 ID 筛选,可在元数据中搜索对应值。
针对键值对的负向过滤
可以对元数据、输入或输出的键值对执行负向过滤,以排除特定运行。以下示例基于元数据,输入/输出同理。组合多个过滤条件
可通过and 配合其他函数组合条件。如下示例同时要求运行名为 “ChatOpenAI” 且元数据包含特定 conversation_id:
树级过滤
列出名称为 “RetrieveDocs”、其根运行的user_score 反馈为 1,且整条跟踪中存在名为 “ExpandQuery” 的运行。
当需要在满足多个状态/步骤的前提下筛选特定运行时,此模式非常有用。
高阶:导出包含子工具信息的扁平化跟踪视图
下面的 Python 示例展示如何导出扁平化的跟踪视图,包含代理在每条跟踪中调用的工具(嵌套运行)。可用于分析代理在多条跟踪中的行为。 示例会在指定时间范围内查询所有工具运行,并按父(根)运行 ID 分组,再获取各根运行的名称、输入、输出等信息,与子运行数据合并。 为优化查询,示例采取了:- 查询工具运行时仅选择必要字段,减少耗时;
- 在处理工具运行的同时分批获取根运行。