Messages 视图 目前处于 测试阶段。
- 线程分组:每次运行中的
thread_id告诉 LangSmith,一组运行属于同一个对话。 - 运行分类:在一次轮次的顶级运行上设置
ls_agent_type: "root"会将该运行标记为主对话的一部分。标记为subagent的运行会作为子智能体操作显示在线程中,而标记为middleware或compaction的运行目前会被过滤掉。
支持的集成
以下集成会自动设置thread_id 和 ls_agent_type:
- Claude Code
- Claude Agent SDK
- OpenAI Codex
- Cursor
- Pi
- OpenCode
- GitHub Copilot
- Deep Agents
- LangChain
- LangGraph
- OpenAI Chat Completions (
wrap_openai) - OpenAI Responses API, 单次调用 (
wrap_openai)
previous_response_id)会自动设置 ls_agent_type,但你需要自己设置 thread_id。更多详情,请参阅 链式调用模式下的 OpenAI Responses API 示例。
有关 ls_agent_type 的完整 schema 以及官方集成在非根运行上设置的其他值(subagent、middleware、compaction),请参阅 编码智能体元数据规范。有关底层的线程分组机制,请参阅 配置线程。
链式调用模式下的 OpenAI Responses API
当你通过传递previous_response_id 来链式调用 OpenAI Responses API 时,OpenAI 会在服务器端存储对话状态,而 LangSmith 的包装器没有自然键来将这些调用分组到一个线程中。你需要自己设置 thread_id,可以在每次调用时设置,也可以在包装器初始化时设置。
请为
thread_id 使用 UUID v7。LangSmith 的 SDK 导出了一个 uuid7 辅助函数,并且 UUID v7 按创建时间排序,因此线程在列表视图中能保持顺序。每次调用时设置元数据
在每次调用时设置thread_id。当一个包装好的客户端服务于多个线程时使用此方法(例如,每个进程一个客户端,多个并发对话)。
初始化时设置元数据
在包装客户端时设置一次thread_id。通过此包装器进行的每次调用都会被标记上相同的线程。当一个包装好的客户端在其生命周期内恰好服务于一个线程时使用此方法(例如,每个对话一个工作者)。
隐藏自定义中间件或防护栏
当你围绕 LLM 或工具调用编写自己的防护栏、策略检查或中间件函数时,用@traceable 包装它,并在元数据中设置 ls_agent_type: "middleware"。Messages 视图会将这些运行从主对话中过滤掉。
从 Messages 视图中排除运行
在运行的元数据上设置LS_MESSAGE_VIEW_EXCLUDE 会告诉 Messages 视图跳过该运行。关键在于键是否存在;True 是约定俗成的值。该过滤器在任何提取策略看到追踪记录之前运行,因此被排除的 LLM 或工具运行永远不会影响检测、消息提取或工具调用配对。
LS_MESSAGE_VIEW_EXCLUDE 是一个从 langsmith(Python 和 JS)导出的顶级常量,其值是字符串 "ls_message_view_exclude"。建议使用常量以避免拼写错误;字面量字符串仍然有效。
对于不属于对话轮次的 LLM 子跨度,例如分类调用、嵌入查找、安全过滤器或路由/防护栏决策,可以使用它。你可能仍然希望这些运行在 LangSmith 的其他地方可见,但不希望它们干扰对话记录。
- Python
- TypeScript
1. 在 2. 通过 3. 在正在运行的函数内部:在运行被修补之前的任何时刻,在当前运行树上设置该键。4. 使用 5. LangChain
@traceable 装饰器上:排除整个函数的运行。trace 上下文管理器:排除一个临时跨度。wrap_openai / wrap_anthropic 时每次调用设置:将 langsmith_extra 传递给包装好的客户端调用。RunnableConfig:排除对链或聊天模型的单次调用。注意事项
- 该过滤器检查的是 键是否存在,而不是其真值。
{LS_MESSAGE_VIEW_EXCLUDE: false}仍然会排除该运行。要包含运行,请完全省略该键。 - 在
@traceable(Python)或traceable(JS)父级内执行的子运行,会通过共享的追踪上下文继承排除设置:Python 的_METADATAContextVar和 JS 的AsyncLocalStorage。子级自身的装饰器时元数据会层叠在继承的值之上。 - 被排除的运行仍然会出现在常规追踪视图、运行浏览器和指标中。只有 Messages 视图会将其过滤掉。
手动插桩
如果你使用的是 支持的集成 之外的包装器进行追踪(例如,通过RunTree、REST API 或围绕提供商 SDK 的自定义包装器发出运行),请在每个 LLM 运行的元数据上设置 ls_message_format,以将追踪记录路由到正确的提取器:
相关内容
- 配置线程:
thread_id如何在 LangSmith 中对运行进行分组。 - 编码智能体元数据规范:完整的
ls_agent_typeschema。 - 查看追踪记录:Messages 视图显示的内容以及如何自定义它。
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

