Agno पेमेंट एकत्रीकरण.
Agno पॅकेज नाही, आणि तुम्हाला एकाची आवश्यकता नाही. वास्तविक blockchain0x क्लायंट एका लहान टूलकिटमध्ये लपवा आणि तुमचा एजंट Base वर USDC हलवू शकतो - किमान अमूर्तता, Agno पद्धत.
Agno साठी कोणताही specific package नाही, आणि त्याची गरजही नाही. Agno एक method ला tool मध्ये रूपांतरित करते, त्यामुळे तुम्ही खऱ्या Python client ला छोट्या toolkit मध्ये wrap करून तुमच्या मध्ये add करता. agent USDC पाठवू शकतो, invoices settle करू शकतो, आणि wallets वाचू शकतो, Agno च्या प्रत्येक model मध्ये (OpenAI, Anthropic, DeepSeek, Llama, Mistral). Payments Base वर settle होतात.
हलका Python फ्रेमवर्क. कोणतीही अमूर्तता कर नाही.
Agno (पूर्वी Phidata) हा एजंट फ्रेमवर्क आहे जो तुम्ही कमी औपचारिकतेसाठी वापरता. येथे ग्राफ बिल्डर नाही, क्रू नाही, वर्कफ्लो नाही - फक्त एजंट, साधने, आणि एक run() पद्धत. साधने Python callable आहेत. फ्रेमवर्क LLMs ला साधन समर्थनासह कॉल करण्यासाठी, मेमरी व्यवस्थापित करण्यासाठी, आणि स्ट्रीमिंग आउटपुट तयार करण्यासाठी पुरेशी स्कॅफोल्डिंग जोडते, नंतर तुमच्या मार्गातून बाहेर पडते.
रेसिपी त्याच तत्त्वज्ञानाचे अनुसरण करते. तुम्ही एक लहान Toolkit उपवर्ग लिहिता जो वास्तविक क्लायंटला कॉल करणारी एक पद्धत नोंदवतो - ते प्रत्येक इतर 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 की आहे; 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() पुन्हा-सीरियलाइझ केलेले नाही, कारण ते सिग्नेचरच्या कव्हर केलेल्या बाइट्समध्ये बदल करते. शिप केलेले इव्हेंट्स आहेत 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 येथे आहे. Base Sepolia वर sk_test_ key ने सुरुवात करा, आणि toolkit अपेक्षेप्रमाणे काम करू लागल्यावर sk_live_ वर स्विच करा.
पाच Agno-विशिष्ट गोष्टी लक्षात ठेवण्यासारख्या.
Agno एक स्वच्छ एजंट फ्रेमवर्क आहे ज्यास एकत्रित करणे सोपे आहे, परंतु त्यात काही अडचणी आहेत - विशेषतः Phidata पुननामकरण आणि मार्कडाउन रेंडरिंगच्या आसपास.
Agno पॅकेज नाही - तुम्ही SDK एका टूलकिटमध्ये लपवता.
Blockchain0x LangChain आणि CrewAI साठी अडॅप्टर्स आणि MCP सर्व्हर पाठवते; येथे कोणतीही समर्पित Agno पॅकेज नाही. वरील रेसिपी हा मार्ग आहे: एक टूलकिट उपवर्ग जो वास्तविक blockchain0x क्लायंटला कॉल करणारी पद्धत नोंदवतो. Agno पद्धतीची स्वाक्षरी आणि डॉकस्ट्रिंग वाचतो जेणेकरून टूल स्कीमा तयार करता येईल, त्यामुळे डॉकस्ट्रिंग अचूक ठेवा.
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 कॉल समक्रमित आहे; जर तुम्ही async मार्गावर असाल आणि वास्तविक प्रमाण हलवत असाल, तर ते asyncio.to_thread सह लपवा जेणेकरून इव्हेंट लूप प्रतिसाद देत राहील.
कच्च्या शरीराच्या विरोधात वेबहुक सत्यापित करा
जर तुमचा एजंट USDC देखील प्राप्त करतो, तर ते वेबहुकद्वारे पुष्टी करा, मतदानाद्वारे नाही. RAW विनंती बाइट्सवर स्वाक्षरीची पुष्टी करा (await request.body()), कधीही request.json() पुन्हा-सीरियलाइज केलेले नाही, कारण HMAC अचूक बाइट्स कव्हर करते. हे HMAC-SHA256 आहे ज्यात 300-सेकंद पुनरुत्पादन विंडो आहे. खालील हँडलर संपूर्ण गोष्ट आहे.