मुख्य सामग्री पर जाएं
AUTOGEN एकीकरण

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 ढांचे में काम करता है।

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}

एल्गोरिदम 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 करें.

सामान्य pitfalls

पांच समूह-चैट और असिंक्रोनस जाल से बचें।

AutoGen का बहु-एजेंट + असिंक्रोनस डिज़ाइन शक्तिशाली पैटर्न को अनलॉक करता है लेकिन इसके अपने फूटगन्स को पेश करता है। ये हमारे समर्थन इनबॉक्स से आते हैं।

PITFALL 1

कोई AutoGen पैकेज नहीं है - आप SDK को लपेटते हैं

Blockchain0x LangChain और CrewAI के लिए भेजे गए एडाप्टर और MCP सर्वर भेजता है; कोई समर्पित AutoGen पैकेज नहीं है। ऊपर दिया गया नुस्खा समर्थित मार्ग है: एक साधारण प्रकारित फ़ंक्शन जो असली blockchain0x क्लाइंट को कॉल करता है, जिसे AssistantAgent(tools=[...]) को सौंपा गया है। AutoGen फ़ंक्शन हस्ताक्षर और docstring को पढ़ता है ताकि उपकरण स्कीमा बनाया जा सके, इसलिए docstring को सटीक रखें।

PITFALL 2

राशियाँ 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.

PITFALL 3

send_payment प्रारंभ में 503 का उत्तर दे सकता है।

payments.create डिफ़ॉल्ट रूप से पुनः प्रयास नहीं करता है और आपके नेटवर्क के लिए चेन एडेप्टर के कनेक्ट होने तक 503 वापस कर सकता है। समूह चैट को एक असफल भुगतान पर लूप करने न दें - अपनी फ़ंक्शन में त्रुटि को पकड़ें, एक स्पष्ट संदेश लौटाएं जिस पर मॉडल कार्य कर सके, और स्वचालित रूप से निर्मित idempotency कुंजी पर भरोसा करें ताकि एक मैनुअल पुनः प्रयास डबल-पेमेंट न करे।

PITFALL 4

AutoGen 0.4+ असिंक्रोनस है; SDK कॉल समकालिक है

AutoGen 0.4 टूल्स को एक असिंक्रोनस लूप में चलाता है। blockchain0x क्लाइंट कॉल समकालिक है, जो एक त्वरित अनुरोध के लिए ठीक है, लेकिन एक धीमी कॉल लूप को अवरुद्ध कर देती है। यदि आप वास्तविक मात्रा में आगे बढ़ रहे हैं, तो SDK कॉल को asyncio.to_thread के साथ लपेटें ताकि इवेंट लूप उत्तरदायी बना रहे। एक टर्न में एकल भुगतान के लिए, इसे सीधे कॉल करना ठीक है।

PITFALL 5

कच्चे शरीर के खिलाफ इनबाउंड वेबहुक को सत्यापित करें

यदि आपका एजेंट भी पैसे प्राप्त करता है, तो इसे वेबहुक के साथ पुष्टि करें, न कि पोलिंग द्वारा। RAW अनुरोध बाइट्स पर हस्ताक्षर की पुष्टि करें (await request.body()), कभी भी request.json() पुनः-सिरियलाइज़ नहीं करें, क्योंकि HMAC सटीक बाइट्स को कवर करता है। यह 300-सेकंड पुनः-प्रदर्शन विंडो के साथ HMAC-SHA256 है। नीचे दिया गया हैंडलर पूरा है।

अक्सर पूछे जाने वाले

तीन AutoGen-विशिष्ट प्रश्न।

क्या इंस्टॉल करने के लिए कोई समर्पित AutoGen पैकेज है?

नहीं। कोई समर्पित AutoGen एडाप्टर नहीं है, और यह जानबूझकर है - AutoGen पहले से ही एक साधारण टाइप की गई फ़ंक्शन को एक टूल में बदलता है, इसलिए ईमानदार रास्ता यह है कि आप वास्तविक blockchain0x क्लाइंट को एक फ़ंक्शन में लपेटें और इसे अपने एजेंट को सौंपें, जैसा कि ऊपर दिखाया गया है। केवल शिप किए गए ढांचे के पैकेज blockchain0x-langchain और blockchain0x-crewai (दोनों Python) और @blockchain0x/mcp सर्वर हैं। बाकी सब, AutoGen सहित, यह कुछ पंक्तियों का नुस्खा है।

क्या नुस्खा क्लासिक AutoGen (0.2.x) और 0.4+ पर काम करता है?

हाँ, क्योंकि भुगतान लॉजिक केवल एक Python फ़ंक्शन है - इसमें कुछ भी AutoGen-संस्करण-विशिष्ट नहीं है। 0.4+ पर आप इसे ऊपर के अनुसार AssistantAgent(tools=[...]) के माध्यम से पास करते हैं। 0.2.x ConversableAgent लाइन पर आप उसी फ़ंक्शन को register_function के साथ रजिस्टर करते हैं। आयात करने के लिए कोई .legacy उप-मॉड्यूल नहीं है क्योंकि कोई पैकेज नहीं है; आप फ़ंक्शन के मालिक हैं।

मेरा एजेंट USDC कैसे प्राप्त करता है या एक चालान का निपटारा करता है, केवल इसे भेजने के बजाय?

client के और हिस्सों को भी इसी तरह wrap करें। blockchain0x.transactions.get एक transaction पढ़ता है, blockchain0x.agents.get और blockchain0x.agents.list wallets पढ़ते हैं, और blockchain0x.payment_requests.settle dashboard में आपके द्वारा बनाई गई invoice को on-chain proof के साथ settle करता है। हर एक आपकी tools list में एक और typed function बन जाता है। inbound payments payment.received webhook के माध्यम से confirm होते हैं (नीचे दिए गए handler से इसे verify करें); fresh invoice mint करने के लिए कोई tool नहीं है, क्योंकि payment requests dashboard में बनाई जाती हैं।

अपने AutoGen एजेंट को एक वॉलेट दें।

कुछ पंक्तियाँ जो वास्तविक क्लाइंट को लपेटती हैं, कोई पैकेज इंस्टॉल करने की आवश्यकता नहीं। शुरू करने के लिए मुफ्त।