OpenAI Agents SDK統合。
Agents SDKパッケージはなく、必要ありません。関数を@function_toolで装飾し、実際のblockchain0xクライアントを呼び出すと、エージェントはBase上でUSDCを移動できます。
OpenAI Agents SDK 専用パッケージはありませんし、必要もありません。SDK は でデコレートされた関数を tool に変換するため、実際の Python client を関数でラップして に追加します。エージェントは USDC を送信し、請求書を決済し、wallet を読み取れます - 単一エージェント、handoffs、基盤の Responses API 全体で利用できます。支払いは Base で決済されます。
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 blockchain0xexport 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を移動します。
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フレームワークで動作します。
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-pythonSDK のメソッド一覧とスコープは the docs に記載されています。まずは Base Sepolia で sk_test_ key を使い、関数が想定どおり動いたら sk_live_ に切り替えてください。
初回の統合で注目すべき5つのこと。
これらは私たちのサポート受信箱からのものです。事前に知っていると、各々1時間を節約します。
Agents SDKパッケージはありません - SDKをラップします
Blockchain0xは、LangChainとCrewAI用のアダプタとMCPサーバーを出荷します。専用のOpenAI Agents SDKパッケージはありません。上記のレシピはパスです:プレーンな型付き関数を@function_toolで装飾し、その内部で実際のblockchain0xクライアントを呼び出し、Agent(tools=[...])に追加します。SDKはシグネチャとドキュメンテーション文字列を読み取ってツールスキーマを構築するので、ドキュメンテーション文字列を正確に保ってください。
Agents SDKはAssistants APIではありません
OpenAI Agents SDK(openai-agentsパッケージ、agentsとしてインポート)は、古いアシスタントAPIとは異なる製品です。レシピはAgents SDKをターゲットにしています:エージェント + ランナー + Responses API上の@function_tool。client.beta.assistants.create(...)を呼び出している場合、あなたはOpenAIが縮小している古いスレッド/ランモデルにいます - Agents SDKに移行し、上記の関数がそのまま使えます。
金額は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.
send_paymentは早期に503を返すことがあります
payments.createはデフォルトでは再試行せず、チェーンアダプターがネットワークに接続されるまで503を返すことがあります。関数内でエラーをキャッチし、モデルがアクションを実行できる明確なメッセージを返してください。Runnerがループしないようにします。自動生成された冪等性キーにより、手動での再試行は二重支払いを引き起こしません。
非同期専用ランタイム
Agents SDKは非同期ファーストです - await Runner.run(...)。ツール内のblockchain0x呼び出しは同期的であり、単一の迅速な支払いには問題ありませんが、負荷がかかるとループがブロックされます。多くの同時エージェントを実行している場合は、SDK呼び出しをasyncio.to_threadでラップしてください。同期エントリポイントからは、最上位でasyncio.run()を実行します。