Weave for Agents はパブリック プレビューです。一般提供前に、機能、API、Agents view UI は変更される可能性があります。
Google の Agent Development Kit (ADK) は、エージェントの構築とオーケストレーションのための、柔軟でモデル非依存の Python フレームワークです。Gemini 向けに最適化されていますが、ADK はあらゆるモデルをサポートしており、シンプルなタスクから複雑なマルチエージェント ワークフローまで対応します。Weave は、ADK で構築されたエージェントを自動的にトレースし、各エージェント呼び出し、サブエージェントへのハンドオフ、モデルの Call、ツール呼び出しを含むデータを取得します。Weave は、取得したデータを project の Agents ビューに表示します。
Weave で Google ADK エージェントをトレースする
Weave SDK は Google ADK を自動的にパッチするため、最小限の設定で ADK エージェントのトレースを取得できます。このガイドでは、Weave を初期化したうえで、Google ADK で構築したマルチターンのリサーチエージェントを実行し、セッション全体にわたるすべてのエージェント呼び出し、モデルの Call、ツール呼び出しを Weave で取得する方法を説明します。
開発用の環境に、次のパッケージをインストールします。これらのパッケージに、Weave SDK、Google ADK フレームワーク、およびサンプルツールで使用する HTTP クライアントが含まれます。
pip install weave google-adk requests
weave.init をprojectに追加し、W&B のチーム名とproject名を指定してから、通常どおりエージェントを構築します。次のコードでは、gemini-2.5-flash と wikipedia_search ツールを使用する research_assistant エージェントを作成し、Weave でトレースを取得しながら、1 つの ADK セッション内で 3 つの質問を実行します。
import asyncio
import requests
import weave
from google.adk.agents import Agent
from google.adk.runners import InMemoryRunner
from google.genai import types
weave.init("[YOUR-TEAM]/[YOUR-PROJECT-NAME]")
def wikipedia_search(query: str) -> dict:
"""Search Wikipedia for a topic and return its title and intro paragraph.
Args:
query: The topic to search for.
Returns:
A dictionary with the article title and intro extract.
"""
r = requests.get(
"https://en.wikipedia.org/w/api.php",
params={
"action": "query", "generator": "search", "gsrsearch": query, "gsrlimit": 1,
"prop": "extracts", "exintro": True, "explaintext": True, "format": "json",
},
headers={"User-Agent": "weave-demo"},
).json()
page = next(iter(r["query"]["pages"].values()))
return {"title": page["title"], "extract": page["extract"]}
agent = Agent(
name="research_assistant",
model="gemini-2.5-flash",
instruction=(
"You are a research assistant. Use the wikipedia_search tool to look up "
"topics when needed, and cite the article titles you used."
),
tools=[wikipedia_search],
)
async def main():
runner = InMemoryRunner(agent=agent, app_name="research-app")
session = await runner.session_service.create_session(
app_name="research-app", user_id="user-1"
)
questions = [
"Who founded Anthropic?",
"What is Claude (the AI assistant)?",
"Summarize what we discussed in one sentence.",
]
for question in questions:
print(f"USER: {question}")
async for event in runner.run_async(
user_id="user-1",
session_id=session.id,
new_message=types.Content(
role="user",
parts=[types.Part(text=question)],
),
):
if event.is_final_response() and event.content:
print(f"AGENT: {event.content.parts[0].text}\n")
asyncio.run(main())
この例では、1 つの ADK セッション内で 3 つのターンを実行します。最初の 2 つのターンでは Wikipedia のルックアップがトリガーされ、3 つ目のターンではそれまでの会話コンテキストを使用して、ツール呼び出しなしで要約を生成します。
Agents ビューでエージェントのトレースを確認する
スクリプトの実行後、Weave がセッションを取得できていることを確認するために、project の Agents ビューを開いてください。weave.init() は実行時に、project へのリンクを出力します。Agents ビューでは、次の内容を確認します。
- Agents タブに
research_assistant の行があること。
- 3 つのターンを含む 1 つのセッションがあること。
- 各ターンが
invoke_agent span として表示され、その中にモデルの Call とツール呼び出しがネストされていること。
- 各 step で、入力全体、モデル、出力、token 使用量、Wikipedia の結果を確認できること。
Weave で Agents データを表示する方法の詳細については、エージェントのアクティビティを表示するを参照してください。