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

CrewAI भुगतान एकीकरण।

CrewAI क्रू को एक वॉलेट दें। एक समर्पित खजांची एजेंट USDC भेजता है, चालान का निपटारा करता है, और संतुलन पढ़ता है जबकि कार्य एजेंट काम पर केंद्रित रहते हैं।

संक्षिप्त उत्तर

Blockchain0x एक वास्तविक Python package, , ship करता है। इसे install करें, set करें, call करें, और 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-crewai
पर्यावरण चर
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

BLOCKCHAIN0X_API_KEY आपके Blockchain0x dashboard से एक sk_test_ testnet या sk_live_ mainnet key है, और adapter को केवल यही variable चाहिए - यह key को backend तक forward करता है और अपना कोई secret नहीं रखता. नीचे दिए गए webhook handler के लिए आपको BLOCKCHAIN0X_WEBHOOK_SECRET भी सेट करना होगा, जिसे dashboard webhook create या rotate करने पर एक बार देता है.

पूर्ण क्रू उदाहरण

बिलिंग + अनुसंधान भूमिकाओं के साथ एक कार्यशील दो-एजेंट क्रू।

नीचे एक पूरा CrewAI क्रू है जहाँ एक खजांची एजेंट एक डेटा विक्रेता को USDC में भुगतान करता है, और एक शोधकर्ता एजेंट परिणाम का उपयोग करता है। खजांची वॉलेट टूल्स रखता है; शोधकर्ता के पास कोई नहीं है। यह एक क्रू के लिए मानक पैटर्न है जो खर्च करता है।

CREW.PY
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 आपके एजेंट के पास निपटता है, तो Blockchain0x आपके वेबहुक URL पर एक साइन किया हुआ इवेंट POST करता है। सत्यापन सहायक Node SDK में भेजा जाता है; एक Python सेवा दस्तावेजित HMAC के खिलाफ हाथ से सत्यापित करती है, जो सहायक वैसे भी करता है। नीचे Flask उदाहरण; वही कोड FastAPI या किसी भी Python वेब ढांचे में काम करता है।

WEBHOOK_HANDLER.PY
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

यह असली एल्गोरिदम है: t.rawBody स्ट्रिंग पर HMAC-SHA256, एक स्थायी समय की तुलना, और 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। यदि एक क्रू को केवल भुगतान करने की आवश्यकता है, तो उसे केवल एक ही दें।

SINGLE_TOOL.PY
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")

per-capability 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 में है.

सामान्य pitfalls

एक क्रू में बिलिंग को वायर करते समय देखने के लिए पांच चीजें।

CrewAI की भूमिका-आधारित डिज़ाइन इसे अन्य ढांचों की तुलना में भुगतान एकीकरण को साफ़ बनाती है। इसमें अपनी खुद की चुनौतियाँ भी हैं। इन्हें पहले से जानना समय बचाता है।

PITFALL 1

गलत एजेंट पर वॉलेट टूल डालना

CrewAI एजेंटों की भूमिकाएँ होती हैं। वॉलेट उपकरणों को शोधकर्ता को सौंपें, जिसे शोध करना चाहिए, और LLM विश्लेषण के मध्य पैसे स्थानांतरित करने की कोशिश करना शुरू कर देता है। साफ पैटर्न एक समर्पित ट्रेजरर एजेंट है जो उपकरणों को रखता है और अपने स्वयं के कार्य के रूप में चलता है; कार्य एजेंटों के पास बिल्कुल भी वॉलेट एक्सेस नहीं होता है। ऊपर दिया गया उदाहरण उस आकार का अनुसरण करता है। इसे कॉपी करें।

PITFALL 2

अनुक्रमिक बनाम पदानुक्रमित प्रक्रियाएँ

CrewAI अनुक्रमिक (डिफ़ॉल्ट) और पदानुक्रमित निष्पादन का समर्थन करता है। पदानुक्रमित के साथ, एक प्रबंधक एजेंट क्रू का समन्वय करता है। यदि प्रबंधक को वॉलेट उपकरणों को सौंपने की अनुमति है, तो वह उन्हें किसी भी अधीनस्थ को सौंप सकता है, जो कि खर्च प्राधिकरण के लिए आप बिल्कुल नहीं चाहते हैं। या तो उपकरणों को एक समर्पित एजेंट पर रखें और अनुक्रमिक रूप से चलाएँ, या प्रबंधक के प्रतिनिधित्व नियमों को प्रतिबंधित करें।

PITFALL 3

कार्य संदर्भ से निपटान स्थिति पढ़ना

इनबाउंड निपटान असिंक्रोनस है। यदि शोध कार्य अपने संदर्भ में भुगतान कार्य को सूचीबद्ध करता है (ठीक है) लेकिन LLM फिर उस संदर्भ से अंतिम भुगतान स्थिति पढ़ने की कोशिश करता है (ठीक नहीं है, पुष्टि बाद में वेबहुक द्वारा आती है), तो आपको उलझा हुआ आउटपुट मिलता है। डाउनस्ट्रीम कार्य को एक वेबहुक-प्रेरित संकेत पर गेट करें, न कि कार्य संदर्भ पर। CrewAI के कार्य कॉलबैक सही हुक हैं।

PITFALL 4

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

PITFALL 5

Webhook हैंडलर क्रू प्रक्रिया के बाहर

आपका वेबहुक हैंडलर आमतौर पर एक अलग Flask या FastAPI प्रक्रिया होती है, जो क्रू रनटाइम का हिस्सा नहीं होती है। क्रू अपनी kickoff() समाप्त करता है और लौटता है; वेबहुक बाद में तब आता है जब एक भुगतान निपटता है। दोनों को एक कतार या एक डेटाबेस पंक्ति के साथ जोड़ें जिसे वेबहुक लिखता है और क्रू अपने अगले रन पर पढ़ता है। एक वेबहुक की प्रतीक्षा में क्रू को जीवित न रखें - CrewAI रन डिज़ाइन द्वारा अल्पकालिक होते हैं।

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

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

क्या यह CrewAI Flows (नया ग्राफ-आधारित निष्पादन) के साथ काम करता है?

हाँ। create_blockchain0x_toolset मानक CrewAI उपकरण लौटाता है, इसलिए वे क्लासिक Crew + Task संरचनाओं और CrewAI Flow के @start/@listen पैटर्न में काम करते हैं। Flow में, भुगतान या निपटान चरण को कार्य चरणों से पहले एक समर्पित ट्रेजरर चरण पर रखें, और कार्य चरणों को एक Flow घटना पर सुनने दें जो आपके वेबहुक हैंडलर के साझा राज्य को अपडेट करने पर सक्रिय होती है।

क्या वही क्रू एक साथ कई भुगतान किए गए कार्य चला सकता है?

हाँ। payments.create (जिसे blockchain0x_send_payment लपेटता है) एक स्थिर Idempotency-Key को स्वचालित रूप से उत्पन्न करता है, इसलिए एक पुनः प्रयास की गई सबमिशन एकल ऑन-चेन ट्रांसफर में समाहित होती है न कि डबल-पेमेंट में। यदि आप समानांतर प्रारंभों को फैलाते हैं जो प्रत्येक धन को स्थानांतरित करते हैं, तो प्रत्येक को अपना इरादा दें (विशिष्ट प्राप्तकर्ता या मेटाडेटा) ताकि वे एक-दूसरे के डुप्लिकेट न लगें। आप स्वयं idempotency हेडर का प्रबंधन नहीं करते हैं जब तक कि आप प्रक्रियाओं के बीच डेडुप्लिकेट करना नहीं चाहते।

क्या क्रू चालान निपटा सकता है, और क्या एक रिफंड टूल है?

यह निपटान कर सकता है: blockchain0x_settle_invoice एक भुगतान अनुरोध को निपटाता है जिसे आपने डैशबोर्ड में बनाया था और ऑन-चेन प्रमाण (tx हैश, भुगतानकर्ता, सत्यापित USDC राशि) को रिकॉर्ड करता है। कोई रिफंड सहायक नहीं है - वह पहचानकर्ता मौजूद नहीं है। फंड लौटाने के लिए, खजांची बस blockchain0x_send_payment के साथ भुगतानकर्ता को एक नया USDC भुगतान वापस भेजता है। इसे खजांची की भूमिका पर रखें ताकि खर्च करने का अधिकार एक जगह पर बना रहे।

अपनी क्रू में एक बिलिंग भूमिका जोड़ें।

pip इंस्टॉल से लेकर आपके पहले भुगतान क्रू किकऑफ तक मिनटों में। शुरू करने के लिए मुफ्त।