メインコンテンツへスキップ
コードにトレースを追加して、Weave で LLM call をトラッキングする方法を学びます。このクイックスタートでは、OpenAI へのリクエストをトレースし、その結果を Weave UI で確認する手順を紹介します。これは、Weave を初めて使い、デバッグやモニタリングのために LLM アプリケーションを計装したい開発者向けです。

このガイドで学べること

このガイドでは、次の方法を説明します:
  • コードに Weave をインポートして設定する。
  • weave.op デコレータ を使用してコードをトラッキングする。
  • Weave UI でトレースを確認する。

前提条件

  • W&Bアカウント
  • Python 3.10+ または Node.js 18+
  • 必要なパッケージがインストールされていること:
    • Python: pip install weave openai
    • TypeScript: npm install weave openai
  • OpenAI APIキー が環境変数として設定されていること。

新しいプロジェクトにトレースをログする

このセクションでは、Weave が入力、出力、コードを記録できるよう、小規模なアプリケーションをインストルメントします。コードのトラッキングを開始し、Weave にトレースをログするには、以下の手順に従ってください。
  1. weave ライブラリをコードにインポートします。
  2. コード内で weave.init('your_wb_team/project_name') を呼び出し、トラッキング情報を W&B のチームおよび project に送信します。チームを指定しない場合、Weave はトレースをデフォルトチームに送信します。指定した project がチームに存在しない場合は、Weave が自動的に作成します。
  3. トラッキングしたい関数に @weave.op() デコレータを追加します。Weave はサポートされる LLM への Call を自動的にトラッキングしますが、このデコレータを使用することで特定の関数の入力、出力、コードをトラッキングできます。TypeScript では weave.op(your_function) という構文を使用します。
以下のサンプルコードは OpenAI にリクエストを送信し (OpenAI APIキーが必要) 、Weave がそのリクエストのトレース情報を記録します。このリクエストでは、入力テキストから恐竜の名前を抽出し、それぞれの食性 (草食または肉食) を識別するよう OpenAI モデルに指示します。 以下のサンプルコードで、Weave を使った最初のプロジェクトをトラッキングします。
# Weave ライブラリをインポートする
import weave
from openai import OpenAI

client = OpenAI()

# Weave はこの関数の入力、出力、コードを自動的にトラッキングする
@weave.op()
def extract_dinos(sentence: str) -> dict:
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {
                "role": "system",
                "content": """In JSON format extract a list of `dinosaurs`, with their `name`,
their `common_name`, and whether its `diet` is a herbivore or carnivore"""
            },
            {
                "role": "user",
                "content": sentence
            }
            ],
            response_format={ "type": "json_object" }
        )
    return response.choices[0].message.content

# Weave を初期化し、データをログするチームと project を設定する
weave.init('your-team/traces-quickstart')

sentence = """I watched as a Tyrannosaurus rex (T. rex) chased after a Triceratops (Trike), \
both carnivore and herbivore locked in an ancient dance. Meanwhile, a gentle giant \
Brachiosaurus (Brachi) calmly munched on treetops, blissfully unaware of the chaos below."""

result = extract_dinos(sentence)
print(result)
extract_dinos 関数を呼び出すと、Weave はトレースを確認するためのリンクをターミナルに出力します。出力は次のようになります。
weave:  $ pip install weave --upgrade
weave: Logged in as Weights & Biases user: example-username.
weave: View Weave data at https://wandb.ai/your-team/traces-quickstart/weave
weave: 🍩 https://wandb.ai/your-team/traces-quickstart/r/call/019ae171-7f32-7c96-8b42-931a32f900b7
{
  "dinosaurs": [
    {
      "name": "Tyrannosaurus rex",
      "common_name": "T. rex",
      "diet": "carnivore"
    },
    {
      "name": "Triceratops",
      "common_name": "Trike",
      "diet": "herbivore"
    },
    {
      "name": "Brachiosaurus",
      "common_name": "Brachi",
      "diet": "herbivore"
    }
  ]
}

プロジェクトでアプリケーションのトレースを確認する

コードによってトレースが生成されたので、Weave UI でその内容を確認できます。ターミナル内のリンクをクリックするか、そのリンクをブラウザに貼り付けて Weave UI を開きます。Weave UI の Traces パネルでトレースをクリックすると、入力、出力、レイテンシ、トークン使用量などのデータを確認できます。 入力、出力、レイテンシ、トークン使用量を含む、extract_dinos 関数のトレースを表示している Weave UI の Traces パネル。 これで、最初の Weave トレースをログして確認できました。

トレース について詳しく学ぶ

  • 関数をデコレートして call 情報を取得する方法を学びます。
  • Playgroundを使って、ログされたトレースに対してさまざまなモデルをテストします。
  • インテグレーションを確認します。Weave は、OpenAI、Anthropic、その他多くの LLM ライブラリへの call を自動的にトラッキングします。お使いの LLM ライブラリが Weave のインテグレーションに含まれていない場合は、@weave.op() でラップすることで、他の LLM ライブラリやフレームワークへの call をトラッキングできます。

次のステップ

まずは アプリの評価を始める を参照し、次に RAG アプリケーションを評価する方法 を確認してください。