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

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 होते हैं।

AGNO क्यों

हल्का 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 blockchain0x
पर्यावरण चर
export 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 ढांचे में काम करता है।

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, 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 करें.

सामान्य pitfalls

पांच Agno-विशिष्ट चीजें जो देखने लायक हैं।

Agno एक साफ-सुथरा एजेंट ढांचा है जिसके साथ एकीकृत करना, लेकिन इसके अपने कुछ जटिलताएँ हैं - विशेष रूप से Phidata नामकरण और मार्कडाउन रेंडरिंग के आसपास।

PITFALL 1

कोई Agno पैकेज नहीं है - आप SDK को एक टूलकिट में लपेटते हैं

Blockchain0x LangChain और CrewAI के लिए एडाप्टर और MCP सर्वर भेजता है; कोई समर्पित Agno पैकेज नहीं है। ऊपर दिया गया नुस्खा यह है: एक Toolkit उपवर्ग जो एक विधि को पंजीकृत करता है जो असली blockchain0x क्लाइंट को कॉल करता है। Agno विधि हस्ताक्षर और docstring को पढ़ता है ताकि उपकरण स्कीमा बनाया जा सके, इसलिए docstring को सटीक रखें।

PITFALL 2

Phidata से Agno माइग्रेशन भ्रम

Agno का नाम 2024 में Phidata से बदल दिया गया। phi.agent या phi.tools से आयात करने वाले पुराने कोडबेस अभी भी संगतता शिम के माध्यम से काम करते हैं, लेकिन agno.* आयात वर्तमान हैं। नुस्खा पूरे में agno.* का उपयोग करता है; यदि आपका कोड अभी भी phi.* आयात पर है, तो pip install -U agno चलाएँ और Toolkit जोड़ने से पहले आयात पथ बदलें।

PITFALL 3

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

PITFALL 4

सिंक बनाम असिंक्रोनस रन

Agno agent.run() (sync) और agent.arun() (async) का समर्थन करता है। प्रत्येक एजेंट के लिए एक मोड चुनें - agent.run() कॉल करें और परिणाम की प्रतीक्षा करने की कोशिश करें और आपको एक coroutine मिलता है जहाँ आप एक स्ट्रिंग की अपेक्षा करते थे। Toolkit के अंदर blockchain0x कॉल समकालिक है; यदि आप असिंक्रोनस पथ पर हैं और वास्तविक मात्रा में आगे बढ़ रहे हैं, तो इसे asyncio.to_thread के साथ लपेटें ताकि इवेंट लूप उत्तरदायी बना रहे।

PITFALL 5

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

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

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

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

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

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

क्या यह Agno Teams (मल्टी-एजेंट सहयोग) के साथ काम करता है?

हाँ। Agno Teams कई Agents को एक coordinated unit में जोड़ते हैं। WalletTools toolkit किसी भी agent में काम करता है जो इसे सूचीबद्ध करता है। Teams के लिए सबसे साफ pattern यह है कि wallet toolkit एक dedicated treasurer agent को दें और बाकी members को काम करने दें, ताकि spending authority एक जगह बनी रहे - CrewAI recipe की ही तरह। toolkit में read और settle methods भी इसी तरह जोड़ें (blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle)।

क्या यह तर्क मॉडल और AgentUI के साथ काम करता है?

हाँ। तर्क मॉडल (o1, DeepSeek R1) उपकरणों को उसी तरह कॉल करते हैं, बस प्रति टर्न धीमा, इसलिए यदि आप चाहते हैं कि उपयोगकर्ता कॉल पूरा होने से पहले प्रगति देखें, तो आंशिक प्रतिक्रिया को स्ट्रीम करें। AgentUI में, Agno का रन निरीक्षक, send_usdc कॉल उपकरण-काल पैनल में किसी अन्य उपकरण की तरह दिखाई देता है, जो विकास के दौरान Base Sepolia पर एक भुगतान होते हुए देखने के लिए सुविधाजनक है।

अपने Agno एजेंट के काम के लिए शुल्क लें।

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