AutoGen भुगतान एकीकरण।
कोई AutoGen पैकेज नहीं है, और आपको एक की आवश्यकता नहीं है। वास्तविक blockchain0x क्लाइंट को एक फ़ंक्शन में लपेटें, इसे अपने एजेंट को सौंपें, और यह बेस पर USDC को स्थानांतरित कर सकता है।
कोई AutoGen-specific package नहीं है, और आपको इसकी आवश्यकता नहीं है। AutoGen पहले से ही एक plain typed function को tool में बदल देता है, इसलिए आप वास्तविक Python client को एक function में wrap करते हैं, उसे को के माध्यम से सौंपते हैं, और agent Base पर USDC भेज सकता है, invoices settle कर सकता है, और wallets पढ़ सकता है। सेट करें और शुरू करें।
AutoGen पहले से ही एक फ़ंक्शन को टूल बनाता है। इसका उपयोग करें।
AutoGen एक टूल स्कीमा को सीधे एक Python फ़ंक्शन के हस्ताक्षर और डॉकस्ट्रिंग से बनाता है। एक समर्पित AutoGen एडेप्टर केवल एक फ़ंक्शन को लपेटेगा जिसे हम वैसे भी लिखते, फिर AutoGen के तेज़ी से बदलते API के साथ असंगत हो जाएगा। इसलिए हम एक नहीं भेजते। आप कुछ पंक्तियाँ लिखते हैं जो वास्तविक blockchain0x क्लाइंट को कॉल करती हैं, और आप तर्कों, मान्यता, और त्रुटि प्रबंधन पर पूर्ण नियंत्रण रखते हैं।
यह वही क्लाइंट है जिसे भेजे गए LangChain और CrewAI अडैप्टर ने अंदर लपेटा है। यहाँ आप इसे स्वयं लपेटते हैं, जिसका अर्थ है कि ट्रैक करने के लिए कोई अडैप्टर संस्करण नहीं है और आपके एजेंट और API के बीच केवल आपका अपना फ़ंक्शन है। मल्टी-एजेंट टीमें इसी तरह काम करती हैं: एक एजेंट को वॉलेट फ़ंक्शन दें, दूसरों को इसके बिना छोड़ दें, और खर्च करने की प्राधिकरण एक स्थान पर रहती है।
AutoGen और कोर SDK इंस्टॉल करें। एक वातावरण चर।
कोई समर्पित AutoGen पैकेज जोड़ने के लिए नहीं है। आप AutoGen (Python 3.10+) और असली blockchain0x कोर SDK स्थापित करते हैं, फिर नीचे दी गई फ़ंक्शन लिखते हैं। यही पूरी निर्भरता सूची है।
pip install autogen-agentchat "autogen-ext[openai]" blockchain0x
export BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
BLOCKCHAIN0X_API_KEY आपके dashboard से एक sk_test_ testnet या sk_live_ mainnet key है; client इसे environment से पढ़ता है. अगर आपका agent पैसा भी प्राप्त करता है, तो webhook handler को अतिरिक्त रूप से BLOCKCHAIN0X_WEBHOOK_SECRET चाहिए, जिसे dashboard webhook create या rotate करने पर एक बार देता है.
एक फ़ंक्शन जो भुगतान करता है, एक AssistantAgent को सौंपा गया।
नीचे पूरी एकीकरण है। send_usdc वास्तविक blockchain0x क्लाइंट को कॉल करता है; AssistantAgent(tools=[send_usdc]) इसे एक टूल में बदलता है जिसे मॉडल कॉल कर सकता है। AutoGen प्रकार संकेत और डॉकस्ट्रिंग को स्कीमा बनाने के लिए पढ़ता है, इसलिए उन्हें ईमानदार रखें। इसे चलाएँ और एजेंट बेस पर USDC को स्थानांतरित करता है।
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.
एक हस्ताक्षरित वेबहुक के साथ इनबाउंड भुगतानों की पुष्टि करें।
यदि आपका एजेंट भी 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, RQ, arq) को कतार में डालें और हैंडलर को अवरुद्ध करने के बजाय तुरंत 200 का उत्तर दें।
आप जिस क्लाइंट को लपेट रहे हैं वह खुला है। इसे पढ़ें।
clone करने के लिए कोई AutoGen starter package नहीं है - ऊपर दिया गया recipe ही integration है। blockchain0x SDKs GitHub पर open source हैं; यह recipe Python SDK (blockchain0x-python) को wrap करता है, और पूरा method surface docs में है। function bodies के reference के लिए इसे पढ़ें।
github.com/tosh-labs/blockchain0x-pythonपूरी SDK method surface और scopes the docs पर documented हैं. Base Sepolia के against एक sk_test_ key से शुरुआत करें, फिर जब function अपेक्षा के अनुसार काम करे तो sk_live_ पर switch करें.
पांच समूह-चैट और असिंक्रोनस जाल से बचें।
AutoGen का बहु-एजेंट + असिंक्रोनस डिज़ाइन शक्तिशाली पैटर्न को अनलॉक करता है लेकिन इसके अपने फूटगन्स को पेश करता है। ये हमारे समर्थन इनबॉक्स से आते हैं।
कोई AutoGen पैकेज नहीं है - आप SDK को लपेटते हैं
Blockchain0x LangChain और CrewAI के लिए भेजे गए एडाप्टर और MCP सर्वर भेजता है; कोई समर्पित AutoGen पैकेज नहीं है। ऊपर दिया गया नुस्खा समर्थित मार्ग है: एक साधारण प्रकारित फ़ंक्शन जो असली blockchain0x क्लाइंट को कॉल करता है, जिसे AssistantAgent(tools=[...]) को सौंपा गया है। AutoGen फ़ंक्शन हस्ताक्षर और docstring को पढ़ता है ताकि उपकरण स्कीमा बनाया जा सके, इसलिए docstring को सटीक रखें।
राशियाँ USDC आधार इकाइयाँ हैं, स्ट्रिंग के रूप में
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.
send_payment प्रारंभ में 503 का उत्तर दे सकता है।
payments.create डिफ़ॉल्ट रूप से पुनः प्रयास नहीं करता है और आपके नेटवर्क के लिए चेन एडेप्टर के कनेक्ट होने तक 503 वापस कर सकता है। समूह चैट को एक असफल भुगतान पर लूप करने न दें - अपनी फ़ंक्शन में त्रुटि को पकड़ें, एक स्पष्ट संदेश लौटाएं जिस पर मॉडल कार्य कर सके, और स्वचालित रूप से निर्मित idempotency कुंजी पर भरोसा करें ताकि एक मैनुअल पुनः प्रयास डबल-पेमेंट न करे।
AutoGen 0.4+ असिंक्रोनस है; SDK कॉल समकालिक है
AutoGen 0.4 टूल्स को एक असिंक्रोनस लूप में चलाता है। blockchain0x क्लाइंट कॉल समकालिक है, जो एक त्वरित अनुरोध के लिए ठीक है, लेकिन एक धीमी कॉल लूप को अवरुद्ध कर देती है। यदि आप वास्तविक मात्रा में आगे बढ़ रहे हैं, तो SDK कॉल को asyncio.to_thread के साथ लपेटें ताकि इवेंट लूप उत्तरदायी बना रहे। एक टर्न में एकल भुगतान के लिए, इसे सीधे कॉल करना ठीक है।
कच्चे शरीर के खिलाफ इनबाउंड वेबहुक को सत्यापित करें
यदि आपका एजेंट भी पैसे प्राप्त करता है, तो इसे वेबहुक के साथ पुष्टि करें, न कि पोलिंग द्वारा। RAW अनुरोध बाइट्स पर हस्ताक्षर की पुष्टि करें (await request.body()), कभी भी request.json() पुनः-सिरियलाइज़ नहीं करें, क्योंकि HMAC सटीक बाइट्स को कवर करता है। यह 300-सेकंड पुनः-प्रदर्शन विंडो के साथ HMAC-SHA256 है। नीचे दिया गया हैंडलर पूरा है।