使用 LangChain 应用程序进行跟踪#

作者:  头像 头像在 GitHub 上打开

Prompt flow 提供的跟踪功能基于 OpenTelemetry 构建,可让您全面观察您的 LLM 应用程序。并且 OpenTelemetry 生态系统中已经有一套丰富的 OpenTelemetry 检测包可用。

在此示例中,我们将演示如何使用 Traceloop 提供的 opentelemetry-instrumentation-langchain 包来检测 LangChain 应用程序。

学习目标 - 完成本教程后,您应该能够

  • 跟踪 LangChain 应用程序并在 prompt flow 中可视化您的应用程序的跟踪。

要求#

要运行此笔记本示例,请安装所需的依赖项

%%capture --no-stderr
%pip install -r ./requirements.txt

使用 promptflow 开始跟踪 LangChain#

使用 promptflow.start_trace 开始跟踪,单击打印的 URL 以查看跟踪 UI。

from promptflow.tracing import start_trace

# start a trace session, and print a url for user to check trace
start_trace()

默认情况下,opentelemetry-instrumentation-langchain 检测将提示、完成和嵌入记录到 span 属性中。这使您可以清楚地了解您的 LLM 应用程序是如何工作的,并且可以轻松地调试和评估输出的质量。

# enable langchain instrumentation
from opentelemetry.instrumentation.langchain import LangchainInstrumentor

instrumentor = LangchainInstrumentor()
if not instrumentor.is_instrumented_by_opentelemetry:
    instrumentor.instrument()

运行一个简单的 LangChain#

以下是一个针对 AzureOpenAI 资源的示例。请使用 .env 文件配置您的 API_KEY,请参阅 ../.env.example

import os

from langchain.chat_models import AzureChatOpenAI
from langchain.prompts.chat import ChatPromptTemplate
from langchain.chains import LLMChain
from dotenv import load_dotenv

if "AZURE_OPENAI_API_KEY" not in os.environ:
    # load environment variables from .env file
    load_dotenv()

llm = AzureChatOpenAI(
    deployment_name=os.environ["CHAT_DEPLOYMENT_NAME"],
    openai_api_key=os.environ["AZURE_OPENAI_API_KEY"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    openai_api_type="azure",
    openai_api_version="2023-07-01-preview",
    temperature=0,
)

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "You are world class technical documentation writer."),
        ("user", "{input}"),
    ]
)

chain = LLMChain(llm=llm, prompt=prompt, output_key="metrics")
chain({"input": "What is ChatGPT?"})

您现在应该能够在 promptflow UI 中看到链的跟踪。在带有 start_trace 的单元格中检查跟踪 UI URL。

后续步骤#

至此,您已成功使用 prompt flow 跟踪应用程序中的 LLM 调用。

您可以查看更多示例

  • 追踪您的流:使用 promptflow @trace 以结构化方式追踪您的应用程序,并使用批处理运行对其进行评估。