Zum Hauptinhalt springen
AUTOGEN-INTEGRATION

AutoGen-Zahlungsintegration.

Es gibt kein AutoGen-Paket, und Sie benötigen keines. Wickeln Sie den echten blockchain0x-Client in eine Funktion ein, übergeben Sie ihn Ihrem Agenten, und er kann USDC auf Base bewegen.

KURZE ANTWORT

Es gibt kein AutoGen-spezifisches Paket, und Sie brauchen auch keines. AutoGen macht aus einer einfachen typisierten Funktion bereits ein Tool, also kapseln Sie den echten -Python-Client in eine Funktion, übergeben sie einem via , und der Agent kann USDC senden, Rechnungen begleichen und Wallets auf Base lesen. Setzen Sie und legen Sie los.

WARUM ES KEIN PAKET GIBT

AutoGen macht bereits eine Funktion zu einem Tool. Verwenden Sie das.

AutoGen erstellt ein Tool-Schema direkt aus der Signatur und der Dokumentation einer Python-Funktion. Ein dedizierter AutoGen-Adapter würde nur eine Funktion umwickeln, die wir ohnehin geschrieben hätten, und dann aus dem Takt mit der sich schnell ändernden API von AutoGen geraten. Daher liefern wir keinen aus. Sie schreiben ein paar Zeilen, die den echten blockchain0x-Client aufrufen, und behalten die volle Kontrolle über die Argumente, Validierung und Fehlerbehandlung.

Dies ist derselbe Client, den die gelieferten LangChain- und CrewAI-Adapter im Hintergrund umschließen. Hier wickeln Sie es selbst ein, was bedeutet, dass es keine Adapterversion gibt, die verfolgt werden muss, und nichts zwischen Ihrem Agenten und der API außer Ihrer eigenen Funktion. Multi-Agenten-Teams funktionieren auf die gleiche Weise: Geben Sie die Wallet-Funktion einem Agenten, lassen Sie die anderen ohne sie, und die Ausgabenberechtigung bleibt an einem Ort.

INSTALLATION

Installieren Sie AutoGen und das Kern-SDK. Eine Umgebungsvariable.

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

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

BLOCKCHAIN0X_API_KEY ist ein sk_test_ Testnet- oder sk_live_ Mainnet-Schlü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 das Dashboard einmal zurückgibt, wenn Sie einen Webhook erstellen oder rotieren.

DAS REZEPT

Eine Funktion, die bezahlt, an einen AssistantAgent übergeben.

Unten ist die gesamte Integration. send_usdc ruft den echten blockchain0x-Client auf; AssistantAgent(tools=[send_usdc]) verwandelt es in ein Tool, das das Modell aufrufen kann. AutoGen 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 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-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, RQ, 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 AutoGen-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 Fallen in Gruppen-Chats und asynchronen Prozessen, die zu vermeiden sind.

Das Multi-Agenten- und asynchrone Design von AutoGen eröffnet leistungsstarke Muster, bringt aber auch eigene Fallstricke mit sich. Diese stammen aus unserem Support-Posteingang.

PITFALL 1

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

Blockchain0x liefert Adapter für LangChain und CrewAI sowie den MCP-Server; es gibt kein dediziertes AutoGen-Paket. Das obige Rezept ist der unterstützte Weg: eine einfache typisierte Funktion, die den echten blockchain0x-Client aufruft, übergeben an AssistantAgent(tools=[...]). AutoGen liest die Funktionssignatur und den Docstring, um das Tool-Schema zu erstellen, also halten Sie den Docstring genau.

PITFALL 2

Beträge sind USDC-Basiseinheiten, 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 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. Lassen Sie den Gruppenchat nicht in einer Schleife auf eine fehlgeschlagene Zahlung laufen - fangen Sie den Fehler in Ihrer Funktion ab, geben Sie eine klare Nachricht zurück, auf die das Modell reagieren kann, und verlassen Sie sich auf den automatisch generierten Idempotency-Key, damit ein manueller Retry nicht doppelt zahlt.

PITFALL 4

AutoGen 0.4+ ist asynchron; der SDK-Aufruf ist synchron

AutoGen 0.4 führt Tools in einer asynchronen Schleife aus. Der Aufruf des blockchain0x-Clients ist synchron, was für eine schnelle Anfrage in Ordnung ist, aber ein langsamer Aufruf blockiert die Schleife. Wenn Sie echtes Volumen bewegen, wickeln Sie den SDK-Aufruf mit asyncio.to_thread ein, damit die Ereignisschleife reaktionsfähig bleibt. Für eine einzelne Zahlung pro Runde ist es in Ordnung, ihn direkt aufzurufen.

PITFALL 5

Überprüfen Sie eingehende Webhooks gegen den Rohkörper

Wenn Ihr Agent auch Geld EMPFÄNGT, bestätigen Sie es mit dem Webhook, nicht durch Abfragen. Überprüfen Sie die Signatur über die ROH-Anforderungsbytes (await request.body()), niemals request.json() erneut serialisiert, da das HMAC die genauen Bytes abdeckt. Es ist HMAC-SHA256 mit einem Replay-Fenster von 300 Sekunden. Der Handler unten ist das Ganze.

HÄUFIG GESTELLTE FRAGEN

Drei AutoGen-spezifische Fragen.

Gibt es ein spezielles AutoGen-Paket zu installieren?

Nein. Es gibt keinen speziellen AutoGen-Adapter, und das ist absichtlich so - AutoGen verwandelt bereits eine einfache typisierte Funktion in ein Werkzeug, daher ist der ehrliche Weg, den echten blockchain0x-Client in eine Funktion zu wickeln und ihn Ihrem Agenten zu übergeben, genau wie oben gezeigt. Die einzigen ausgelieferten Framework-Pakete sind blockchain0x-langchain und blockchain0x-crewai (beide Python) sowie der @blockchain0x/mcp-Server. Alles andere, einschließlich AutoGen, ist dieses wenige Zeilen umfassende Rezept.

Funktioniert das Rezept sowohl mit klassischem AutoGen (0.2.x) als auch mit 0.4+?

Ja, weil die Zahlungslogik nur eine Python-Funktion ist - nichts, was versionsspezifisch für AutoGen ist, lebt darin. Bei 0.4+ übergeben Sie es über AssistantAgent(tools=[...]) wie oben. In der 0.2.x ConversableAgent-Linie registrieren Sie die gleiche Funktion mit register_function. Es gibt kein .legacy-Submodul zu importieren, da es kein Paket gibt; Sie besitzen die Funktion.

Wie erhält mein Agent USDC oder begleicht eine Rechnung, nicht nur sendet er es?

Umschließen Sie mehr des Clients auf die gleiche Weise. blockchain0x.transactions.get liest eine Transaktion, blockchain0x.agents.get und blockchain0x.agents.list lesen Wallets, und blockchain0x.payment_requests.settle begleicht eine Rechnung, die Sie im Dashboard mit On-Chain-Beweis erstellt haben. Jede wird zu einer weiteren typisierten Funktion in Ihrer Werkzeugliste. Eingehende Zahlungen bestätigen über den payment.received-WebHook (überprüfen Sie ihn mit dem Handler unten); es gibt kein Tool, das eine frische Rechnung erstellt, da Zahlungsanforderungen im Dashboard erstellt werden.

Geben Sie Ihrem AutoGen-Agenten eine Wallet.

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