Ga naar hoofdinhoud
OPENAI AGENTS SDK INTEGRATIE

OpenAI Agents SDK-integratie.

Er is geen Agents SDK-pakket, en je hebt er geen nodig. Versier een functie met @function_tool, roep de echte blockchain0x-client aan, en jouw agent kan USDC verplaatsen op Base.

KORTE ANTWOORD

Er is geen OpenAI Agents SDK-pakket, en je hebt er ook geen nodig. De SDK maakt van een gedecoreerde functie een tool met , dus wikkel je de echte Python client in een functie en voeg je die toe aan je . De agent kan USDC versturen, facturen afwikkelen en wallets uitlezen - voor losse agents, handoffs en de onderliggende Responses API. Betalingen worden afgerekend op Base.

WAAROM OPENAI AGENTS SDK

Het schoonste tool-aanroepoppervlak dat OpenAI levert.

De OpenAI Agents SDK (uitgebracht in 2025) is de aanbevolen manier van OpenAI om agents bovenop de Responses API te bouwen. Het abstraheert de boilerplate rond toolregistratie, berichtenlussen en overdrachten tussen agents, en het produceert schone, getypte Python-code. Als je vandaag een OpenAI-centrisch agentproject begint en geen voorkeur hebt voor frameworks, is dit de SDK die we aanbevelen.

Het recept is opzettelijk dun. send_usdc is een gewone functie versierd met @function_tool; je voegt het toe aan de tools-lijst van een Agent en de Runner pikt het op. Geen speciale configuratie, geen extra wrapper, geen fork van de SDK. Wanneer de Agents SDK een nieuwe functie verzendt (multi-modale invoer, spraakagenten), blijft jouw functie werken omdat het gebruikmaakt van het standaard tool-aanroepoppervlak - er leeft niets versie-specifiek in.

INSTALLATIE

Installeer de Agents SDK en de kern SDK. Twee sleutels.

Er is geen blockchain0x Agents SDK-pakket om toe te voegen. Je installeert de OpenAI Agents SDK (het openai-agents-pakket, Python 3.10+) en de echte blockchain0x kern SDK, en schrijft dan de functie hieronder. Dat is de hele afhankelijkheidslijst.

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

OPENAI_API_KEY is je bestaande OpenAI-sleutel (de Agents SDK gebruikt die voor de onderliggende Responses API). BLOCKCHAIN0X_API_KEY is een sk_test_ testnet- of sk_live_ mainnet-sleutel uit je dashboard; de client leest die uit de omgeving. Als je agent ook geld ontvangt, heeft de webhook handler daarnaast BLOCKCHAIN0X_WEBHOOK_SECRET nodig.

HET RECEPT

Een @function_tool die betaalt, overhandigd aan een Agent.

Hieronder is de hele integratie. send_usdc roept de echte blockchain0x-client aan; @function_tool verandert het in een hulpmiddel, en de Runner organiseert de oproep. De SDK leest de type hints en docstring om het schema op te bouwen, dus houd ze eerlijk. Voer het uit en de agent verplaatst USDC op 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 AFHANDELING

Bevestig inkomende betalingen met een ondertekende webhook.

Als je agent ook USDC ontvangt, bevestig het dan met de webhook in plaats van te polleren. De verify-helper wordt geleverd in de Node SDK; in een Python-service verifieer je handmatig tegen de gedocumenteerde HMAC, wat is wat de helper doet. Voorbeeld van FastAPI hieronder; dezelfde code werkt in elk asynchroon 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}

Het algoritme is HMAC-SHA256 over de string t.rawBody, een constante tijdsvergelijking, en een replayvenster van 300 seconden. Lees het ruwe lichaam via await request.body(), nooit request.json() opnieuw-serialized, omdat dat de bytes verandert die de handtekening dekt. De verzonden evenementen zijn payment.received, payment.sent, wallet.deployed, en webhook.test. Voor zware vervolgwerkzaamheden, voeg een taak toe (Celery, arq) en reageer onmiddellijk met 200 in plaats van de handler te blokkeren.

BRON EN DOCUMENTEN

De client die je aan het wikkelen bent is open. Lees het.

Er is geen Agents SDK starter package om te klonen - de bovenstaande recipe is de integratie. De blockchain0x SDKs zijn open source op GitHub; deze recipe omhult de Python SDK (blockchain0x-python), met de volledige method surface in de docs. Lees die als referentie voor de function bodies.

github.com/tosh-labs/blockchain0x-python

De volledige SDK method surface en scopes zijn gedocumenteerd in de docs. Begin met een sk_test_ key op Base Sepolia en schakel daarna over naar sk_live_ wanneer de functie doet wat je verwacht.

GEMEENSCHAPPELIJKE VALKUILEN

Vijf dingen om op te letten bij de eerste integratie.

Deze komen uit onze ondersteuningsinbox. Ervan op de hoogte zijn bespaart elk een uur.

PITFALL 1

Er is geen Agents SDK-pakket - je wikkelt de SDK

Blockchain0x levert adapters voor LangChain en CrewAI plus de MCP-server; er is geen speciaal OpenAI Agents SDK-pakket. Het bovenstaande recept is het pad: versier een eenvoudige getypte functie met @function_tool, roep de echte blockchain0x-client aan binnenin, en voeg het toe aan Agent(tools=[...]). De SDK leest de handtekening en docstring om het hulpschema op te bouwen, dus houd de docstring nauwkeurig.

PITFALL 2

Agents SDK is niet de Assistants API

De OpenAI Agents SDK (het openai-agents-pakket, geïmporteerd als agents) is een ander product dan de oudere Assistants API. Het recept richt zich op de Agents SDK: Agent + Runner + @function_tool over de Responses API. Als je client.beta.assistants.create(...) aanroept, ben je op het oudere threads/runs-model dat OpenAI aan het afbouwen is - ga naar de Agents SDK en de functie hierboven valt er rechtstreeks in.

PITFALL 3

Bedragen zijn USDC basis eenheden, 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 kan vroeg 503 beantwoorden

payments.create probeert standaard niet opnieuw en kan 503 retourneren totdat de chain adapter is aangesloten op jouw netwerk. Vang de fout op binnen je functie en retourneer een duidelijk bericht waar het model op kan reageren, in plaats van de Runner te laten draaien. De automatisch geminte idempotency key betekent dat een handmatige herhaling niet dubbel betaalt.

PITFALL 5

Alleen-async runtime

De Agents SDK is async-first - await Runner.run(...). De blockchain0x-aanroep binnen je tool is synchroon, wat prima is voor een enkele snelle betaling, maar de lus blokkeert onder belasting. Als je veel gelijktijdige agents draait, wikkel je de SDK-aanroep in asyncio.to_thread. Vanaf een sync-ingangspunt, asyncio.run() op het hoogste niveau.

VAKANT VRAAG

Drie OpenAI Agents SDK vragen.

Is er een speciaal OpenAI Agents SDK-pakket om te installeren?

Nee. De Agents SDK verandert al een versierde functie in een tool met @function_tool, dus het eerlijke pad is om de echte blockchain0x-client zelf te wikkelen, zoals hierboven weergegeven. De enige verzonden framework-pakketten zijn blockchain0x-langchain en blockchain0x-crewai (beide Python) plus de @blockchain0x/mcp-server. De Agents SDK, net als de andere frameworks zonder een speciale adapter, is dit paar-regel recept.

Kan ik dit rechtstreeks gebruiken met de OpenAI Responses API, zonder de Agents SDK?

Ja. De Responses API is de tool-calling layer waarop de Agents SDK is gebouwd. Als je client.responses.create() direct aanroept, declareer dan dezelfde functie als tool in de tools-lijst van de request en dispatch de call zelf wanneer het model erom vraagt - de body is gewoon de blockchain0x.payments.create call uit het recept. De Agents SDK is de weg van de minste weerstand, omdat @function_tool dat toolschema en de dispatch voor je bouwt.

Werkt dit met multi-agent overdrachten?

Ja, en jij bepaalt welke agent de wallet bezit. Het nette patroon is om de payment-functie toe te kennen aan één front-facing agent en die het echte werk te laten doorgeven aan specialist agents die geen wallet tools hebben. De bestedingsbevoegdheid blijft op één plek, dus er is geen charging door de verkeerde agent. Voeg read- en settle-functies op dezelfde manier toe - blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle - elk als een eigen @function_tool.

Voeg betalingen toe aan je Agents SDK-build.

Een paar regels die de echte client omhullen, geen pakket om te installeren. Gratis om te beginnen.