LangSmith 通过捕获 追踪;一个完整的记录,记录请求期间运行的每个步骤,从传入的输入到返回的最终输出。
在本快速入门中,您将为 AI 助手添加追踪功能,并在 LangSmith 中查看结果。
前提条件
在开始之前,请确保您已具备:
- LangSmith 账户:在以下网址注册或登录 smith.langchain.com.
- LangSmith API 密钥:请按照 创建 API 密钥 guide.
- OpenAI API 密钥:从 OpenAI 仪表板.
本示例使用 OpenAI 作为 LLM 提供商。您可以将其适配为您自己的提供商。
1. 设置您的环境
- 创建一个项目目录,安装依赖项,并配置所需的环境变量:
mkdir ls-quickstart && cd ls-quickstart
python -m venv .venv && source .venv/bin/activate
pip install -U langsmith openai
mkdir ls-quickstart-ts && cd ls-quickstart-ts
npm init -y
npm install langsmith openai
npm install -D typescript tsx
implementation("com.langchain.smith:langsmith-java:0.1.0-alpha.28")
- 在您的 shell 中导出您的环境变量:
如果您使用的是 Anthropic,请使用 Anthropic 包装器。如果您使用的是 Google Gemini,请使用 Gemini 包装器。对于其他提供商,请使用 @traceable 装饰器 手动追踪调用。
2. 构建应用
以下应用使用两个 LangSmith 工具来添加追踪功能:
- OpenAI 包装器:包装 OpenAI 客户端,以便将每个 LLM 调用自动记录为嵌套 span。
- Traceable 包装器:包装函数,以便将其输入、输出和任何嵌套 span 显示为 LangSmith 中的单个追踪。使用
@traceable在 Python 中,使用traceable在 TypeScript 和 Kotlin 中,以及Tracing.traceFunction在 Java 中。
该 assistant 函数调用一个工具(get_context)来检索相关上下文,然后将该上下文传递给模型。在这两个函数上使用 traceable 包装器可以将整个管道捕获在一个追踪中,工具调用和 LLM 调用作为嵌套 span。
创建一个名为 app.py, index.ts, App.java, or App.kt 的文件,并添加以下代码:
from openai import OpenAI
from langsmith.wrappers import wrap_openai
from langsmith import traceable
client = wrap_openai(OpenAI()) # log every OpenAI call automatically
@traceable(run_type="tool") # trace this as a tool span
def get_context(question: str) -> str:
# In a real app, this would query a knowledge base or vector store
return "LangSmith traces are stored for 14 days on the Developer plan."
@traceable # capture the full pipeline as a single trace
def assistant(question: str) -> str:
context = get_context(question)
response = client.chat.completions.create(
model="gpt-5.4-mini",
messages=[
{
"role": "system",
"content": f"Answer using the context below.\n\nContext: {context}",
},
{"role": "user", "content": question},
],
)
return response.choices[0].message.content
if __name__ == "__main__":
print(assistant("How long are LangSmith traces stored?"))
const client = wrapOpenAI(new OpenAI()); // log every OpenAI call automatically
const getContext = traceable(
async function getContext(question: string): Promise<string> { // trace this as a tool span
// In a real app, this would query a knowledge base or vector store
return "LangSmith traces are stored for 14 days on the Developer plan.";
},
{ run_type: "tool" }
);
const assistant = traceable(async function assistant(question: string) { // capture the full pipeline as a single trace
const context = await getContext(question);
const response = await client.chat.completions.create({
model: "gpt-5.4-mini",
messages: [
{
role: "system",
content: `Answer using the context below.\n\nContext: ${context}`,
},
{ role: "user", content: question },
],
});
return response.choices[0]?.message?.content ?? null;
});
(async () => {
console.log(await assistant("How long are LangSmith traces stored?"));
})();
3. 运行应用
python app.py
npx tsx index.ts
./gradlew run
4. 查看您的追踪记录
在 LangSmith UI, go to **追踪** 中选择您的 **默认** 项目。点击 assistant 行以打开追踪记录。 **消息** 选项卡显示了发送给模型的对话内容。选择 **详情** 选项卡可查看完整的运行树,包括 assistant 函数及其内部的 get_context 工具调用和嵌套在其中的 OpenAI 调用。
外部跨度捕获了您的 assistant 函数的输入和输出。嵌套的 **get_context** 跨度记录了工具调用,而 **ChatOpenAI** 跨度记录了发送给模型的精确提示词和返回的响应。