如果您使用 LangChain OSS、OpenAI 包装器 或 Anthropic 包装器,这些细节会自动处理。本页示例使用
traceable 装饰器/包装器(Python 和 JS/TS 的推荐方法)。如果您直接使用 RunTree 或 API,同样适用这些要求。消息格式
当跟踪自定义模型或自定义输入/输出格式时,必须遵循 LangChain 格式、OpenAI 补全格式或 Anthropic 消息格式。更多详情,请参考 OpenAI 聊天补全 或 Anthropic 消息 文档。LangChain 格式如下:将自定义 I/O 格式转换为 LangSmith 兼容格式
如果您使用自定义输入或输出格式,可以使用@traceable 装饰器(Python)或 traceable 函数(TS)上的 process_inputs/processInputs 和 process_outputs/processOutputs 函数将其转换为 LangSmith 兼容格式。
process_inputs/processInputs 和 process_outputs/processOutputs 接受允许您在特定跟踪的输入和输出被记录到 LangSmith 之前对其进行转换的函数。它们可以访问跟踪的输入和输出,并可以返回包含处理后数据的新字典。
以下是如何使用 process_inputs 和 process_outputs 将自定义 I/O 格式转换为 LangSmith 兼容格式的模板示例:
在跟踪中识别自定义模型
使用自定义模型时,建议同时提供以下metadata 字段,以便在查看跟踪和过滤时识别模型。
ls_provider:模型的提供商,例如 “openai”、“anthropic” 等。ls_model_name:模型的名称,例如 “gpt-4.1-mini”、“claude-3-opus-20240229” 等。

如果
ls_model_name 不在 extra.metadata 中,可能会使用 extra.metadata 中的其他字段来估算令牌计数。以下字段按优先级顺序使用:metadata.ls_model_nameinputs.modelinputs.model_name
metadata 字段的信息,请参阅 添加元数据和标签 指南。
提供令牌和成本信息
令牌计数支持成本计算,并显示在跟踪 UI 中。有两种提供方式:- 在运行树上设置
usage_metadata:在您的@traceable函数内部调用get_current_run_tree()/getCurrentRunTree()并设置usage_metadata字段。这不会改变您函数的返回值。 - 在输出中返回
usage_metadata:在函数返回的字典中包含usage_metadata作为顶级键。
支持的 usage_metadata 字段
要直接发送成本(用于非线性定价),您还可以包含
input_cost、output_cost 和 total_cost 字段。有关配置模型定价和在 UI 中查看成本的详细信息,请参阅 成本跟踪。
首令牌时间
如果您使用traceable 或我们的某个 SDK 包装器,LangSmith 将自动为流式 LLM 运行填充首令牌时间。
但是,如果您直接使用 RunTree API,则需要在运行树上添加 new_token 事件,以便正确填充首令牌时间。
示例如下:
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.


