Weave for Agents はパブリック プレビューです。一般提供前に、機能、API、Agents view UI は変更される可能性があります。
OpenAI Agents SDK は、OpenAI の API 上でエージェントやマルチエージェント ワークフローを構築するための軽量なフレームワークです。Weave は、OpenAI Agents SDK で構築されたエージェントを自動的にトレースし、各エージェントの呼び出し、サブエージェントへのハンドオフ、モデル呼び出し、ツール呼び出しを含むデータを取得します。Weave は、取得したデータを project の Agents ビューに表示します。
Weave TypeScript SDK は、OpenAI Agents SDK の自動パッチ適用をサポートしていません。
OpenAI Agents SDK のエージェントを Weave でトレースする
Weave SDK は OpenAI Agents SDK に自動でパッチを適用するため、最小限の設定でエージェントのトレースを取得できます。このガイドでは、Weave を初期化したうえで、OpenAI Agents SDK で構築したマルチターンのリサーチエージェントを実行し、セッション全体を通じたすべてのエージェント呼び出し、モデル呼び出し、ツール呼び出しを Weave で取得する方法を説明します。
始める前に、以下が揃っていることを確認してください。
スクリプトで Weave と OpenAI Agents SDK を利用できるように、開発環境に次のパッケージをインストールします。
pip install weave openai-agents requests
project に weave.init を追加し、W&B のチーム名と project 名を指定してから、通常どおりエージェントを構築します。次のコードでは、wikipedia_search 関数ツールと Research assistant エージェントを定義し、Weave がトレースを取得しながら、OpenAI Agents SDK の Runner で 3 つの質問を実行します。
import asyncio
import requests
import weave
from agents import Agent, Runner, function_tool
weave.init("<your-team>/<your-project-name>")
@function_tool
def wikipedia_search(query: str) -> str:
"""Search Wikipedia for a topic and return its title and intro paragraph."""
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 f"{page['title']}: {page['extract']}"
agent = Agent(
name="Research assistant",
instructions=(
"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():
history = []
for question in [
"Who founded Anthropic?",
"What is Claude (the AI assistant)?",
"Summarize what we discussed in one sentence.",
]:
history.append({"role": "user", "content": question})
print(f"USER: {question}")
result = await Runner.run(agent, input=history)
print(f"AGENT: {result.final_output}\n")
history = result.to_input_list()
asyncio.run(main())
この例では、1 つの会話内で 3 つのターンを実行します。最初の 2 つのターンでは Wikipedia のルックアップがトリガーされ、3 つ目では、それまでの会話コンテキストを使用して、ツール呼び出し なしで summary を生成します。Runner.run を呼び出すたびに、前回の result の input list を次の request として渡すことで、会話を継続します。
Agents ビューでエージェントのトレースを確認する
スクリプトの実行後、Weave で取得されたアクティビティを確認できます。weave.init() は、実行時に project へのリンクを表示します。次の内容を確認するには、Agents ビューを開きます。
- Agents タブ内にある
Research assistant の行。
- 3 つのターンを含むセッション。
- ネストされたモデルの Call とツールの Call を含む
invoke_agent span として表示される各ターン。
- 各ステップでの完全な入力、モデル、出力、トークン使用量、Wikipedia の結果。
Weave で Agents データを表示する方法の詳細については、エージェントのアクティビティを表示する を参照してください。