Skip to main content
对于使用大型语言模型(LLM)构建的应用程序来说,可观测性 是一个关键需求。LLM 具有非确定性,这意味着相同的提示可能产生不同的响应。这种行为使得调试和监控比传统软件更具挑战性。 LangSmith 通过提供应用程序处理请求的端到端可见性来解决这个问题。每个请求都会生成一个 追踪,它捕获了所发生事件的完整记录。追踪中包含了个别的 运行,即您的应用程序执行的具体操作,例如 LLM 调用或检索步骤。追踪运行允许您检查、调试和验证应用程序的行为。 在这个快速入门中,您将设置一个最小的 检索增强生成(RAG) 应用程序,并使用 LangSmith 添加追踪功能。您将:
  1. 配置您的环境。
  2. 创建一个能够检索上下文并调用 LLM 的应用程序。
  3. 启用追踪以捕获检索步骤和 LLM 调用。
  4. 在 LangSmith UI 中查看生成的追踪。

先决条件

开始之前,请确保您拥有: 本快速入门中的示例应用程序将使用 OpenAI 作为 LLM 提供商。您可以针对您应用程序的 LLM 提供商调整此示例。
如果您正在使用 LangChainLangGraph 构建应用程序,您可以通过单个环境变量启用 LangSmith 追踪。请阅读 使用 LangChain 追踪使用 LangGraph 追踪 指南开始使用。

1. 创建目录并安装依赖项

在终端中,为您的项目创建一个目录并在您的环境中安装依赖项:
mkdir ls-observability-quickstart && cd ls-observability-quickstart
python -m venv .venv && source .venv/bin/activate
python -m pip install --upgrade pip
pip install -U langsmith openai

2. 设置环境变量

设置以下环境变量:
  • LANGSMITH_TRACING
  • LANGSMITH_API_KEY
  • OPENAI_API_KEY(或您的 LLM 提供商的 API 密钥)
  • (可选)LANGSMITH_WORKSPACE_ID:如果您的 LangSmith API 密钥关联到多个工作空间,请设置此变量以指定要使用的工作空间。
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY="<your-langsmith-api-key>"
export OPENAI_API_KEY="<your-openai-api-key>"
export LANGSMITH_WORKSPACE_ID="<your-workspace-id>"
如果您使用 Anthropic,请使用 Anthropic 包装器 来追踪您的调用。对于其他提供商,请使用 可追踪包装器
To send traces to a specific project, use the LANGSMITH_PROJECT environment variable. If this is not set, LangSmith will create a default tracing project automatically on trace ingestion.

3. 定义您的应用程序

您可以使用此步骤中概述的示例应用程序代码来对一个 RAG 应用程序进行插桩。或者,您可以使用包含 LLM 调用的自己的应用程序代码。 这是一个最小的 RAG 应用程序,它直接使用 OpenAI SDK,尚未添加任何 LangSmith 追踪功能。它包含三个主要部分:
  • 检索器函数:模拟文档检索,始终返回相同的字符串。
  • OpenAI 客户端:实例化一个普通的 OpenAI 客户端以发送聊天补全请求。
  • RAG 函数:将检索到的文档与用户的问题结合以形成系统提示,使用 gpt-4.1-mini 调用 chat.completions.create() 端点,并返回助手的响应。
将以下代码添加到您的应用程序文件中(例如 app.pyapp.ts):
from openai import OpenAI

def retriever(query: str):
    # 最小示例检索器
    return ["Harrison worked at Kensho"]

# OpenAI 客户端调用(尚未包装)
client = OpenAI()

def rag(question: str) -> str:
    docs = retriever(question)
    system_message = (
        "仅使用下面提供的信息回答用户的问题:\n"
        + "\n".join(docs)
    )

    # 此调用尚未被追踪
    resp = client.chat.completions.create(
        model="gpt-4.1-mini",
        messages=[
            {"role": "system", "content": system_message},
            {"role": "user", "content": question},
        ],
    )
    return resp.choices[0].message.content

if __name__ == "__main__":
    print(rag("Harrison 在哪里工作?"))

4. 追踪 LLM 调用

首先,您将追踪所有 OpenAI 调用。LangSmith 提供了包装器: 此代码片段包装了 OpenAI 客户端,以便每个后续的模型调用都会自动作为追踪的子运行记录到 LangSmith 中。
  1. 在您的应用程序文件中包含高亮显示的行:
    from openai import OpenAI
    from langsmith.wrappers import wrap_openai  # 追踪 openai 调用
    
    def retriever(query: str):
        return ["Harrison worked at Kensho"]
    
    client = wrap_openai(OpenAI())  # 通过包装模型调用来记录追踪
    
    def rag(question: str) -> str:
        docs = retriever(question)
        system_message = (
            "仅使用下面提供的信息回答用户的问题:\n"
            + "\n".join(docs)
        )
        resp = client.chat.completions.create(
            model="gpt-4.1-mini",
            messages=[
                {"role": "system", "content": system_message},
                {"role": "user", "content": question},
            ],
        )
        return resp.choices[0].message.content
    
    if __name__ == "__main__":
        print(rag("Harrison 在哪里工作?"))
    
  2. 调用您的应用程序:
    python app.py
    
    您将收到以下输出:
    Harrison worked at Kensho.
    
  3. LangSmith UI 中,导航到您工作空间的 默认 追踪项目(或您在 步骤 2 中指定的工作空间)。您将看到刚刚插桩的 OpenAI 调用。
LangSmith UI 显示一个名为 ChatOpenAI 的 LLM 调用追踪,包含系统输入和人类输入,后跟 AI 输出。

5. 追踪整个应用程序

您还可以使用 traceable 装饰器(PythonTypeScript)来追踪整个应用程序,而不仅仅是 LLM 调用。
  1. 在您的应用程序文件中包含高亮显示的代码:
    from openai import OpenAI
    from langsmith.wrappers import wrap_openai
    from langsmith import traceable
    
    def retriever(query: str):
        return ["Harrison worked at Kensho"]
    
    client = wrap_openai(OpenAI())  # 保留此项以捕获来自 LLM 的提示和响应
    
    @traceable
    def rag(question: str) -> str:
        docs = retriever(question)
        system_message = (
            "仅使用下面提供的信息回答用户的问题:\n"
            + "\n".join(docs)
        )
        resp = client.chat.completions.create(
            model="gpt-4.1-mini",
            messages=[
                {"role": "system", "content": system_message},
                {"role": "user", "content": question},
            ],
        )
        return resp.choices[0].message.content
    
    if __name__ == "__main__":
        print(rag("Harrison 在哪里工作?"))
    
  2. 再次调用应用程序以创建运行:
    python app.py
    
  3. 返回 LangSmith UI,导航到您工作空间的 默认 追踪项目(或您在 步骤 2 中指定的工作空间)。您将找到整个应用程序管道的追踪,包含 rag 步骤和 ChatOpenAI LLM 调用。
LangSmith UI 显示整个应用程序的追踪,名为 rag,包含输入后跟输出。

后续步骤

以下是您接下来可能想要探索的一些主题:
记录追踪后,使用 Polly 对其进行分析,并获取关于应用程序性能的 AI 驱动洞察。