Zum Hauptinhalt springen
OPENAI AGENTS SDK-INTEGRATION

OpenAI Agents SDK-Integration.

Es gibt kein Agents SDK-Paket, und Sie benötigen keines. Dekorieren Sie eine Funktion mit @function_tool, rufen Sie den echten blockchain0x-Client auf, und Ihr Agent kann USDC auf Base bewegen.

KURZE ANTWORT

Es gibt kein OpenAI Agents SDK-Paket, und Sie brauchen auch keines. Das SDK macht mit aus einer dekorierten Funktion ein Tool, also kapseln Sie den echten -Python-Client in eine Funktion und fügen ihn Ihrem hinzu. Der Agent kann USDC senden, Rechnungen begleichen und Wallets lesen - über einzelne Agents, Handoffs und die zugrunde liegende Responses API hinweg. Zahlungen werden auf Base abgewickelt.

WARUM OPENAI AGENTS SDK

Die sauberste Oberfläche für Toolaufrufe, die OpenAI bereitstellt.

Das OpenAI Agents SDK (veröffentlicht 2025) ist OpenAIs empfohlene Methode, um Agenten auf der Responses API aufzubauen. Es abstrahiert den Boilerplate rund um die Toolregistrierung, Nachrichtenloops und Übergaben zwischen Agenten und erzeugt sauberen, typisierten Python-Code. Wenn Sie heute ein OpenAI-zentrisches Agentenprojekt starten und keine Rahmenpräferenzen haben, ist dies das SDK, das wir empfehlen.

Das Rezept ist absichtlich dünn. send_usdc ist eine einfache Funktion, die mit @function_tool dekoriert ist; Sie fügen es der Werkzeugliste eines Agenten hinzu, und der Runner nimmt es auf. Keine spezielle Konfiguration, kein zusätzlicher Wrapper, kein Fork des SDK. Wenn das Agents SDK eine neue Funktion (multi-modale Eingaben, Sprachagenten) veröffentlicht, funktioniert Ihre Funktion weiterhin, da sie auf der standardmäßigen Werkzeugaufrufoberfläche basiert - nichts versionsspezifisches lebt darin.

INSTALLATION

Installieren Sie das Agents SDK und das Kern-SDK. Zwei Schlüssel.

Es gibt kein blockchain0x Agents SDK-Paket hinzuzufügen. Sie installieren das OpenAI Agents SDK (das openai-agents-Paket, Python 3.10+) und das echte blockchain0x-Kern-SDK und schreiben dann die Funktion unten. Das ist die gesamte Abhängigkeitsliste.

INSTALLIEREN
pip install openai-agents blockchain0x
UMGEBUNGSVARIABLEN
export OPENAI_API_KEY=sk-...
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

OPENAI_API_KEY ist Ihr bestehender OpenAI-Schlüssel (das Agents SDK verwendet ihn für die zugrunde liegende Responses API). BLOCKCHAIN0X_API_KEY ist ein sk_test_ Testnet- oder sk_live_ Hauptnetzschlüssel von Ihrem Dashboard; der Client liest ihn aus der Umgebung. Wenn Ihr Agent auch Geld erhält, benötigt der Webhook-Handler zusätzlich BLOCKCHAIN0X_WEBHOOK_SECRET.

DAS REZEPT

Ein @function_tool, das bezahlt, an einen Agenten übergeben.

Unten ist die gesamte Integration. send_usdc ruft den echten blockchain0x-Client auf; @function_tool verwandelt es in ein Tool, und der Runner orchestriert den Aufruf. Das SDK liest die Typ-Hinweise und die Dokumentation, um das Schema zu erstellen, also halten Sie sie ehrlich. Führen Sie es aus, und der Agent bewegt USDC auf Base.

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.

WEBHOOK-VERARBEITUNG

Bestätigen Sie eingehende Zahlungen mit einem signierten Webhook.

Wenn Ihr Agent auch USDC erhält, bestätigen Sie es mit dem Webhook anstelle von Abfragen. Der Verifizierungshelfer wird im Node SDK bereitgestellt; in einem Python-Dienst überprüfen Sie manuell gegen das dokumentierte HMAC, was der Helfer tut. Beispiel für FastAPI unten; derselbe Code funktioniert in jedem asynchronen Python-Framework.

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}

Der Algorithmus ist HMAC-SHA256 über den String t.rawBody, ein konstanter Vergleich und ein 300-Sekunden-Wiederholungsfenster. Lesen Sie den Rohkörper über await request.body(), niemals request.json() re-serialisiert, da dies die Bytes ändert, die die Signatur abdeckt. Die gelieferten Ereignisse sind payment.received, payment.sent, wallet.deployed und webhook.test. Für umfangreiche Nacharbeiten stellen Sie einen Job (Celery, arq) ein und antworten Sie sofort mit 200, anstatt den Handler zu blockieren.

QUELLE UND DOKUMENTE

Der Client, den Sie umwickeln, ist offen. Lesen Sie ihn.

Es gibt kein Agents SDK-Starterpaket zum Klonen - das obige Rezept ist die Integration. Die blockchain0x SDKs sind Open Source auf GitHub; dieses Rezept umschließt das Python SDK (blockchain0x-python) mit der vollständigen Methodenoberfläche in den Dokumenten. Lesen Sie es als Referenz für die Funktionskörper.

github.com/tosh-labs/blockchain0x-python

Die vollständige SDK-Methodenoberfläche und die Scopes sind in den Dokumenten dokumentiert. Beginnen Sie mit einem sk_test_ Schlüssel gegen Base Sepolia und wechseln Sie zu sk_live_, wenn die Funktion das tut, was Sie erwarten.

HÄUFIGE FALLSTRICK

Fünf Dinge, auf die man bei der ersten Integration achten sollte.

Diese stammen aus unserem Support-Posteingang. Wenn Sie sie im Voraus kennen, sparen Sie jeweils eine Stunde.

PITFALL 1

Es gibt kein Agents SDK-Paket - Sie wickeln das SDK ein.

Blockchain0x liefert Adapter für LangChain und CrewAI sowie den MCP-Server; es gibt kein dediziertes OpenAI Agents SDK-Paket. Das obige Rezept ist der Weg: dekorieren Sie eine einfache typisierte Funktion mit @function_tool, rufen Sie den echten blockchain0x-Client darin auf und fügen Sie ihn zu Agent(tools=[...]) hinzu. Das SDK liest die Signatur und den Docstring, um das Tool-Schema zu erstellen, also halten Sie den Docstring genau.

PITFALL 2

Agents SDK ist nicht die Assistants API

Das OpenAI Agents SDK (das openai-agents-Paket, importiert als agents) ist ein anderes Produkt als die ältere Assistants API. Das Rezept zielt auf das Agents SDK ab: Agent + Runner + @function_tool über die Responses API. Wenn Sie client.beta.assistants.create(...) aufrufen, befinden Sie sich im älteren Threads/Runs-Modell, das OpenAI zurückfährt - wechseln Sie zum Agents SDK und die oben genannte Funktion wird direkt übernommen.

PITFALL 3

Beträge sind USDC-Basiseinheiten, als Strings

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 kann frühzeitig 503 zurückgeben

payments.create versucht standardmäßig nicht erneut und kann 503 zurückgeben, bis der Chain-Adapter für Ihr Netzwerk konfiguriert ist. Fangen Sie den Fehler innerhalb Ihrer Funktion ab und geben Sie eine klare Nachricht zurück, auf die das Modell reagieren kann, anstatt den Runner in einer Schleife laufen zu lassen. Der automatisch generierte Idempotency-Key bedeutet, dass ein manueller Retry nicht doppelt zahlt.

PITFALL 5

Nur asynchrone Laufzeit

Das Agents SDK ist asynchron - await Runner.run(...). Der blockchain0x-Aufruf innerhalb Ihres Tools ist synchron, was für eine einzelne schnelle Zahlung in Ordnung ist, aber die Schleife unter Last blockiert. Wenn Sie viele gleichzeitige Agenten ausführen, wickeln Sie den SDK-Aufruf mit asyncio.to_thread ein. Von einem synchronen Einstiegspunkt aus asyncio.run() auf der obersten Ebene.

HÄUFIG GESTELLTE FRAGEN

Drei Fragen zum OpenAI Agents SDK.

Gibt es ein spezielles OpenAI Agents SDK-Paket zu installieren?

Nein. Das Agents SDK verwandelt bereits eine dekorierte Funktion in ein Werkzeug mit @function_tool, daher ist der ehrliche Weg, den echten blockchain0x-Client selbst zu wickeln, wie oben gezeigt. Die einzigen ausgelieferten Framework-Pakete sind blockchain0x-langchain und blockchain0x-crewai (beide Python) sowie der @blockchain0x/mcp-Server. Das Agents SDK, wie die anderen Frameworks ohne einen speziellen Adapter, ist dieses wenige Zeilen umfassende Rezept.

Kann ich dies direkt mit der OpenAI Responses API verwenden, ohne das Agents SDK?

Ja. Die Responses API ist die Werkzeugaufrufschicht, auf der das Agents SDK aufbaut. Wenn Sie client.responses.create() direkt aufrufen, deklarieren Sie dieselbe Funktion als Werkzeug in der Werkzeugliste der Anfrage und leiten den Aufruf selbst weiter, wenn das Modell danach fragt - der Körper ist nur der Aufruf blockchain0x.payments.create aus dem Rezept. Das Agents SDK ist der Weg des geringsten Widerstands, da @function_tool dieses Werkzeug-Schema und die Weiterleitung für Sie erstellt.

Funktioniert das mit Multi-Agenten-Übergaben?

Ja, und Sie entscheiden, welcher Agent die Wallet besitzt. Das saubere Muster besteht darin, die Zahlungsfunktion einem einzigen frontseitigen Agenten zu geben und ihm die tatsächliche Arbeit an Spezialagenten zu übergeben, die keine Wallet-Tools tragen. Die Ausgabenautorisierung bleibt an einem Ort, sodass es keine falschen Agenten gibt, die belastet werden. Fügen Sie die Lese- und Begleichungsfunktionen auf die gleiche Weise hinzu - blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle - jede als ihr eigenes @function_tool.

Fügen Sie Zahlungen zu Ihrem Agents SDK-Build hinzu.

Einige Zeilen, die den echten Client umschließen, kein Paket zu installieren. Kostenlos starten.