Ga naar hoofdinhoud
AUTOGEN INTEGRATIE

AutoGen betalingsintegratie.

Er is geen AutoGen-pakket, en je hebt er geen nodig. Wikkel de echte blockchain0x-client in een functie, geef het aan jouw agent, en het kan USDC verplaatsen op Base.

KORTE ANTWOORD

Er is geen AutoGen-specifiek pakket, en je hebt er ook geen nodig. AutoGen maakt van een gewone getypte functie al een tool, dus wikkel je de echte Python client in een functie, geef je die via aan een , en kan de agent USDC versturen, facturen afwikkelen en wallets uitlezen op Base. Stel in en ga aan de slag.

WAAROM ER GEEN PAKKET IS

AutoGen maakt een functie al tot een tool. Gebruik dat.

AutoGen bouwt een toolschema rechtstreeks vanuit de handtekening en docstring van een Python-functie. Een speciale AutoGen-adapter zou alleen een functie wikkelen die we toch zouden hebben geschreven, en dan uit de sync drijven met de snel bewegende API van AutoGen. Dus we leveren er geen. Je schrijft een paar regels die de echte blockchain0x-client aanroepen, en je houdt volledige controle over de argumenten, validatie en foutafhandeling.

Dit is dezelfde client die de LangChain en CrewAI-adapters onder de motorkap wikkelen. Hier wikkel je het zelf, wat betekent dat er geen adapterversie is om bij te houden en niets tussen jouw agent en de API behalve jouw eigen functie. Multi-agent teams werken op dezelfde manier: geef de walletfunctie aan één agent, laat de anderen zonder, en de uitgavenautoriteit blijft op één plek.

INSTALLATIE

Installeer AutoGen en de kern SDK. Eén omgevingsvariabele.

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

INSTALLEREN
pip install autogen-agentchat "autogen-ext[openai]" blockchain0x
OMGEVINGSVARIABLE
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

BLOCKCHAIN0X_API_KEY is een sk_test_ testnet- of sk_live_ mainnet-sleutel uit je dashboard; de client leest deze uit de omgeving. Als je agent ook geld ontvangt, heeft de webhook-handler daarnaast BLOCKCHAIN0X_WEBHOOK_SECRET nodig, die het dashboard één keer teruggeeft wanneer je een webhook aanmaakt of roteert.

HET RECEPT

Een functie die betaalt, overhandigd aan een AssistantAgent.

Hieronder is de hele integratie. send_usdc roept de echte blockchain0x-client aan; AssistantAgent(tools=[send_usdc]) verandert het in een hulpmiddel dat het model kan aanroepen. AutoGen 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 autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from blockchain0x import Client

blockchain0x = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment

# AutoGen turns a plain typed function into a tool. No dedicated package needed.
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.
    """
    result = blockchain0x.payments.create(
        body={"agentId": agent_id, "to": to, "amountWei": amount_wei},
    )
    return str(result)

treasurer = AssistantAgent(
    name="treasurer",
    model_client=OpenAIChatCompletionClient(model="gpt-4o"),
    tools=[send_usdc],
    system_message="You pay vendor invoices in USDC within owner-set limits.",
)

result = await treasurer.run(
    task="Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.",
)

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 becomes another entry in tools.

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, RQ, 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 AutoGen 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 groepschat- en asynchrone valkuilen om te vermijden.

AutoGen's multi-agent + async ontwerp ontsluit krachtige patronen maar introduceert zijn eigen valkuilen. Deze komen uit onze ondersteuningsinbox.

PITFALL 1

Er is geen AutoGen-pakket - je wikkelt de SDK

Blockchain0x levert geleverde adapters voor LangChain en CrewAI plus de MCP-server; er is geen speciaal AutoGen-pakket. Het bovenstaande recept is het ondersteunde pad: een eenvoudige getypte functie die de echte blockchain0x-client aanroept, overhandigd aan AssistantAgent(tools=[...]). AutoGen leest de functiehandtekening en docstring om het hulpschema op te bouwen, dus houd de docstring nauwkeurig.

PITFALL 2

Bedragen zijn USDC basis eenheden, als strings

payments.create takes amountWei: a string of USDC base units, not a float and not a dollar figure. USDC has 6 decimals, so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the tool argument as str and validate it before the call - a float that sneaks through either errors at the backend or moves a millionth of what you meant.

PITFALL 3

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. Laat de groepschat niet draaien op een mislukte betaling - vang de fout op in je functie, retourneer een duidelijk bericht waar het model op kan reageren, en vertrouw op de automatisch geminte idempotency key zodat een handmatige herhaling niet dubbel betaalt.

PITFALL 4

AutoGen 0.4+ is async; de SDK-aanroep is sync

AutoGen 0.4 draait tools in een async-lus. De blockchain0x-clientaanroep is synchroon, wat prima is voor een snelle aanvraag, maar een langzame oproep blokkeert de lus. Als je echt volume verplaatst, wikkel dan de SDK-aanroep met asyncio.to_thread zodat de gebeurtenislus responsief blijft. Voor een enkele betaling per beurt is het prima om het direct aan te roepen.

PITFALL 5

Verifieer binnenkomende webhooks tegen de ruwe body

Als je agent ook geld ONTVANGT, bevestig het dan met de webhook, niet door te polleren. Verifieer de handtekening over de RAW-aanroepbytes (await request.body()), nooit request.json() opnieuw-serialiseerd, omdat de HMAC de exacte bytes dekt. Het is HMAC-SHA256 met een replay-venster van 300 seconden. De handler hieronder is het geheel.

VAKANT VRAAG

Drie AutoGen-specifieke vragen.

Is er een speciaal AutoGen-pakket om te installeren?

Nee. Er is geen speciale AutoGen-adapter, en dat is opzettelijk - AutoGen verandert al een gewone getypte functie in een tool, dus het eerlijke pad is om de echte blockchain0x-client in een functie te wikkelen en deze aan uw agent te geven, precies zoals hierboven weergegeven. De enige verzonden framework-pakketten zijn blockchain0x-langchain en blockchain0x-crewai (beide Python) plus de @blockchain0x/mcp-server. Alles wat daarbuiten valt, inclusief AutoGen, is dit paar-regel recept.

Werkt het recept op klassieke AutoGen (0.2.x) evenals 0.4+?

Ja, omdat de betalingslogica gewoon een Python-functie is - er leeft niets AutoGen-versie-specifiek in. Op 0.4+ geef je het door via AssistantAgent(tools=[...]) zoals hierboven. Op de 0.2.x ConversableAgent-lijn registreer je dezelfde functie met register_function. Er is geen .legacy submodule om te importeren omdat er geen pakket is; jij bezit de functie.

Hoe ontvangt mijn agent USDC of vereffent hij een factuur, niet alleen verzenden?

Breid de client op dezelfde manier verder uit. blockchain0x.transactions.get leest een transactie, blockchain0x.agents.get en blockchain0x.agents.list lezen wallets, en blockchain0x.payment_requests.settle vereffent een factuur die je in het dashboard hebt aangemaakt met on-chain bewijs. Elk daarvan wordt opnieuw een getypte functie in je tools-lijst. Inbound payments worden bevestigd via de payment.received webhook (verifieer die met de handler hieronder); er is geen tool die een nieuwe factuur mint, omdat payment requests in het dashboard worden aangemaakt.

Geef je AutoGen-agent een portemonnee.

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