CrewAI पेमेंट इंटिग्रेशन.
CrewAI क्रूला एक वॉलेट द्या. एक समर्पित खजिनदार एजंट USDC पाठवतो, इनव्हॉइस निपटवतो, आणि बॅलन्स वाचतो, तर काम करणारे एजंट कामावर लक्ष केंद्रित ठेवतात.
Blockchain0x एक खरे Python package, , देते. ते install करा, set करा, कॉल करा, आणि tools एका dedicated treasurer agent कडे द्या. तो agent USDC पाठवू शकतो, on-chain proof सह invoice settle करू शकतो, आणि wallets वाचू शकतो, तर crew मधील work agents कडे wallet access नसतो. USDC Base वर settle होते.
CrewAI ची ताकद भूमिका विभाजन आहे. याचा वापर वॉलेटसाठी देखील करा.
इतर फ्रेमवर्क प्रत्येक साधन एका एजंटवर ढकलतात. CrewAI चा डिझाइन भूमिका विभाजनाला प्रोत्साहन देतो: एक संशोधक संशोधन करतो, एक लेखक लिहितो, एक पुनरावलोकक पुनरावलोकन करतो. पैशांना समान उपचाराची आवश्यकता आहे - एक समर्पित खजिनदार एजंट वॉलेट साधने धरतो, आणि कार्य एजंट काहीही धरत नाही. खर्चाची अधिकृतता एका ठिकाणी राहते, प्रत्येक एजंटमध्ये गळती होण्याऐवजी जो क्रूमध्ये असतो.
हे आकार ऑडिट ट्रेल्स स्पष्ट करते. जेव्हा USDC हलते, तेव्हा तुम्हाला नेमकं कोणता एजंट ते हलवतो (खजिनदार) आणि कोणती कार्यासाठी (ज्याने त्याला हस्तांतरित केले) हे माहित असते. एकल-एजंट एकत्रीकरण त्या रेषेला धूसर करते आणि प्रत्येक कार्य खर्च विश्लेषण अधिक कठीण करते.
एक पिप स्थापना. एक वातावरणीय चल.
पॅकेजला Python 3.10 किंवा नवीनतम आवश्यक आहे आणि हे कविता किंवा पिपसह कार्य करते. हे मुख्य blockchain0x SDK आणि crewai यांना अवलंबन म्हणून आणते; काहीही जोडण्याची आवश्यकता नाही.
pip install blockchain0x-crewaiexport BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
BLOCKCHAIN0X_API_KEY हे तुमच्या Blockchain0x डॅशबोर्डमधील sk_test_ testnet किंवा sk_live_ mainnet की आहे, आणि adapter ला लागणारे ते एकमेव variable आहे - तो की backend कडे forward करतो आणि स्वतःकडे कोणतेही secret ठेवत नाही. खालील webhook handler साठी तुम्ही BLOCKCHAIN0X_WEBHOOK_SECRET देखील set करता, जो webhook तयार करताना किंवा rotate करताना डॅशबोर्ड एकदाच परत देतो.
बिलिंग + संशोधन भूमिकांसह कार्यरत दोन एजंटांची टीम.
खाली एक संपूर्ण CrewAI क्रू आहे जिथे एक खजिनदार एजंट USDC मध्ये डेटा विक्रेत्यास पैसे देतो, आणि एक संशोधक एजंट परिणाम वापरतो. खजिनदार वॉलेट टूल्स ठेवतो; संशोधक काहीही ठेवत नाही. हे खर्च करणाऱ्या क्रूचा मानक नमुना आहे.
from crewai import Agent, Task, Crew from blockchain0x import Client from blockchain0x_crewai import create_blockchain0x_toolset client = Client() # reads BLOCKCHAIN0X_API_KEY from the environment tools = create_blockchain0x_toolset(client) # A dedicated treasurer holds the wallet tools; the work agents do not. treasurer = Agent( role="Treasurer", goal="Pay vendor invoices in USDC within owner-set limits", backstory="Operates a Blockchain0x agent wallet on Base.", tools=tools, allow_delegation=False, ) researcher = Agent( role="Senior Market Analyst", goal="Produce a thorough Q4 LLM market analysis", backstory="A specialist analyst with 10 years in tech-market research.", tools=[], allow_delegation=False, ) pay_task = Task( description="Pay 0.01 USDC from our agent wallet to the data vendor at 0xVendor.", expected_output="The transaction hash of the settled payment.", agent=treasurer, ) research_task = Task( description="Using the purchased dataset, write the Q4 LLM market analysis.", expected_output="A 1,500-word market analysis.", agent=researcher, context=[pay_task], ) crew = Crew(agents=[treasurer, researcher], tasks=[pay_task, research_task]) result = crew.kickoff()
When you call crew.kickoff(), the pay_task runs first: the treasurer calls blockchain0x_send_payment, the SDK submits the transfer on Base, and the transaction hash is the task output. The research_task runs next and uses the purchased result. amount_wei is USDC base units, so 0.01 USDC is the string "10000". On a sk_test_ key the whole flow runs on Base Sepolia, and payments.create can answer 503 until the chain adapter is wired for your network.
एक भरणा येताच पुढील क्रूला सक्रिय करणे.
USDC तुमच्या agent कडे settle झाले की Blockchain0x तुमच्या webhook URL वर signed event POST करते. verify helper Node SDK मध्ये येतो; Python service दस्तऐवजीकृत HMAC विरुद्ध स्वतः हाताने verify करते, आणि helper प्रत्यक्षात तेवढेच करते. खाली Flask उदाहरण आहे; तोच कोड FastAPI किंवा कोणत्याही Python web framework मध्ये चालतो.
import hmac, hashlib, os, time from flask import Flask, request, abort app = Flask(__name__) SECRET = os.environ["BLOCKCHAIN0X_WEBHOOK_SECRET"].encode() @app.post("/webhooks/payment") def receive(): raw = request.get_data() # RAW bytes - do not parse first sig = request.headers.get("X-Blockchain0x-Signature", "") ts = request.headers.get("X-Blockchain0x-Timestamp", "") # Header is "t=<unix>,v1=<hex>"; some proxies send bare hex + the ts header. 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: abort(401) if request.headers.get("X-Blockchain0x-Event-Type") == "payment.received": run_followup_for(request.get_json()) # USDC landed - do the work return "ok", 200
हे खरे अल्गोरिदम आहे: HMAC-SHA256 वर t.rawBody स्ट्रिंग, एक स्थिर वेळ तुलना, आणि 300-सेकंद पुनरुत्पादन विंडो. कच्चा शरीर वाचा (request.get_data()), कधीही request.get_json() पुन्हा-सिरियलाइज केलेले नाही, कारण ते स्वाक्षरीच्या कव्हर केलेल्या बाइट्समध्ये बदल करते. आर्किटेक्चर: हँडलरला एक काम रांगेत ठेवण्यास सांगा (Celery, RQ, एक Redis यादी) जे वास्तविक CrewAI चालवते. हँडलरच्या आत crew.kickoff() कॉल करणे मिनिटे घेऊ शकते आणि HTTP विनंतीचा टाइमआउट होतो.
क्रूला संपूर्ण साधन संच द्या, किंवा फक्त एक साधन.
create_blockchain0x_toolset सर्व पाच टूल्स परत करते: blockchain0x_send_payment, blockchain0x_settle_invoice, blockchain0x_get_wallet, blockchain0x_list_wallets, आणि blockchain0x_get_transaction. जर एका क्रूला फक्त पेमेंट करायचे असेल, तर त्यास एकच एक द्या.
from blockchain0x_crewai import create_payment_tool pay = create_payment_tool(client) # amount_wei is USDC base units: 6 decimals, so 10000 = 0.01 USDC. pay.run(agent_id="agt_123", to="0xRecipient", amount_wei="10000")
प्रत्येक क्षमता-आधारित factories म्हणजे create_payment_tool, create_invoice_tool, create_wallet_tool, create_wallets_list_tool, आणि create_transaction_tool. Source आणि testnet examples the Python SDK repo येथे आहेत; CrewAI support matrix the docs येथे आहे.
क्रूमध्ये बिलिंग वायरींग करताना लक्ष ठेवण्यासारख्या पाच गोष्टी.
CrewAI चा भूमिका आधारित डिझाइन पेमेंट इंटिग्रेशनला इतर फ्रेमवर्कपेक्षा अधिक स्वच्छ बनवतो. यामध्ये स्वतःचे काही धोके आहेत. याबद्दल आधीच माहिती असणे वेळ वाचवते.
चुकलेल्या एजंटवर वॉलेट साधने ठेवणे
CrewAI एजंट्समध्ये भूमिका असतात. वॉलेट टूल्स संशोधकाला द्या, जो संशोधन करत असावा, आणि LLM विश्लेषणाच्या मध्यभागी पैसे हलवण्याचा प्रयत्न करतो. स्वच्छ पॅटर्न म्हणजे एक समर्पित खजिनदार एजंट जो टूल्स ठेवतो आणि स्वतःच्या कार्य म्हणून चालतो; कार्य एजंट्समध्ये कोणतेही वॉलेट प्रवेश नाही. वरील उदाहरण त्या आकाराचे अनुसरण करते. ते कॉपी करा.
क्रमिक विरुद्ध श्रेणीबद्ध प्रक्रिया
CrewAI अनुक्रमिक (डिफॉल्ट) आणि पदानुक्रमित कार्यक्षमता समर्थन करते. पदानुक्रमित कार्यक्षमता सह, एक व्यवस्थापक एजंट क्रूचे आयोजन करतो. जर व्यवस्थापकाला वॉलेट टूल्सचे प्रतिनिधित्व करण्याची परवानगी असेल, तर तो त्यांना कोणत्याही अधीनस्थाला देऊ शकतो, जे तुम्हाला खर्चाच्या अधिकारासाठी नको आहे. किंवा एकाच समर्पित एजंटवर टूल्स ठेवा आणि अनुक्रमिक चालवा, किंवा व्यवस्थापकाच्या प्रतिनिधित्व नियमांना मर्यादा ठेवा.
कार्याच्या संदर्भातून निपटारा स्थिती वाचन
इनबाउंड निपटारा असिंक्रोनस आहे. जर संशोधन कार्याने त्याच्या संदर्भात पेमेंट कार्य सूचीबद्ध केले (ठीक आहे) पण LLM नंतर त्या संदर्भातून अंतिम पेमेंट स्थिती वाचण्याचा प्रयत्न करतो (ठीक नाही, पुष्टी वेबहुकद्वारे नंतर येते), तुम्हाला गोंधळलेले आउटपुट मिळते. वेबहुक-प्रेरित सिग्नलवर डाउनस्ट्रीम काम गेट करा, कार्य संदर्भावर नाही. CrewAI च्या कार्य कॉलबॅक्स योग्य हुक आहेत.
रक्कम USDC बेस युनिट्स आहेत, स्ट्रिंग्स म्हणून
blockchain0x_send_payment takes amount_wei: a string of USDC base units, not a float and not a dollar figure. USDC has 6 decimals, so 0.01 USDC is "10000". CrewAI passes tool inputs through as-is, so a Python float arrives as a float and the SDK rejects it - but the error reads like a CrewAI tool error, which throws off first integrators. Pass a string.
Webhook हँडलर क्रू प्रक्रियेतून बाहेर
तुमचा webhook handler सहसा crew runtime चा भाग नसून एक स्वतंत्र Flask किंवा FastAPI process असतो. crew आपले kickoff() पूर्ण करून परततो; payment settle झाल्यावर webhook नंतर येतो. दोन्ही जोडण्यासाठी queue किंवा database row वापरा - webhook त्यात लिहितो आणि crew पुढच्या run मध्ये ते वाचतो. webhook ची वाट पाहत crew सतत चालू ठेवू नका - CrewAI runs रचनेनेच short-lived असतात.