以下の内容はhttps://blog.generative-agents.co.jp/entry/2025/12/01/194342より取得しました。


「AIエージェントキャッチアップ #59 - W&B Weave」を開催しました

ジェネラティブエージェンツの大嶋です。

「AIエージェントキャッチアップ #59 - W&B Weave」という勉強会を開催しました。

generative-agents.connpass.com

アーカイブ動画はこちらです。

www.youtube.com

W&B Weave

今回は、LLMアプリケーションのトレースや評価の機能を持つ「W&B Weave」をキャッチアップしました。

W&B Weaveの公式ドキュメントはこちらです。

docs.wandb.ai

今回のポイント

W&B Weaveとは

W&B Weaveは、LLMアプリケーションのトレースや評価などの機能を持つサービスです。 近い立ち位置のサービスとしては、LangSmithやLangfuseがあります。

クラウドまたはプライベートホストプランで利用可能です。 料金の詳細は以下のWebページを参照してください。

wandb.ai

Weaveでのトレースの基本

Weaveをさわる第一歩としてトレース機能を試しました。

uv add weaveでWeaveのクライアントをインストールし、以下のようなコードを実行します。

import weave
from openai import OpenAI

client = OpenAI()

@weave.op()
def extract_dinos(sentence: str) -> dict:
    response = client.chat.completions.create(
        model="gpt-4o",
            :


weave.init("jurassic-park")

result = extract_dinos("...")

すると以下のように、Weaveにトレースが記録されます。

@weave.op()のようにデコレーターをつけた関数に加えて、OpenAIのPythonクライアントやLangChainなどの主要なライブラリの呼び出しが自動的にトレースされるとのことです。

LangChainのトレース

LangChainでのトレースも試しました。 サンプルコードは以下のようになります。

import weave
from langchain.chat_models import init_chat_model
from langchain.messages import HumanMessage, SystemMessage

@weave.op()
def generate_answer(question: str) -> str:
    model = init_chat_model(model="openai:gpt-5-nano", reasoning_effort="low")
    answer = model.invoke(
        [
            SystemMessage(content="You are a helpful assistant."),
            HumanMessage(content=question),
        ],
    )

    reflection = model.invoke(
        [
            SystemMessage(content="回答が正しいかチェックしてください"),
            HumanMessage(content=f"回答: {answer}\n質問: {question}"),
        ],
    )

    return answer.content

weave.init("jurassic-park")
answer = generate_answer("日本の首都は?")

LangChainでのモデルの呼び出しも自動でトレースされています。

ちなみに、Weaveでは実行された関数のコードまで自動で記録されるようです。

このあたりは、Pythonのメタプログラミング的な機能が使われているのかもしれません。

「Model」機能

Weaveの特徴的な機能の1つは「Model」です。

LLMの種類やプロンプトのテンプレートをWeaveの「Model」というオブジェクトにまとめてバージョン管理できます。 プロンプトだけでなくLLMの種類やtemperatureといった設定までバージョン管理できるのは他のプラットフォームではあまり見ない機能です。

Weaveの「Model」は、以下のように定義します。

import weave

class ExtractFruitsModel(weave.Model):
    model_name: str
    prompt_template: str
    temperature: float

    @weave.op()
    async def predict(self, sentence: str) -> dict:
        :

複数のプロンプトを1つの「Model」としてまとめて管理することもできるそうです。

データセット管理

Weaveには評価に関する機能もあります。

以下のようにデータセットを用意してweave.publish(dataset)でWeave上に保存できます。

import weave

examples = [
    {'id': '0', 'sentence': '...', 'target': {'fruit': 'neoskizzles', ...}},
    {'id': '1', 'sentence': '...', 'target': {'fruit': 'pounits', ...}},
    {'id': '2', 'sentence': '...', 'target': {'fruit': 'glowls', ...}},
]

weave.init('intro-example')
dataset = weave.Dataset(name='fruits', rows=examples)
weave.publish(dataset)

このコードは同じ内容で実行しても何も起こりませんが、コード上のデータを変更するとデータセットのバージョンが上がります。 つまり、差分検知による自動バージョニング機能が実装されています。

オフライン評価の実行

Weaveでのオフライン評価の実行も試しました。

以下のようにScorerを実装してweave.Evaluationを使用すると評価を実行できます。

import weave
from weave.scorers import MultiTaskBinaryClassificationF1

@weave.op()
def fruit_name_score(target: dict, output: dict) -> dict:
    return {'correct': target['fruit'] == output['fruit']}

weave.init('intro-example')

evaluation = weave.Evaluation(
    name='fruit_eval',
    dataset=dataset, 
    scorers=[
        MultiTaskBinaryClassificationF1(class_names=["fruit", "color", "flavor"]), 
        fruit_name_score
    ],
)
await evaluation.evaluate(model)

何度か実行すると、評価結果の比較も可能です。 各評価のスコアだけでなく、レイテンシーも可視化されます。

Weaveでは、Evaluation自体もバージョニングされるようになっており、データセットやModelが変わるとEvaluationのバージョンが自動で上がります。 そのため、LLMの種類やプロンプトを変更した際、変更があったことが簡単に分かるようになっています。

このあたりは、実験管理で有名なW&Bらしい機能だと感じました。

次回のご案内

以上、今回は「W&B Weave」をキャッチアップしました。

次回は「AIエージェントキャッチアップ #60 - Microsoft Agent Framework」ということで、Semantic KernelやAutoGenからアイデアをまとめ拡張された「Microsoft Agent Framework」がテーマです!

generative-agents.connpass.com

ご興味・お時間ある方はぜひご参加ください!

また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!




以上の内容はhttps://blog.generative-agents.co.jp/entry/2025/12/01/194342より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14