メインコンテンツにスキップ
OPENAI AGENTS SDK統合

OpenAI Agents SDK統合。

Agents SDKパッケージはなく、必要ありません。関数を@function_toolで装飾し、実際のblockchain0xクライアントを呼び出すと、エージェントはBase上でUSDCを移動できます。

短い回答

OpenAI Agents SDK 専用パッケージはありませんし、必要もありません。SDK は でデコレートされた関数を tool に変換するため、実際の Python client を関数でラップして に追加します。エージェントは USDC を送信し、請求書を決済し、wallet を読み取れます - 単一エージェント、handoffs、基盤の Responses API 全体で利用できます。支払いは Base で決済されます。

OPENAI AGENTS SDKの理由

OpenAIが提供する最もクリーンなツール呼び出しインターフェース。

OpenAI Agents SDK(2025年リリース)は、Responses APIの上にエージェントを構築するためのOpenAIの推奨方法です。ツール登録、メッセージループ、エージェント間のハンドオフに関するボイラープレートを抽象化し、クリーンで型付けされたPythonコードを生成します。今日、OpenAI中心のエージェントプロジェクトを開始し、フレームワークの好みがない場合、これが推奨するSDKです。

レシピは故意に薄く設計されています。send_usdcは@function_toolで装飾された単純な関数です; それをエージェントのツールリストに追加し、ランナーがそれを取得します。特別な設定はなく、追加のラッパーもなく、SDKのフォークもありません。Agents SDKが新しい機能(マルチモーダル入力、音声エージェント)を出荷すると、あなたの関数は標準のツール呼び出し表面に乗っているため、動作し続けます - バージョン固有のものは何も存在しません。

インストール

Agents SDKとコアSDKをインストールします。2つのキー。

追加するblockchain0x Agents SDKパッケージはありません。OpenAI Agents SDK(openai-agentsパッケージ、Python 3.10+)と実際のblockchain0xコアSDKをインストールし、次の関数を書きます。それが全依存関係リストです。

インストール
pip install openai-agents blockchain0x
環境変数
export OPENAI_API_KEY=sk-...
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

OPENAI_API_KEY は既存の OpenAI key です (Agents SDK はこれを基盤の Responses API に使用します)。BLOCKCHAIN0X_API_KEY は dashboard の sk_test_ testnet または sk_live_ mainnet キーで、client は環境変数から読み込みます。agent が受け取る側の支払いもある場合、webhook handler には追加で BLOCKCHAIN0X_WEBHOOK_SECRET が必要です。

レシピ

支払いを行う@function_tool、エージェントに渡されます。

以下は全体の統合です。send_usdcは実際のblockchain0xクライアントを呼び出します;@function_toolはそれをツールに変換し、Runnerが呼び出しを調整します。SDKは型ヒントとドキュメント文字列を読み取ってスキーマを構築するため、正直に保ってください。実行すると、エージェントはBase上でUSDCを移動します。

AGENT.PY
from agents import Agent, Runner, function_tool
from blockchain0x import Client

blockchain0x = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment

@function_tool
def send_usdc(agent_id: str, to: str, amount_wei: str) -> str:
    """Send a USDC payment from an agent wallet.

    amount_wei is USDC base units (6 decimals), so "10000" is 0.01 USDC.
    """
    return str(
        blockchain0x.payments.create(body={"agentId": agent_id, "to": to, "amountWei": amount_wei})
    )

agent = Agent(
    name="treasurer",
    instructions="You pay vendor invoices in USDC within owner-set limits.",
    tools=[send_usdc],
    model="gpt-4o",
)

result = await Runner.run(
    agent,
    input="Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.",
)
print(result.final_output)

When the agent decides to pay, it calls send_usdc, the SDK submits the transfer, and you get a transaction hash back. amount_wei is base units, so 0.01 USDC is "10000". A sk_test_ key keeps it on Base Sepolia until you switch to sk_live_. Add more functions - read a wallet, settle an invoice - the same way; each is another @function_tool in the list.

ウェブフック処理

署名されたウェブフックで受信支払いを確認します。

もしあなたのエージェントがUSDCを受け取る場合、ポーリングではなくWebhookで確認します。verifyヘルパーはNode SDKに含まれています; Pythonサービスでは、文書化されたHMACに対して手動で検証します。これはヘルパーが行うすべてです。以下のFastAPIの例; 同じコードは任意の非同期Pythonフレームワークで動作します。

WEBHOOK.PY
import hmac, hashlib, os, time
from fastapi import FastAPI, Request, HTTPException

app = FastAPI()
SECRET = os.environ["BLOCKCHAIN0X_WEBHOOK_SECRET"].encode()

@app.post("/webhooks/payment")
async def receive(request: Request):
    raw = await request.body()  # RAW bytes - do not parse first
    sig = request.headers.get("X-Blockchain0x-Signature", "")
    ts = request.headers.get("X-Blockchain0x-Timestamp", "")
    parts = dict(p.split("=", 1) for p in sig.split(",") if "=" in p)
    t, v1 = parts.get("t", ts), parts.get("v1", sig)
    want = hmac.new(SECRET, t.encode() + b"." + raw, hashlib.sha256).hexdigest()
    if not hmac.compare_digest(want, v1) or abs(time.time() - int(t)) > 300:
        raise HTTPException(status_code=401)
    if request.headers.get("X-Blockchain0x-Event-Type") == "payment.received":
        await trigger_followup()  # USDC landed - run the next step
    return {"ok": True}

アルゴリズムは、文字列t.rawBodyに対するHMAC-SHA256、定数時間比較、および300秒のリプレイウィンドウです。生のボディをawait request.body()を介して読み取ります。request.json()を再シリアライズしてはいけません。なぜなら、それは署名がカバーするバイトを変更するからです。出荷されたイベントはpayment.received、payment.sent、wallet.deployed、およびwebhook.testです。重いフォローアップ作業の場合は、ジョブをキューに入れ(Celery、arq)、ハンドラーをブロックするのではなく、すぐに200で応答します。

ソースとドキュメント

ラップしているクライアントはオープンです。読んでください。

クローンする Agents SDK の starter package はありません - 上の recipe がそのまま integration です。blockchain0x の SDK は GitHub で open source です。この recipe は Python SDK (blockchain0x-python) をラップしており、完全なメソッド一覧は docs にあります。function body の参考として読んでください。

github.com/tosh-labs/blockchain0x-python

SDK のメソッド一覧とスコープは the docs に記載されています。まずは Base Sepolia で sk_test_ key を使い、関数が想定どおり動いたら sk_live_ に切り替えてください。

一般的な落とし穴

初回の統合で注目すべき5つのこと。

これらは私たちのサポート受信箱からのものです。事前に知っていると、各々1時間を節約します。

PITFALL 1

Agents SDKパッケージはありません - SDKをラップします

Blockchain0xは、LangChainとCrewAI用のアダプタとMCPサーバーを出荷します。専用のOpenAI Agents SDKパッケージはありません。上記のレシピはパスです:プレーンな型付き関数を@function_toolで装飾し、その内部で実際のblockchain0xクライアントを呼び出し、Agent(tools=[...])に追加します。SDKはシグネチャとドキュメンテーション文字列を読み取ってツールスキーマを構築するので、ドキュメンテーション文字列を正確に保ってください。

PITFALL 2

Agents SDKはAssistants APIではありません

OpenAI Agents SDK(openai-agentsパッケージ、agentsとしてインポート)は、古いアシスタントAPIとは異なる製品です。レシピはAgents SDKをターゲットにしています:エージェント + ランナー + Responses API上の@function_tool。client.beta.assistants.create(...)を呼び出している場合、あなたはOpenAIが縮小している古いスレッド/ランモデルにいます - Agents SDKに移行し、上記の関数がそのまま使えます。

PITFALL 3

金額はUSDCの基本単位であり、文字列として表されます

payments.create takes amountWei: a string of USDC base units, not a float. USDC has 6 decimals, so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the function argument as str; a float will lose precision before it reaches the API. Keep it a string end to end.

PITFALL 4

send_paymentは早期に503を返すことがあります

payments.createはデフォルトでは再試行せず、チェーンアダプターがネットワークに接続されるまで503を返すことがあります。関数内でエラーをキャッチし、モデルがアクションを実行できる明確なメッセージを返してください。Runnerがループしないようにします。自動生成された冪等性キーにより、手動での再試行は二重支払いを引き起こしません。

PITFALL 5

非同期専用ランタイム

Agents SDKは非同期ファーストです - await Runner.run(...)。ツール内のblockchain0x呼び出しは同期的であり、単一の迅速な支払いには問題ありませんが、負荷がかかるとループがブロックされます。多くの同時エージェントを実行している場合は、SDK呼び出しをasyncio.to_threadでラップしてください。同期エントリポイントからは、最上位でasyncio.run()を実行します。

よくある質問

OpenAI Agents SDKに関する質問が3つ。

インストールするための専用のOpenAI Agents SDKパッケージはありますか?

いいえ。Agents SDKはすでに@function_toolを使用して装飾された関数をツールに変換しているため、正直な道は実際のblockchain0xクライアントを自分でラップすることです。出荷されたフレームワークパッケージはblockchain0x-langchainとblockchain0x-crewai(両方ともPython)および@blockchain0x/mcpサーバーのみです。Agents SDKは、専用アダプターのない他のフレームワークと同様に、この数行のレシピです。

Agents SDKなしでOpenAI Responses APIを直接使用できますか?

はい。Responses API は Agents SDK が基盤とする tool-calling layer です。client.responses.create() を直接呼ぶなら、同じ function を request の tools list に tool として宣言し、model が要求したら自分で call を dispatch してください - 本体は recipe にある blockchain0x.payments.create の呼び出しだけです。Agents SDK は最も手早い方法です。@function_tool が tool schema と dispatch をまとめて作ってくれるからです。

これはマルチエージェントの引き継ぎで機能しますか?

はい。どの agent が wallet を所有するかはあなたが決めます。きれいなパターンは、payment function を 1 つの対外向け agent に持たせ、実作業は wallet tools を持たない専門 agent に引き継がせることです。spending authority が 1 か所に保たれるため、誤った agent に課金されることはありません。read と settle の function も同じように追加してください - blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle - それぞれを独立した @function_tool にします。

Agents SDKビルドに支払いを追加します。

実際のクライアントをラップするいくつかの行、インストールするパッケージはありません。無料で始められます。