以编程方式使用文档

LangSmith 通过捕获 追踪;一个完整的记录,记录请求期间运行的每个步骤,从传入的输入到返回的最终输出。

在本快速入门中,您将为 AI 助手添加追踪功能,并在 LangSmith 中查看结果。

前提条件

在开始之前,请确保您已具备:

本示例使用 OpenAI 作为 LLM 提供商。您可以将其适配为您自己的提供商。

1. 设置您的环境

  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")
    
  1. 在您的 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 调用。

LangSmith UI 显示了一个带有外部应用跨度和一个嵌套 LLM 调用跨度的追踪记录。 LangSmith UI 显示了一个带有外部应用跨度和一个嵌套 LLM 调用跨度的追踪记录。

外部跨度捕获了您的 assistant 函数的输入和输出。嵌套的 **get_context** 跨度记录了工具调用,而 **ChatOpenAI** 跨度记录了发送给模型的精确提示词和返回的响应。

后续步骤