OpenAI एजेंट SDK एकीकरण।
कोई एजेंट SDK पैकेज नहीं है, और आपको एक की आवश्यकता नहीं है। एक फ़ंक्शन को @function_tool के साथ सजाएँ, वास्तविक blockchain0x क्लाइंट को कॉल करें, और आपका एजेंट बेस पर USDC को स्थानांतरित कर सकता है।
कोई OpenAI Agents SDK package नहीं है, और आपको इसकी आवश्यकता नहीं है। SDK एक decorated function को के साथ tool में बदल देता है, इसलिए आप वास्तविक Python client को एक function में wrap करके अपनी में जोड़ते हैं। agent USDC भेज सकता है, invoices settle कर सकता है, और wallets पढ़ सकता है - single agents, handoffs, और underlying Responses API के across। Payments Base पर settle होते हैं।
OpenAI द्वारा शिप किए गए सबसे साफ़ टूल-कॉलिंग सतह।
OpenAI एजेंट SDK (2025 में जारी) OpenAI का अनुशंसित तरीका है जो Responses API के शीर्ष पर एजेंट बनाने के लिए है। यह टूल पंजीकरण, संदेश लूप, और एजेंटों के बीच हैंडऑफ के चारों ओर बुनियादी ढांचे को अमूर्त करता है, और यह साफ, टाइप किया हुआ पायथन कोड उत्पन्न करता है। यदि आप आज एक OpenAI-केंद्रित एजेंट प्रोजेक्ट शुरू कर रहे हैं और आपके पास ढांचा प्राथमिकताएँ नहीं हैं, तो यह SDK है जिसे हम अनुशंसा करते हैं।
विधि जानबूझकर पतली है। send_usdc एक साधारण फ़ंक्शन है जिसे @function_tool के साथ सजाया गया है; आप इसे एजेंट के उपकरणों की सूची में जोड़ते हैं और रनर इसे उठाता है। कोई विशेष कॉन्फ़िगरेशन नहीं, कोई अतिरिक्त लपेटन नहीं, SDK का कोई फोर्क नहीं। जब एजेंट SDK एक नई विशेषता (बहु-आधार इनपुट, आवाज एजेंट) भेजता है, तो आपका फ़ंक्शन काम करता रहता है क्योंकि यह मानक उपकरण-कालिंग सतह पर सवारी करता है - इसमें कुछ भी संस्करण-विशिष्ट नहीं है।
एजेंट्स SDK और कोर SDK इंस्टॉल करें। दो कुंजी।
कोई blockchain0x एजेंट SDK पैकेज जोड़ने के लिए नहीं है। आप OpenAI एजेंट SDK (openai-agents पैकेज, Python 3.10+) और असली blockchain0x कोर SDK स्थापित करते हैं, फिर नीचे दी गई फ़ंक्शन लिखते हैं। यही पूरी निर्भरता सूची है।
pip install openai-agents blockchain0xexport OPENAI_API_KEY=sk-... export BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
OPENAI_API_KEY आपकी मौजूदा OpenAI key है (Agents SDK इसे underlying Responses API के लिए उपयोग करता है). BLOCKCHAIN0X_API_KEY आपके dashboard से एक sk_test_ testnet या sk_live_ mainnet key है; client इसे environment से पढ़ता है. अगर आपका agent पैसा भी प्राप्त करता है, तो webhook handler को अतिरिक्त रूप से BLOCKCHAIN0X_WEBHOOK_SECRET चाहिए.
एक @function_tool जो भुगतान करता है, एक एजेंट को सौंपा गया।
नीचे पूरी एकीकरण है। send_usdc वास्तविक blockchain0x क्लाइंट को कॉल करता है; @function_tool इसे एक टूल में बदलता है, और रनर कॉल का आयोजन करता है। SDK प्रकार संकेत और डॉकस्ट्रिंग को स्कीमा बनाने के लिए पढ़ता है, इसलिए उन्हें ईमानदार रखें। इसे चलाएँ और एजेंट बेस पर USDC को स्थानांतरित करता है।
from agents import Agent, Runner, function_tool from blockchain0x import Client blockchain0x = Client() # reads BLOCKCHAIN0X_API_KEY from the environment @function_tool 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. """ return str( blockchain0x.payments.create(body={"agentId": agent_id, "to": to, "amountWei": amount_wei}) ) agent = Agent( name="treasurer", instructions="You pay vendor invoices in USDC within owner-set limits.", tools=[send_usdc], model="gpt-4o", ) result = await Runner.run( agent, input="Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.", ) print(result.final_output)
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 is another @function_tool in the list.
एक हस्ताक्षरित वेबहुक के साथ इनबाउंड भुगतानों की पुष्टि करें।
यदि आपका एजेंट भी 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 करने के लिए कोई Agents SDK 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 करें.
पहली एकीकरण पर देखने के लिए पांच चीजें।
ये हमारे समर्थन इनबॉक्स से आते हैं। उन्हें पहले से जानने से प्रत्येक में एक घंटा बचता है।
कोई एजेंट SDK पैकेज नहीं है - आप SDK को लपेटते हैं
Blockchain0x LangChain और CrewAI के लिए एडाप्टर और MCP सर्वर भेजता है; कोई समर्पित OpenAI Agents SDK पैकेज नहीं है। ऊपर दिया गया नुस्खा यह है: एक साधारण प्रकारित फ़ंक्शन को @function_tool के साथ सजाना, असली blockchain0x क्लाइंट को अंदर कॉल करना, और इसे Agent(tools=[...]) में जोड़ना। SDK हस्ताक्षर और docstring को पढ़ता है ताकि उपकरण स्कीमा बनाया जा सके, इसलिए docstring को सटीक रखें।
एजेंट्स SDK सहायक API नहीं है
OpenAI एजेंट SDK (openai-agents पैकेज, जिसे एजेंट के रूप में आयात किया गया है) पुराने सहायक API से एक अलग उत्पाद है। विधि एजेंट SDK को लक्षित करती है: एजेंट + रनर + @function_tool प्रतिक्रियाओं API पर। यदि आप client.beta.assistants.create(...) को कॉल कर रहे हैं, तो आप पुराने थ्रेड्स/रन मॉडल पर हैं जिसे OpenAI समाप्त कर रहा है - एजेंट SDK पर जाएं और ऊपर दी गई फ़ंक्शन सीधे अंदर गिर जाती है।
राशियाँ USDC आधार इकाइयाँ हैं, स्ट्रिंग के रूप में
payments.create takes amountWei: a string of USDC base units, not a float. USDC has 6 decimals, so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the function argument as str; a float will lose precision before it reaches the API. Keep it a string end to end.
send_payment प्रारंभ में 503 का उत्तर दे सकता है।
payments.create डिफ़ॉल्ट रूप से पुनः प्रयास नहीं करता है और आपके नेटवर्क के लिए चेन एडेप्टर के कनेक्ट होने तक 503 वापस कर सकता है। अपनी फ़ंक्शन के अंदर त्रुटि को पकड़ें और एक स्पष्ट संदेश लौटाएं जिस पर मॉडल कार्य कर सके, बजाय इसके कि रनर लूप करने दें। स्वचालित रूप से निर्मित idempotency कुंजी का अर्थ है कि एक मैनुअल पुनः प्रयास डबल-पेमेंट नहीं करेगा।
केवल ऐसिंक्रोनस रनटाइम
एजेंट SDK असिंक्रोनस-प्रथम है - await Runner.run(...). आपके उपकरण के अंदर blockchain0x कॉल समकालिक है, जो एक त्वरित भुगतान के लिए ठीक है लेकिन लोड के तहत लूप को रोकता है। यदि आप कई समवर्ती एजेंट चला रहे हैं, तो SDK कॉल को asyncio.to_thread के साथ लपेटें। एक समकालिक प्रवेश बिंदु से, asyncio.run() शीर्ष स्तर पर।