Ana içeriğe atla
CREWAI ENTEGRASYONU

CrewAI ödeme entegrasyonu.

Bir CrewAI ekibine bir cüzdan verin. Özel bir müsteşar ajanı USDC gönderir, faturaları kapatır ve bakiye okur, çalışma ajanları ise işe odaklanır.

KISA CEVAP

Blockchain0x, gerçek bir Python paketi, , sunar. Kurun, ayarlayın, çağırın ve araçları özel bir kasiyer ajanına verin. Bu ajan USDC gönderebilir, zincir üstü kanıtla bir faturayı kapatabilir ve cüzdanları okuyabilir; ekipteki çalışan ajanlar ise hiçbir cüzdan erişimi taşımaz. USDC mutabakatı Base üzerinde yapılır.

NEDEN ÖZEL BİR MALİ SORUMLU ROLÜ VAR

CrewAI'nin gücü rol ayrımıdır. Bunu cüzdan için de kullanın.

Diğer çerçeveler her aracı tek bir ajana yığar. CrewAI'nin tasarımı rol ayrımını teşvik eder: bir araştırmacı araştırır, bir yazar yazar, bir gözden geçiren gözden geçirir. Para aynı muameleyi hak eder - özel bir maliye ajanı cüzdan araçlarını tutar ve çalışma ajanları hiçbiri tutmaz. Harcama yetkisi bir yerde yaşar, her ajanın ekibin içinde olmasına neden olmadan.

Bu yapı ayrıca denetim izlerini daha net hale getirir. USDC hareket ettiğinde, onu kimin (mali sorumlu) taşıdığını ve hangi görev için olduğunu (ona devreden) tam olarak bilirsiniz. Tek ajans entegrasyonları bu çizgiyi bulanıklaştırır ve görev başına harcama analizlerini zorlaştırır.

KURULUM

Bir pip kurulumu. Bir ortam değişkeni.

Paketin Python 3.10 veya daha yenisi gereklidir ve poetry veya pip ile çalışır. Temel blockchain0x SDK'sını ve crewai'yi bağımlılık olarak çeker; ekleyecek başka bir şey yoktur.

KUR
pip install blockchain0x-crewai
ORTAM DEĞİŞKENLERİ
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

BLOCKCHAIN0X_API_KEY, Blockchain0x dashboard'unuzdan alınan bir sk_test_ testnet veya sk_live_ mainnet anahtarıdır ve adapter'ın ihtiyaç duyduğu tek değişkendir - anahtarı backend'e iletir ve kendi içinde hiçbir sır tutmaz. Aşağıdaki webhook handler için ayrıca BLOCKCHAIN0X_WEBHOOK_SECRET ayarlarsınız; bu değer, bir webhook oluşturduğunuzda veya rotate ettiğinizde dashboard tarafından bir kez gösterilir.

TAM EKİP ÖRNEĞİ

Faturalama + araştırma rolleri olan çalışan iki ajan ekibi.

Aşağıda, bir müsteşar ajanın bir veri satıcısına USDC ile ödeme yaptığı ve bir araştırmacı ajanın sonucu kullandığı tam bir CrewAI ekibi bulunmaktadır. Müsteşar cüzdan araçlarını tutar; araştırmacı hiç tutmaz. Bu, harcama yapan bir ekip için kanonik bir modeldir.

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.

WEBHOOK İŞLEME

Bir ödeme gerçekleştiğinde bir sonraki ekibi tetiklemek.

USDC ajana yerleştiğinde, Blockchain0x imzalı bir olayı webhook URL'nize POST eder. Doğrulama yardımcı programı Node SDK'da bulunur; bir Python servisi, belgelenmiş HMAC'a karşı elle doğrular, bu da yardımcı programın yaptığı tek şeydir. Aşağıdaki Flask örneği; aynı kod FastAPI veya herhangi bir Python web çerçevesinde çalışır.

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

Bu gerçek algoritmadır: t.rawBody dizesi üzerinde HMAC-SHA256, sabit zamanlı karşılaştırma ve 300 saniyelik tekrar penceresi. Ham gövdeyi okuyun (request.get_data()), asla request.get_json() yeniden serileştirilmiş olarak okumayın, çünkü bu imzanın kapsadığı baytları değiştirir. Mimari: işleyicinin, gerçek CrewAI çalışmasını tetikleyen bir işi (Celery, RQ, bir Redis listesi) sıraya almasını sağlayın. İşleyici içinde crew.kickoff() çağrısı yapmak dakikalar alabilir ve HTTP isteğini zaman aşımına uğratabilir.

BİR ARAÇ, YA DA HEPSİ

Ekibe tüm araç setini veya sadece bir aracı verin.

create_blockchain0x_toolset beş aracın tamamını döndürür: blockchain0x_send_payment, blockchain0x_settle_invoice, blockchain0x_get_wallet, blockchain0x_list_wallets ve blockchain0x_get_transaction. Bir crew'un yalnızca ödeme yapması gerekiyorsa, ona tek bir factory ile sadece onu verin.

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")

Capability başına factory'ler create_payment_tool, create_invoice_tool, create_wallet_tool, create_wallets_list_tool ve create_transaction_tool'dur. Source ve testnet örnekleri the Python SDK repo içinde bulunur; CrewAI support matrix the docs içindedir.

YAYGIN TUZAKLAR

Bir ekibe faturalandırma entegre ederken izlenmesi gereken beş şey.

CrewAI'nin rol tabanlı tasarımı, ödeme entegrasyonunu diğer çerçevelerden daha temiz hale getirir. Ayrıca kendi tuzakları da vardır. Bunları önceden bilmek zaman kazandırır.

PITFALL 1

Cüzdan araçlarını yanlış ajana koymak

CrewAI ajanlarının rolleri vardır. Cüzdan araçlarını araştırma yapması gereken araştırmacıya verin ve LLM, analiz sırasında parayı hareket ettirmeye çalışmaya başlar. Temiz model, araçları tutan ve kendi görevi olarak çalışan özel bir müsteşar ajanıdır; çalışma ajanları hiç cüzdan erişimi taşımaz. Yukarıdaki örnek bu şekli takip eder. Kopyalayın.

PITFALL 2

Sıralı vs hiyerarşik süreçler

CrewAI, sıralı (varsayılan) ve hiyerarşik yürütmeyi destekler. Hiyerarşik olduğunda, bir yönetici ajan ekibi yönetir. Yöneticinin cüzdan araçlarını devretmesine izin verilirse, bunları herhangi bir astına verebilir, bu da harcama yetkisi için istemediğiniz tam olarak budur. Ya araçları tek bir özel ajanda tutun ve sıralı olarak çalıştırın ya da yöneticinin devir kurallarını kısıtlayın.

PITFALL 3

Görev bağlamından yerleşim durumunu okuma

Gelen uzlaşma asenkron bir süreçtir. Eğer araştırma görevi ödeme görevini bağlamında listeliyorsa (tamam) ama LLM daha sonra o bağlamdan nihai bir ödeme durumunu okumaya çalışıyorsa (tamam değil, onay daha sonra webhook ile gelir), karışık bir çıktı alırsınız. Aşağı akış işini bir webhook tetikleyici sinyali üzerine kapatın, görev bağlamı üzerine değil. CrewAI'nin görev geri çağırmaları doğru tetikleyicidir.

PITFALL 4

Tutarlar, dize olarak USDC temel birimleridir

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 işleyici ekip sürecinin dışında

Webhook handler'ınız genellikle crew runtime'ının bir parçası değil, ayrı bir Flask veya FastAPI process'idir. Crew kickoff() işlemini bitirir ve döner; webhook ise bir ödeme settle olduğunda daha sonra gelir. İkisini, webhook'un yazdığı ve crew'un bir sonraki çalışmasında okuduğu bir queue veya database row ile bağlayın. Bir crew'u webhook beklerken canlı tutmayın - CrewAI çalışmaları tasarım gereği kısa ömürlüdür.

SIKÇA SORULAN

Üç CrewAI'ye özgü soru.

Bu, CrewAI Akışlarıyla (yeni grafik tabanlı yürütme) çalışıyor mu?

Evet. create_blockchain0x_toolset standart CrewAI tool'ları döndürür, bu yüzden klasik Crew + Task yapılarında ve CrewAI Flow'un @start/@listen pattern'lerinde çalışırlar. Flow içinde, ödeme veya settlement adımını work step'lerinden önce özel bir treasurer step'e koyun ve work step'lerinin, webhook handler'ınız shared state'i güncellediğinde tetiklenen bir Flow event'ini dinlemesini sağlayın.

Aynı ekip birden fazla ücretli görevi eşzamanlı olarak yürütebilir mi?

Evet. blockchain0x_send_payment'in sardığı payments.create, otomatik olarak sabit bir Idempotency-Key üretir; böylece yeniden denenmiş bir gönderim çift ödeme yapmak yerine tek bir on-chain transfer'e dönüşür. Para hareket ettiren eşzamanlı kickoff'ları çoğaltıyorsanız, her birine kendi intent'ini verin (farklı alıcılar veya metadata) ki birbirlerinin kopyası gibi görünmesinler. Processes arasında dedupe yapmak istemiyorsanız idempotency header'ını kendiniz yönetmezsiniz.

Ekip faturaları ödeyebilir mi ve bir iade aracı var mı?

Şu şekilde sonuçlandırabilir: blockchain0x_settle_invoice, kontrol panelinde oluşturduğunuz bir ödeme talebini sonuçlandırır ve zincir üzerindeki kanıtı (tx hash, ödeyen, doğrulanmış USDC miktarı) kaydeder. İade yardımcı aracı yoktur - o tanımlayıcı mevcut değildir. Fonları geri döndürmek için, müsteşar sadece blockchain0x_send_payment ile ödeyene yeni bir USDC ödemesi gönderir. Harcama yetkisini tek bir yerde tutmak için bunu müsteşar rolünde tutun.

Ekibinize bir faturalama rolü ekleyin.

Pip yüklemeden ilk ücretli ekip başlangıcınıza dakikalar içinde. Başlamak ücretsiz.