Agno भुगतान एकीकरण।
कोई Agno पैकेज नहीं है, और आपको एक की आवश्यकता नहीं है। एक छोटे टूलकिट में वास्तविक blockchain0x क्लाइंट को लपेटें और आपका एजेंट बेस पर USDC को स्थानांतरित कर सकता है - न्यूनतम अमूर्तता, Agno का तरीका।
कोई Agno-specific package नहीं है, और आपको इसकी आवश्यकता भी नहीं है। Agno एक method को tool में बदल देता है, इसलिए आप वास्तविक Python client को एक छोटे toolkit में wrap करके उसे अपनी में जोड़ते हैं। agent USDC भेज सकता है, invoices settle कर सकता है, और wallets पढ़ सकता है, Agno के हर model (OpenAI, Anthropic, DeepSeek, Llama, Mistral) में। Payments Base पर settle होते हैं।
हल्का Python ढांचा। कोई अमूर्तता कर नहीं।
Agno (पूर्व में Phidata) वह एजेंट ढांचा है जिसका आप उपयोग करते हैं जब आप न्यूनतम समारोह चाहते हैं। यहाँ कोई ग्राफ बिल्डर नहीं है, कोई क्रू नहीं है, कोई वर्कफ़्लो नहीं है - केवल एजेंट, उपकरण, और एक run() विधि है। उपकरण पायथन कॉल करने योग्य हैं। ढांचा LLMs को उपकरण समर्थन के साथ कॉल करने, मेमोरी प्रबंधित करने, और स्ट्रीमिंग आउटपुट उत्पन्न करने के लिए पर्याप्त स्कैफोल्डिंग जोड़ता है, फिर आपके रास्ते से हट जाता है।
विधि उसी दर्शन का पालन करती है। आप एक छोटा टूलकिट उपवर्ग लिखते हैं जो एक विधि को पंजीकृत करता है जो वास्तविक क्लाइंट को कॉल करता है - यह हर अन्य Agno उपकरण की तरह दिखता है और व्यवहार करता है। स्थापना के अलावा कोई विशेष सेटअप नहीं, कोई ग्राफ वायर करने के लिए नहीं, कोई एडेप्टर संस्करण ट्रैक करने के लिए नहीं। सरलता ही बिंदु है: यदि आप ग्राफ चाहते हैं तो आप LangGraph पर होंगे।
Agno और कोर SDK इंस्टॉल करें। दो कुंजी।
कोई blockchain0x Agno पैकेज जोड़ने के लिए नहीं है। आप Agno (Python 3.10+, Phidata नाम परिवर्तन के बाद 1.0+ लाइन) और असली blockchain0x कोर SDK स्थापित करते हैं, फिर नीचे दी गई टूलकिट लिखते हैं। यदि आप अभी भी phi.* आयात पर हैं, तो पहले pip install -U agno चलाएँ।
pip install agno blockchain0xexport OPENAI_API_KEY=sk-... export BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
OPENAI_API_KEY (या आपके द्वारा उपयोग किए जाने वाले किसी भी Agno-supported model का समकक्ष). BLOCKCHAIN0X_API_KEY आपके dashboard से एक sk_test_ testnet या sk_live_ mainnet key है; client इसे environment से पढ़ता है. अगर आपका agent पैसा भी प्राप्त करता है, तो webhook handler को अतिरिक्त रूप से BLOCKCHAIN0X_WEBHOOK_SECRET चाहिए.
एक टूलकिट जो भुगतान करता है, एक एजेंट को सौंपा गया।
नीचे पूरी एकीकरण है। WalletTools एक Toolkit उपवर्ग है जो send_usdc को पंजीकृत करता है, जो वास्तविक blockchain0x क्लाइंट को कॉल करता है। इसे एजेंट में जोड़ें और run() कॉल टूल आह्वान का आयोजन करता है। Agno विधि हस्ताक्षर और डॉकस्ट्रिंग को स्कीमा बनाने के लिए पढ़ता है।
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.
एक हस्ताक्षरित वेबहुक के साथ इनबाउंड भुगतानों की पुष्टि करें।
यदि आपका एजेंट भी USDC प्राप्त करता है, तो इसे वेबहुक के साथ पुष्टि करें न कि पोलिंग द्वारा। सत्यापन सहायक Node SDK में भेजा जाता है; एक Python सेवा में आप दस्तावेजित HMAC के खिलाफ हाथ से सत्यापित करते हैं, जो कि सहायक करता है। FastAPI उदाहरण नीचे; वही कोड किसी भी असिंक्रोनस Python ढांचे में काम करता है।
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}
एल्गोरिदम t.rawBody पर HMAC-SHA256 है, एक स्थायी-समय तुलना, और एक 300-सेकंड पुनःप्रसारण विंडो। कच्चे शरीर को await request.body() के माध्यम से पढ़ें, कभी भी request.json() को फिर से serialize न करें, क्योंकि यह सिग्नेचर द्वारा कवर किए गए बाइट्स को बदलता है। शिप किए गए इवेंट्स हैं payment.received, payment.sent, wallet.deployed, और webhook.test। भारी फॉलो-अप कार्य के लिए, एक कार्य (Celery, arq) को कतार में डालें और हैंडलर को अवरुद्ध करने के बजाय तुरंत 200 का उत्तर दें।
आप जिस क्लाइंट को लपेट रहे हैं वह खुला है। इसे पढ़ें।
clone करने के लिए कोई Agno starter package नहीं है - ऊपर दिया गया recipe ही integration है। blockchain0x SDKs GitHub पर open source हैं; यह recipe Python SDK (blockchain0x-python) को wrap करता है, और पूरा method surface docs में है। toolkit methods के reference के लिए इसे पढ़ें।
github.com/tosh-labs/blockchain0x-pythonपूरी SDK method surface और scopes the docs पर documented हैं. Base Sepolia के against एक sk_test_ key से शुरुआत करें, फिर जब toolkit अपेक्षा के अनुसार काम करे तो sk_live_ पर switch करें.
पांच Agno-विशिष्ट चीजें जो देखने लायक हैं।
Agno एक साफ-सुथरा एजेंट ढांचा है जिसके साथ एकीकृत करना, लेकिन इसके अपने कुछ जटिलताएँ हैं - विशेष रूप से Phidata नामकरण और मार्कडाउन रेंडरिंग के आसपास।
कोई Agno पैकेज नहीं है - आप SDK को एक टूलकिट में लपेटते हैं
Blockchain0x LangChain और CrewAI के लिए एडाप्टर और MCP सर्वर भेजता है; कोई समर्पित Agno पैकेज नहीं है। ऊपर दिया गया नुस्खा यह है: एक Toolkit उपवर्ग जो एक विधि को पंजीकृत करता है जो असली blockchain0x क्लाइंट को कॉल करता है। Agno विधि हस्ताक्षर और docstring को पढ़ता है ताकि उपकरण स्कीमा बनाया जा सके, इसलिए docstring को सटीक रखें।
Phidata से Agno माइग्रेशन भ्रम
Agno का नाम 2024 में Phidata से बदल दिया गया। phi.agent या phi.tools से आयात करने वाले पुराने कोडबेस अभी भी संगतता शिम के माध्यम से काम करते हैं, लेकिन agno.* आयात वर्तमान हैं। नुस्खा पूरे में agno.* का उपयोग करता है; यदि आपका कोड अभी भी phi.* आयात पर है, तो pip install -U agno चलाएँ और Toolkit जोड़ने से पहले आयात पथ बदलें।
राशियाँ USDC आधार इकाइयाँ हैं, स्ट्रिंग के रूप में
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.
सिंक बनाम असिंक्रोनस रन
Agno agent.run() (sync) और agent.arun() (async) का समर्थन करता है। प्रत्येक एजेंट के लिए एक मोड चुनें - agent.run() कॉल करें और परिणाम की प्रतीक्षा करने की कोशिश करें और आपको एक coroutine मिलता है जहाँ आप एक स्ट्रिंग की अपेक्षा करते थे। Toolkit के अंदर blockchain0x कॉल समकालिक है; यदि आप असिंक्रोनस पथ पर हैं और वास्तविक मात्रा में आगे बढ़ रहे हैं, तो इसे asyncio.to_thread के साथ लपेटें ताकि इवेंट लूप उत्तरदायी बना रहे।
कच्चे शरीर के खिलाफ वेबहुक को सत्यापित करें
यदि आपका एजेंट भी USDC प्राप्त करता है, तो इसे वेबहुक के साथ पुष्टि करें, न कि पोलिंग द्वारा। RAW अनुरोध बाइट्स पर हस्ताक्षर की पुष्टि करें (await request.body()), कभी भी request.json() पुनः-सिरियलाइज़ नहीं करें, क्योंकि HMAC सटीक बाइट्स को कवर करता है। यह 300-सेकंड पुनः-प्रदर्शन विंडो के साथ HMAC-SHA256 है। नीचे दिया गया हैंडलर पूरा है।