跳到主要内容
可观测性是使用大型语言模型 (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 包装器来追踪您的调用。对于其他提供商,请使用可追踪包装器

3. 定义您的应用程序

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

def retriever(query: str):
    # Minimal example retriever
    return ["Harrison worked at Kensho"]

# OpenAI client call (no wrapping yet)
client = OpenAI()

def rag(question: str) -> str:
    docs = retriever(question)
    system_message = (
        "Answer the user's question using only the provided information below:\n"
        + "\n".join(docs)
    )

    # This call is not traced yet
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": system_message},
            {"role": "user", "content": question},
        ],
    )
    return resp.choices[0].message.content

if __name__ == "__main__":
    print(rag("Where did Harrison work?"))

4. 追踪 LLM 调用

首先,您将追踪所有 OpenAI 调用。LangSmith 提供了包装器 此片段包装了 OpenAI 客户端,因此每个后续模型调用都会自动记录为 LangSmith 中追踪的子运行。
  1. 在您的应用程序文件中包含突出显示的行
    from openai import OpenAI
    from langsmith.wrappers import wrap_openai  # traces openai calls
    
    def retriever(query: str):
        return ["Harrison worked at Kensho"]
    
    client = wrap_openai(OpenAI())  # log traces by wrapping the model calls
    
    def rag(question: str) -> str:
        docs = retriever(question)
        system_message = (
            "Answer the user's question using only the provided information below:\n"
            + "\n".join(docs)
        )
        resp = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[
                {"role": "system", "content": system_message},
                {"role": "user", "content": question},
            ],
        )
        return resp.choices[0].message.content
    
    if __name__ == "__main__":
        print(rag("Where did Harrison work?"))
    
  2. 调用您的应用程序
    python app.py
    
    您将收到以下输出
    Harrison worked at Kensho.
    
  3. LangSmith UI中,导航到工作区的默认追踪项目(或您在步骤 2 中指定的工作区)。您将看到刚刚检测到的 OpenAI 调用。
LangSmith UI showing an LLM call trace called ChatOpenAI with a system and human input followed by an AI Output.

5. 追踪整个应用程序

您还可以使用适用于PythonTypeScripttraceable 装饰器来追踪整个应用程序,而不仅仅是 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())  # keep this to capture the prompt and response from the LLM
    
    @traceable
    def rag(question: str) -> str:
        docs = retriever(question)
        system_message = (
            "Answer the user's question using only the provided information below:\n"
            + "\n".join(docs)
        )
        resp = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[
                {"role": "system", "content": system_message},
                {"role": "user", "content": question},
            ],
        )
        return resp.choices[0].message.content
    
    if __name__ == "__main__":
        print(rag("Where did Harrison work?"))
    
  2. 再次调用应用程序以创建运行
    python app.py
    
  3. 返回到LangSmith UI,导航到工作区的默认追踪项目(或您在步骤 2 中指定的工作区)。您将找到包含 rag 步骤和 ChatOpenAI LLM 调用的整个应用程序管道的追踪。
LangSmith UI showing a trace of the entire application called rag with an input followed by an output.

后续步骤

以下是您可能希望接下来探索的一些主题

视频指南


以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.