主题
追踪 OpenAI 兼容提供商
将任何 OpenAI 兼容提供商的 LLM 调用追踪到 LangSmith。
许多 LLM 提供商接受与 OpenAI API 相同格式的请求。要将这些提供商的调用追踪到 LangSmith,请构造一个指向提供商 base URL 的 OpenAI client,然后用 wrap_openai / wrapOpenAI 包装它。
对于直接的 API 调用,使用 wrap_openai / wrapOpenAI。当你需要追踪调用周围的应用程序逻辑或为每次调用设置元数据时,使用 @traceable。
wrap_openai / wrapOpenAI | @traceable / traceable | |
|---|---|---|
| Token 跟踪 | 自动 | 需要 run_type="llm" |
| Run 类型 | LLM(自动设置) | 默认为 Chain |
| 追踪内容 | API 调用 | 包装该调用的函数 |
| 元数据 | 仅客户端级(Python);客户端级或每次调用(TypeScript) | 通过 langsmith_extra 按调用设置 |
NOTE
要直接追踪 OpenAI,请参阅追踪 OpenAI 应用。
设置
bash
pip install langsmith openaibash
npm install langsmith openaibash
export LANGSMITH_API_KEY=<your-api-key>
export LANGSMITH_TRACING=true追踪 API 调用
python
import os
import openai
from langsmith import wrappers
client = wrappers.wrap_openai(
openai.OpenAI(
base_url="https://<provider-base-url>/v1",
api_key=os.environ["PROVIDER_API_KEY"],
)
)
completion = client.chat.completions.create(
model="<provider-model-name>",
messages=[{"role": "user", "content": "Hello!"}],
)
print(completion.choices[0].message.content)typescript
import OpenAI from "openai";
import { wrapOpenAI } from "langsmith/wrappers/openai";
const client = wrapOpenAI(
new OpenAI({
baseURL: "https://<provider-base-url>/v1",
apiKey: process.env.PROVIDER_API_KEY!,
})
);
const completion = await client.chat.completions.create({
model: "<provider-model-name>",
messages: [{ role: "user", content: "Hello!" }],
});
console.log(completion.choices[0].message.content);添加元数据
包装 client 时传入 tracing_extra。该元数据会应用于使用该 client 发起的所有调用。
python
import os
import openai
from langsmith import wrappers
client = wrappers.wrap_openai(
openai.OpenAI(
base_url="https://<provider-base-url>/v1",
api_key=os.environ["PROVIDER_API_KEY"],
),
tracing_extra={"metadata": {"environment": "production"}},
)相关指南
一些提供商有专门的使用 @traceable 或原生回调的设置指南。这些方法在函数级别进行追踪,而不是直接包装 client,或者与提供商自己的 SDK 和路由层集成。
- DeepSeek:OpenAI 兼容 API;指南使用带有自定义提供商元数据的
@traceable - LiteLLM:暴露 OpenAI 兼容端点的代理;指南涵盖
@traceable和 LiteLLM 内置的 LangSmith 回调