Tracing mit LangChain-Apps#

Autoren:   Avatar AvatarAuf GitHub öffnen

Die von Prompt Flow bereitgestellte Tracing-Funktion baut auf OpenTelemetry auf, was Ihnen vollständige Beobachtbarkeit über Ihre LLM-Anwendungen ermöglicht. Und es gibt bereits eine reichhaltige Sammlung von OpenTelemetry Instrumentierungspaketen im OpenTelemetry-Ökosystem.

In diesem Beispiel zeigen wir, wie das von Traceloop bereitgestellte Paket opentelemetry-instrumentation-langchain zur Instrumentierung von LangChain-Apps verwendet wird.

Lernziele - Nach Abschluss dieses Tutorials sollten Sie in der Lage sein:

  • Trace LangChain-Anwendungen und visualisieren Sie den Trace Ihrer Anwendung in Prompt Flow.

Anforderungen#

Um dieses Notebook-Beispiel auszuführen, installieren Sie bitte die erforderlichen Abhängigkeiten

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

LangChain mit Promptflow tracen#

Starten Sie das Tracing mit promptflow.start_trace. Klicken Sie auf die ausgegebene URL, um die Trace-Benutzeroberfläche anzuzeigen.

from promptflow.tracing import start_trace

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

Standardmäßig protokolliert die opentelemetry-instrumentation-langchain-Instrumentierung Prompts, Vervollständigungen und Embeddings in Span-Attributen. Dies gibt Ihnen klare Einblicke in die Funktionsweise Ihrer LLM-Anwendung und erleichtert das Debugging und die Bewertung der Ausgabequalität.

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

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

Eine einfache LangChain ausführen#

Im Folgenden finden Sie ein Beispiel, das auf eine AzureOpenAI-Ressource abzielt. Bitte konfigurieren Sie Ihren API_KEY mit einer .env-Datei. Weitere Informationen finden Sie unter ../.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?"})

Sie sollten die Traces der Kette jetzt in der Prompt Flow-Benutzeroberfläche sehen können. Überprüfen Sie die Zelle mit start_trace auf der Trace-Benutzeroberflächen-URL.

Nächste Schritte#

Bis dahin haben Sie LLM-Aufrufe in Ihrer App erfolgreich mit Prompt Flow getraced.

Sie können sich weitere Beispiele ansehen

  • Verfolgen Sie Ihren Flow: Verwenden Sie Promptflow @trace, um Ihre App strukturell zu verfolgen und die Auswertung mit einem Batch-Lauf durchzuführen.