Skip to main content
当您直接调用 LLM,而非通过 LangChain 或 LangSmith 支持的集成 时,需要提供特定的元数据,以便 LangSmith 能够显示 token 计数、计算成本,并允许您在 Playground 中使用正确的提供商和模型打开 运行 一个功能完整的 LLM 追踪有四个要求:
如果您使用 LangChain OSS、OpenAI 包装器Anthropic 包装器,这些细节会自动处理。本页示例使用 traceable 装饰器/包装器(Python 和 JS/TS 的推荐方法)。如果您直接使用 RunTreeAPI,同样的要求也适用。

消息格式

追踪自定义模型或自定义输入/输出格式时,必须遵循 LangChain 格式、OpenAI completions 格式或 Anthropic 消息格式。更多详情,请参阅 OpenAI Chat CompletionsAnthropic Messages 文档。LangChain 格式如下:

将自定义 I/O 格式转换为 LangSmith 兼容格式

如果您使用自定义输入或输出格式,可以使用 @traceable 装饰器(Python)或 traceable 函数(TS)上的 process_inputs/processInputsprocess_outputs/processOutputs 函数将其转换为 LangSmith 兼容格式。 process_inputs/processInputsprocess_outputs/processOutputs 接受函数,允许您在特定追踪的日志记录到 LangSmith 之前转换其输入和输出。它们可以访问追踪的输入和输出,并可以返回包含处理后数据的新字典。 以下是使用 process_inputsprocess_outputs 将自定义 I/O 格式转换为 LangSmith 兼容格式的模板示例:

在追踪中识别自定义模型

使用自定义模型时,建议同时提供以下 metadata 字段,以便在查看追踪和 过滤 时识别模型。
  • ls_provider:模型的提供商,例如 "openai""anthropic"
  • ls_model_name:模型的名称,例如 "gpt-5.4-mini""claude-3-opus-20240229"
如果您实现了自定义流式 chat_model,可以将输出“归约”为与非流式版本相同的格式。这仅在 Python 中受支持:
metadata 中设置 ls_model_name 是 LangSmith 识别模型并计算自定义 LLM 追踪成本所必需的。没有它,token 计数可能仍会被记录,但成本不会被估算。
要了解更多关于如何使用 metadata 字段的信息,请参阅 添加元数据和标签 指南。

提供 token 和成本信息

token 计数支持成本计算,LangSmith 在 追踪项目 UI 中显示。有两种提供方式:
  • 在运行树上设置 usage_metadata:在您的 @traceable 函数内调用 get_current_run_tree() / getCurrentRunTree() 并设置 usage_metadata 字段。这不会改变函数的返回值。
  • 在输出中返回 usage_metadata:在函数返回的字典中包含 usage_metadata 作为顶级键。

支持的 usage_metadata 字段

要直接发送成本(用于非线性定价),您还可以包含 input_costoutput_costtotal_cost 字段。有关配置模型定价和在 UI 中查看成本的详细信息,请参阅 成本追踪 页面。

首个 token 时间

如果您使用 traceable 或 SDK 包装器之一,LangSmith 将自动填充流式 LLM 运行的首个 token 时间。但是,如果您直接使用 RunTree API,则需要向运行树添加 new_token 事件,以便正确填充首个 token 时间。 以下是示例:

相关内容