线程的工作原理
你创建的每个运行都可以在其元数据中携带一个thread_id。LangSmith 使用此 ID 将运行分组为线程。后端会在 metadata 中查找 thread_id(如果找不到,则回退到 session_id 或 conversation_id)。
我们建议使用 UUID v7 作为线程 ID。UUIDv7 嵌入了时间戳,这可以保持线程正确的时间顺序。LangSmith SDK 导出了一个 uuid7 辅助函数(Python v0.4.43+,JS v0.3.80+):
- Python:
from langsmith import uuid7 - JS/TS:
import { uuid7 } from 'langsmith'
thread_id:
列出项目中的所有线程
list_threads / listThreads 获取项目中的所有线程,并将它们的运行数据分组在一起。结果按最近活动时间排序。
Output
参数
返回值
一个线程对象列表,每个对象包含:list_threads 始终只返回根运行。如果你需要子运行(例如,工具调用、子链),请改用 read_thread,它接受一个 is_root / isRoot 参数,你可以将其设置为 false。读取单个线程的运行数据
当你已知thread_id 时,使用 read_thread / readThread。它直接返回线程运行数据的迭代器,无需先获取所有线程。
list_threads 不同,这里的每个项目都是一个 Run 对象本身——没有分组包装器。默认情况下,运行按时间升序返回。
Output
参数
返回值
一个Run 对象的迭代器(Python)或异步迭代器(TypeScript)。
示例
按运行属性过滤线程
传递过滤表达式以使用 LangSmith 追踪查询语法缩小结果范围。例如,仅显示包含至少一个失败运行的线程:回溯超过 24 小时
默认情况下,list_threads 仅显示过去一天内有运行的线程。传递 start_time 以扩大时间窗口:
重建对话
使用read_thread 并设置 order="asc" 以逐轮重放对话:
将这些文档通过 MCP 连接到 Claude、VSCode 等,以获取实时答案。

