LLM Observability のセットアップ

選択されたサイト () では、現時点では LLM Observability はご利用いただけません。

概要

LLM Observability へのデータ送信を開始するには、LLM Observability SDK for Python を使用するか、LLM Observability API を呼び出してアプリケーションをインスツルメンテーションします。

LLM アプリケーションのインタラクションとパフォーマンスデータは、LLM Observability Traces ページで視覚化できます。アプリケーションが処理した各リクエストはトレースとして表示されます。

リクエストの各スパンを表示する LLM Observability トレース

トレースの詳細については、用語と概念を参照し、アプリケーションのニーズに最も適したインスツルメンテーションオプションを決定してください。

LLM アプリケーションのインスツルメンテーション

Datadog では、特定の LLM プロバイダライブラリに対する LLM コールをキャプチャするための自動インスツルメンテーションを提供しています。ただし、LLM Observability SDK for Python を使用して LLM アプリケーションを手動でインスツルメンテーションすると、追加の LLM Observability 機能にアクセスできるようになります。

この手順では、LLM Observability SDK for Python を使用します。アプリケーションがサーバーレス環境で実行されている場合は、サーバーレスのセットアップ手順に従ってください。

アプリケーションが Python で記述されていない場合は、SDK 関数呼び出しの代わりに API リクエストを使用して、以下の手順を完了できます。

LLM アプリケーションをインスツルメンテーションするには

  1. LLM Observability SDK for Python をインストールします。
  2. アプリケーションの起動コマンドで必要な環境変数を指定するか、プログラムでコード内で指定して、SDK を構成します。Datadog API キー、Datadog サイト、機械学習 (ML) アプリ名を構成していることを確認してください。

LLM アプリケーションのトレース

LLM アプリケーションをトレースするには

  1. LLM アプリケーションコードでスパンを作成して、アプリケーションの操作を表現します。スパンについての詳細は、用語と概念を参照してください。

    より便利なトレースを作成するためにスパンをネストすることができます。追加の例や詳細な使用方法については、LLM アプリケーションのトレースおよび SDK ドキュメントを参照してください。

  2. 入力データ、出力データ、メタデータ (temperature など)、メトリクス (input_tokens など)、キー値タグ (version:1.0.0 など) をスパンに注釈として追加します。

  3. オプションとして、ユーザーセッションなどの高度なトレース機能を追加します。

  4. LLM アプリケーションを実行します。

    • コマンドラインによるセットアップ方法を使用した場合は、アプリケーションを実行するコマンドに ddtrace-run を使用する必要があります。これは、こちらの指示に記載されています。
    • コード内セットアップ方法を使用した場合は、通常通りアプリケーションを実行します。

生成されたトレースは LLM Observability Traces ページTraces タブで、生成されたメトリクスはすぐに使える LLM Observability Overview ダッシュボードで確認できます。

スパンの作成

スパンを作成するには、LLM Observability SDK では、関数デコレーターを使用する方法と、インラインのコンテキストマネージャーを使用する方法の 2 つのオプションが用意されています。

関数デコレーターを使用する方法が推奨されます。コンテキストマネージャーを使用する方法はより高度で、トレースをより細かく制御できます。

デコレーター
ddtrace.llmobs.decorators.<SPAN_KIND>() を、トレースしたい関数にデコレーターとして使用します。 <SPAN_KIND> を希望するスパン種類に置き換えます。
インライン
ddtrace.llmobs.LLMObs.<SPAN_KIND>() をコンテキストマネージャーとして使用して、任意のインラインコードをトレースします。 <SPAN_KIND> を希望するスパン種類に置き換えます。

以下の例ではワークフロースパンを作成します。

from ddtrace.llmobs.decorators import workflow

@workflow
def extract_data(document):
    ... # LLM を搭載したワークフローにより、ドキュメントから構造データを抽出します
    return
from ddtrace.llmobs import LLMObs

def extract_data(document):
    with LLMObs.workflow(name="extract_data") as span:
        ... # LLM を搭載したワークフローにより、ドキュメントから構造データを抽出します
    return

スパンにアノテーションを付ける

入力、出力、メタデータ、メトリクス、タグなどの追加情報をスパンに追加するには、LLM Observability SDK の LLMObs.annotate() メソッドを使用します。

以下の例では、上記の例で作成したワークフロースパンに注釈を付けています。

from ddtrace.llmobs import LLMObs
from ddtrace.llmobs.decorators import workflow

@workflow
def extract_data(document: str, generate_summary: bool):
    extracted_data = ... # ユーザーアプリケーションロジック
    LLMObs.annotate(
        input_data=document,
        output_data=extracted_data,
        metadata={"generate_summary": generate_summary},
        tags={"env": "dev"},
    )
    return extracted_data
from ddtrace.llmobs import LLMObs

def extract_data(document: str, generate_summary: bool):
    with LLMObs.workflow(name="extract_data") as span:
        ... # ユーザーアプリケーションロジック
        extracted_data = ... # ユーザーアプリケーションロジック
        LLMObs.annotate(
            input_data=document,
            output_data=extracted_data,
            metadata={"generate_summary": generate_summary},
            tags={"env": "dev"},
        )
        return extracted_data

スパンのネスト

現在のスパンが終了する前に新しいスパンを開始すると、2 つのスパン間の親子関係が自動的にトレースされます。親スパンはより大きな操作を表し、子スパンはそれより小さなネストされたサブ操作を表します。

以下の例では、2 つのスパンでトレースを作成しています。

from ddtrace.llmobs.decorators import task, workflow

@workflow
def extract_data(document):
    preprocess_document(document)
    ... # ドキュメントのデータ抽出を行います
    return

@task
def preprocess_document():
    ... # ドキュメントをデータ抽出用に前処理します
    return
from ddtrace.llmobs import LLMObs

def extract_data():
    with LLMObs.workflow(name="extract_data") as workflow_span:
        with LLMObs.task(name="preprocess_document") as task_span:
            ... # ドキュメントをデータ抽出用に前処理します
        ... # ドキュメントのデータ抽出を行います
    return

その他のトレース方法およびトレース機能の詳細については、SDK ドキュメントを参照してください。

高度なトレース

LLM アプリケーションの複雑さに応じて、次のことも可能です。

権限

デフォルトでは、Datadog Read ロールを持つユーザーのみが LLM Observability を表示できます。詳細については、権限ドキュメントを参照してください。

その他の参考資料