Zum Hauptinhalt springen
AGNO-INTEGRATION

Agno-Zahlungsintegration.

Es gibt kein Agno-Paket, und Sie benötigen keines. Wickeln Sie den echten blockchain0x-Client in ein kleines Toolkit ein, und Ihr Agent kann USDC auf Base bewegen - minimale Abstraktion, der Agno-Weg.

KURZE ANTWORT

Es gibt kein Agno-spezifisches Paket, und Sie brauchen auch keines. Agno macht eine -Methode zu einem Tool, also kapseln Sie den echten -Python-Client in ein kleines Toolkit und fügen es Ihrem hinzu. Der Agent kann USDC senden, Rechnungen begleichen und Wallets lesen, über jedes Agno-Modell hinweg (OpenAI, Anthropic, DeepSeek, Llama, Mistral). Zahlungen werden auf Base abgewickelt.

WARUM AGNO

Das leichte Python-Framework. Keine Abstraktionssteuer.

Agno (ehemals Phidata) ist das Agenten-Framework, das Sie wählen, wenn Sie minimale Zeremonie wünschen. Es gibt keinen Graph Builder, kein Crew, keinen Workflow - nur Agent, Tools und eine run()-Methode. Tools sind Python-Callable. Das Framework fügt genügend Gerüst hinzu, um LLMs mit Tool-Unterstützung aufzurufen, den Speicher zu verwalten und Streaming-Ausgaben zu erzeugen, und lässt Sie dann in Ruhe.

Das Rezept folgt derselben Philosophie. Sie schreiben eine kleine Toolkit-Subclass, die eine Methode registriert, die den echten Client aufruft - sie sieht aus und verhält sich wie jedes andere Agno-Tool. Keine spezielle Einrichtung über die Instanziierung hinaus, kein Graph, der verkabelt werden muss, keine Adapterversion, die verfolgt werden muss. Die Einfachheit ist der Punkt: Wenn Sie Graphen wollten, wären Sie bei LangGraph.

INSTALLATION

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

Es gibt kein blockchain0x Agno-Paket hinzuzufügen. Sie installieren Agno (Python 3.10+, die 1.0+-Linie nach der Umbenennung von Phidata) und das echte blockchain0x-Kern-SDK und schreiben dann das Toolkit unten. Wenn Sie immer noch phi.*-Importe verwenden, führen Sie zuerst pip install -U agno aus.

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

OPENAI_API_KEY (oder das Äquivalent für welches Agno-unterstützte Modell Sie verwenden). 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 Toolkit, das bezahlt, an einen Agenten übergeben.

Unten ist die gesamte Integration. WalletTools ist eine Toolkit-Unterklasse, die send_usdc registriert, die den echten blockchain0x-Client aufruft. Fügen Sie es dem Agenten hinzu, und der run()-Aufruf orchestriert den Toolaufruf. Agno liest die Methodensignatur und die Dokumentation, um das Schema zu erstellen.

AGENT.PY
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools import Toolkit
from blockchain0x import Client

blockchain0x = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment

# Wrap the real client in an Agno Toolkit. No dedicated package needed.
class WalletTools(Toolkit):
    def __init__(self):
        super().__init__(name="wallet_tools")
        self.register(self.send_usdc)

    def send_usdc(self, 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(
    model=OpenAIChat(id="gpt-4o"),
    tools=[WalletTools()],
    instructions=["You pay vendor invoices in USDC within owner-set limits."],
)

result = agent.run("Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.")
print(result.content)

When agent.run() executes, the model decides to pay, 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_. Register more methods on the toolkit - read a wallet, settle an invoice - the same way.

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 Agno-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 Methoden des Toolkits.

github.com/tosh-labs/blockchain0x-python

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

HÄUFIGE FALLSTRICK

Fünf Agno-spezifische Dinge, auf die man achten sollte.

Agno ist eines der saubereren Agenten-Frameworks, mit denen man integrieren kann, aber es hat seine eigenen Tücken - insbesondere in Bezug auf die Umbenennung von Phidata und die Markdown-Darstellung.

PITFALL 1

Es gibt kein Agno-Paket - Sie wickeln das SDK in ein Toolkit ein.

Blockchain0x liefert Adapter für LangChain und CrewAI sowie den MCP-Server; es gibt kein dediziertes Agno-Paket. Das obige Rezept ist der Weg: eine Toolkit-Unterklasse, die eine Methode registriert, die den echten blockchain0x-Client aufruft. Agno liest die Methodensignatur und den Docstring, um das Tool-Schema zu erstellen, also halten Sie den Docstring genau.

PITFALL 2

Verwirrung bei der Migration von Phidata zu Agno

Agno wurde 2024 von Phidata umbenannt. Ältere Codebasen, die von phi.agent oder phi.tools importieren, funktionieren weiterhin über einen Kompatibilitäts-Schutz, aber die agno.*-Imports sind die aktuellen. Das Rezept verwendet durchgehend agno.*; wenn Ihr Code noch auf phi.*-Imports basiert, führen Sie pip install -U agno aus und wechseln Sie die Importpfade, bevor Sie das Toolkit hinzufügen.

PITFALL 3

Beträge sind USDC-Basiseinheiten, als Strings

payments.create takes amountWei: a string of USDC base units (6 decimals), so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the method argument as str. It also does not retry by default and can answer 503 until the chain adapter is wired for your network - return a clear message rather than letting the agent loop.

PITFALL 4

Sync vs asynchroner Lauf

Agno unterstützt agent.run() (synchron) und agent.arun() (asynchron). Wählen Sie einen Modus pro Agent - rufen Sie agent.run() auf und versuchen Sie, das Ergebnis abzuwarten, und Sie erhalten eine Coroutine, wo Sie einen String erwartet haben. Der blockchain0x-Aufruf innerhalb des Toolkits ist synchron; wenn Sie sich auf dem asynchronen Pfad befinden und echtes Volumen bewegen, wickeln Sie es mit asyncio.to_thread ein, damit die Ereignisschleife reaktionsfähig bleibt.

PITFALL 5

Überprüfen Sie Webhooks gegen den Rohkörper

Wenn Ihr Agent auch USDC erhält, 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 Agno-spezifische Fragen.

Gibt es ein spezielles Agno-Paket zu installieren?

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

Funktioniert das mit Agno Teams (Multi-Agenten-Zusammenarbeit)?

Ja. Agno-Teams kombinieren mehrere Agenten zu einer koordinierten Einheit. Das WalletTools-Toolkit funktioniert in jedem Agenten, der es auflistet. Das saubere Muster für Teams besteht darin, das Wallet-Toolkit einem dedizierten Schatzmeister-Agenten zu geben und den anderen Mitgliedern die Arbeit zu überlassen, sodass die Ausgabenautorisierung an einem Ort bleibt - die gleiche Form wie das CrewAI-Rezept. Fügen Sie die Lese- und Begleichungsmethoden auf die gleiche Weise zum Toolkit hinzu (blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle).

Funktioniert es mit Denkmodellen und AgentUI?

Ja. Denkmodelle (o1, DeepSeek R1) rufen Tools auf die gleiche Weise auf, nur langsamer pro Runde, also streamen Sie die teilweise Antwort, wenn Sie möchten, dass der Benutzer Fortschritte sieht, bevor der Anruf abgeschlossen ist. In AgentUI, Agnos Laufinspektor, erscheint der send_usdc-Aufruf im Tool-Calls-Panel wie jedes andere Tool, was praktisch ist, um zu beobachten, wie eine Zahlung während der Entwicklung auf Base Sepolia durchgeht.

Berechnen Sie die Arbeit Ihres Agno-Agenten.

Ein kleines Toolkit, das den echten Client umschließt, kein Paket zu installieren. Kostenlos starten.