LlamaIndex पेमेंट इंटिग्रेशन.
LlamaIndex पॅकेज नाही, आणि तुम्हाला एकाची आवश्यकता नाही. वास्तविक blockchain0x क्लायंट एका FunctionTool मध्ये लपवा आणि तुमचा एजंट USDC हलवू शकतो आणि Base वर एक सशुल्क RAG क्वेरी गेट करू शकतो.
LlamaIndex साठी कोणतेही विशिष्ट package नाही, आणि तुम्हाला त्याची गरजही नाही. LlamaIndex साध्या function ला सह tool मध्ये रूपांतरित करते, त्यामुळे तुम्ही खरा Python client एका function मध्ये wrap करता आणि तो किंवा मध्ये add करता. एजंट USDC पाठवू शकतो, invoices settle करू शकतो, आणि wallets read करू शकतो. प्रति RAG query शुल्क घेण्यासाठी, तुमचा स्वतःचा QueryEngineTool त्याच प्रकारे gate करा. Payments Base वर settle होतात.
RAG क्वेरीज महाग आहेत. प्रति क्वेरी शुल्क आकारणे अर्थशास्त्र कार्य करते.
LlamaIndex ची ताकद पुनर्प्राप्ती-वाढवलेली निर्मिती आहे: तुमच्याकडे मालकीच्या दस्तऐवजांवर (तुमच्या कंपनीचे दस्तऐवज, संशोधन डेटासेट, कायदेशीर संकलन) एक वेक्टर अनुक्रमणिका आहे, आणि एजंट संबंधित तुकडे पुनर्प्राप्त करून आणि संक्षेपित करून उत्तर देतो. प्रत्येक क्वेरीमध्ये वास्तविक पैशांचा खर्च येतो, LLM टोकन आणि अनेकदा तृतीय-पक्ष API कॉल. मोफत अमर्याद प्रवेश बजेट जाळतो; प्रति-क्वेरी बिलिंग खर्चाच्या आकारात बसते.
यासाठी पाठवलेला सहाय्यक नाही, आणि तुम्हाला एकाची आवश्यकता नाही. तुम्ही ते स्वतःच गेट करता: तुमच्या QueryEngineTool च्या कार्यामध्ये, कॉलरने पैसे दिले आहेत का ते तपासा (तुमचा स्वतःचा ध्वज, जो भरण्याच्या वेबहुकने फिरवला) आणि किंवा पुनर्प्राप्ती चालवा किंवा किंमत परत करा. वॉलेट कार्य आणि गेटिंग दोन्ही वास्तविक blockchain0x क्लायंटच्या वर काही ओळी आहेत, जे धोरण ठेवते - प्रत्येक क्वेरी, प्रत्येक सत्र, मोफत स्तर नंतर सशुल्क - पूर्णपणे तुमच्या हातात.
LlamaIndex आणि मुख्य SDK स्थापित करा. एक पर्यावरणीय चल.
जोडण्यासाठी blockchain0x LlamaIndex पॅकेज नाही. तुम्ही LlamaIndex (Python 3.10+, आधुनिक FunctionAgent / ReActAgent / Workflows APIs) आणि वास्तविक blockchain0x कोर SDK स्थापित करता, नंतर खालील कार्य लिहिता. कोणत्याही व्हेक्टर स्टोअरच्या बरोबर कार्य करते - Pinecone, Qdrant, Chroma, Weaviate, LlamaIndex Cloud.
pip install llama-index blockchain0xexport BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
BLOCKCHAIN0X_API_KEY ही तुमच्या dashboard मधील sk_test_ testnet किंवा sk_live_ mainnet की आहे; client ती environment मधून वाचतो. जर तुम्ही paid queries gate करत असाल, तर webhook handler ला BLOCKCHAIN0X_WEBHOOK_SECRET देखील लागतो, जो webhook तयार करताना किंवा rotate करताना डॅशबोर्ड एकदाच परत देतो.
एक कार्य जे पैसे देते, FunctionTool म्हणून लपेटले.
खाली संपूर्ण एकत्रीकरण आहे. send_usdc वास्तविक blockchain0x क्लायंटला कॉल करते; FunctionTool.from_defaults याला लपवते, आणि FunctionAgent याला एक कॉल करण्यायोग्य टूल म्हणून घेतो. LlamaIndex प्रकाराच्या सूचनांमधून आणि डॉकस्ट्रिंगमधून स्कीमा तयार करते. तुमचा स्वतःचा QueryEngineTool यादीत जोडा आणि तोच एजंट RAG क्वेरीजसुद्धा उत्तर देऊ शकतो.
from llama_index.core.tools import FunctionTool from llama_index.core.agent.workflow import FunctionAgent from llama_index.llms.openai import OpenAI from blockchain0x import Client blockchain0x = Client() # reads BLOCKCHAIN0X_API_KEY from the environment 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}) ) # Wrap the plain function as a LlamaIndex tool. No dedicated package needed. pay_tool = FunctionTool.from_defaults(fn=send_usdc) agent = FunctionAgent( tools=[pay_tool], # plus your own QueryEngineTool over a RAG index llm=OpenAI(model="gpt-4o"), system_prompt="You pay vendor invoices in USDC within owner-set limits.", ) response = await agent.run( "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_. To charge for a query instead, put the same paid check at the top of your QueryEngineTool's function.
वेबहुक लँड झाल्यावर पैसे दिलेले ध्वज उलटा करा.
Payment settle झाल्यावर Blockchain0x तुमच्या webhook URL वर signed payment.received event POST करते. verify helper Node SDK मध्ये येतो; Python service मध्ये तुम्ही दस्तऐवजीकृत HMAC विरुद्ध हाताने verify करता. तुमच्या स्वतःच्या store मध्ये caller ला paid म्हणून नोंदवा, आणि तुमचा gated query tool पुढचा call परवानगी देईल. खाली FastAPI उदाहरण आहे.
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 - serve the paid query 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 करण्यासाठी LlamaIndex 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 येथे आहे. Base Sepolia वर sk_test_ key ने सुरुवात करा, आणि function अपेक्षेप्रमाणे काम करू लागल्यावर sk_live_ वर स्विच करा.
पाच LlamaIndex-विशिष्ट जाळे टाळा.
हे आमच्या समर्थन इनबॉक्समधून येतात. प्रत्येकाने तुम्हाला याबद्दल माहिती मिळाल्यावर किमान एक तास डिबगिंग वाचवतो.
LlamaIndex पॅकेज नाही - तुम्ही SDK लपवता.
Blockchain0x LangChain आणि CrewAI साठी अडॅप्टर्स आणि MCP सर्व्हर पाठवते; येथे कोणतीही समर्पित LlamaIndex पॅकेज नाही. वरील रेसिपी हा मार्ग आहे: एक साधी टाइप केलेली कार्यक्षमता जी वास्तविक blockchain0x क्लायंटला कॉल करते, FunctionTool.from_defaults सह लपेटलेली. LlamaIndex स्वाक्षरी आणि डॉकस्ट्रिंग वाचतो जेणेकरून स्कीमा तयार करता येईल, त्यामुळे डॉकस्ट्रिंग अचूक ठेवा.
QueryEngineTool स्वतः गेट करा - कोणताही सहाय्यक ते करत नाही
भाडे-RAG पॅटर्न वास्तविक आणि चांगला आहे, परंतु येथे कोणताही paid_query_engine_tool सहाय्यक नाही. तुम्ही ते तयार करता: तुमच्या क्वेरी साधनाच्या कार्यामध्ये, कॉलरने पैसे दिले आहेत का ते तपासा (तुमचा स्वतःचा स्टोअर, खालील वेबहुकने अद्यतनित केलेले) आणि फक्त ते दिल्यास पुनर्प्राप्ती चालवा, अन्यथा एक किंमत परत करा. हे काही ओळी आहेत, आणि तुम्ही गेटिंग धोरणावर नियंत्रण ठेवता.
रक्कम 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 tool argument as str. LlamaIndex passes tool args through pydantic, which will happily coerce a float and lose precision, so keep it a string end to end.
FunctionAgent.run असिंक्रोनस आहे; SDK कॉल सिंक्रोनस आहे
LlamaIndex एजंट्स असिंक्रोनस-प्रथम आहेत - await agent.run(...). तुमच्या साधनामध्ये blockchain0x क्लायंट कॉल समक्रमित आहे, जो एकल जलद पेमेंटसाठी चांगला आहे पण लोड अंतर्गत लूपला ब्लॉक करतो. जर तुम्ही अनेक समांतर क्वेरीज सेवा देत असाल, तर SDK कॉलला asyncio.to_thread सह लपेटा जेणेकरून इव्हेंट लूप प्रतिसादक्षम राहील.
send_payment लवकर 503 उत्तर देऊ शकते
payments.create डिफॉल्टने पुनःप्रयत्न करत नाही आणि तुमच्या नेटवर्कसाठी चेन अडॅप्टर वायर्ड होईपर्यंत 503 परत करू शकते. तुमच्या टूल फंक्शनमध्ये त्रुटी पकडा आणि मॉडेलवर कार्य करण्यासाठी स्पष्ट संदेश परत करा, एजंट लूप करण्याऐवजी. स्वयंचलितपणे तयार केलेला idempotency की म्हणजे एक मॅन्युअल पुनःप्रयत्न दुहेरी पेमेंट करणार नाही.