Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-weave-caching.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
コードにトレーシングを追加して、Weave で LLM コールを追跡する方法を学びましょう。このクイックスタートでは、OpenAI へのリクエストをトレースし、Weave UI で結果を確認する手順を説明します。
学習内容:
このガイドでは以下の方法を説明します:
- コード内での Weave のインポートと設定
weave.op デコレータを使用したコードの追跡
- Weave UI での Traces の表示
Prerequisites
- A W&B account
- Python 3.8+ or Node.js 18+
- Required packages installed:
- Python:
pip install weave openai
- TypeScript:
npm install weave openai
- An OpenAI API key set as an environment variable
新しいプロジェクトへのトレースのログ記録
コードの追跡を開始し、Weave にトレースをログ記録するには、以下の手順に従います。
weave ライブラリをコードにインポートします。
- コード内で
weave.init('your_wb_team/project_name') を呼び出し、トラッキング情報を W&B の Teams および Projects に送信します。チームを設定しない場合、トレースは デフォルトチーム に送信されます。指定したプロジェクトがチーム内に存在しない場合、Weave が自動的に作成します。
- 追跡したい特定の関数に
@weave.op() デコレータ を追加します。Weave はサポートされている LLM へのコールを自動的に追跡しますが、Weave デコレータを追加することで、特定の関数の入力、出力、およびコードを追跡できるようになります。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を初期化し、データをログ記録するチームとプロジェクトを設定します
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)
// Weaveライブラリをインポートします
import * as weave from 'weave';
import OpenAI from 'openai';
const openai = new OpenAI();
// Weaveはこの関数の入力、出力、およびコードを自動的に追跡します
async function extractDinos(input: string) {
const response = await openai.chat.completions.create({
model: 'gpt-4o',
messages: [
{
role: 'user',
content: `In JSON format extract a list of 'dinosaurs', with their 'name', their 'common_name', and whether its 'diet' is a herbivore or carnivore: ${input}`,
},
],
});
return response.choices[0].message.content;
}
const extractDinosOp = weave.op(extractDinos);
async function main() {
// Weaveを初期化し、データをログ記録するチームとプロジェクトを設定します
await weave.init('your-team/traces-quickstart');
const result = await extractDinosOp(
'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.'
);
console.log(result);
}
main();
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 の Traces パネルでトレースをクリックすると、入力、出力、レイテンシ、トークン使用量などのデータを確認できます。
Traces についての詳細
- 関数のデコレートと呼び出し情報の取得方法 について詳しく学ぶ。
- Playground を試して、ログ記録されたトレースで異なるモデルをテストする。
- インテグレーションを探索する。Weave は、OpenAI、Anthropic、その他多くの LLM ライブラリへのコールを自動的に追跡します。お使いの LLM ライブラリが現在インテグレーションに含まれていない場合でも、
@weave.op() でラップすることで、他の LLM ライブラリやフレームワークへのコールを簡単に追跡できます。
次のステップ
アプリケーションの評価を開始する 方法を確認し、次に RAG アプリケーションを評価する 方法を確認してください。