Bỏ qua nội dung chính
TÍCH HỢP CREWAI

Tích hợp thanh toán CrewAI.

Cung cấp cho một nhóm CrewAI một ví. Một tác nhân thủ quỹ chuyên dụng gửi USDC, thanh toán hóa đơn và đọc số dư trong khi các tác nhân làm việc vẫn tập trung vào công việc.

CÂU TRẢ LỜI NGẮN

Blockchain0x cung cấp một Python package thực, . Cài đặt nó, đặt , gọi , rồi chuyển các công cụ đó cho một agent thủ quỹ chuyên trách. Agent đó có thể gửi USDC, thanh toán hóa đơn với bằng chứng on-chain, và đọc ví, trong khi các work agent trong đội không có quyền truy cập ví. USDC được tất toán trên Base.

TẠI SAO CÓ MỘT VAI TRÒ THỦ QUỸ CHUYÊN DỤNG

Sức mạnh của CrewAI là sự phân tách vai trò. Sử dụng nó cho ví cũng vậy.

Các khung khác xếp chồng mọi công cụ lên một tác nhân duy nhất. Thiết kế của CrewAI khuyến khích sự tách biệt vai trò: một nhà nghiên cứu nghiên cứu, một nhà văn viết, một người đánh giá đánh giá. Tiền cũng xứng đáng được đối xử như vậy - một tác nhân thủ quỹ chuyên dụng giữ các công cụ ví, và các tác nhân công việc không giữ gì cả. Quyền chi tiêu sống ở một nơi thay vì rò rỉ qua mọi tác nhân có mặt trong nhóm.

Hình dạng này cũng làm cho các dấu vết kiểm toán trở nên rõ ràng hơn. Khi USDC di chuyển, bạn biết chính xác đại lý nào đã di chuyển nó (thủ quỹ) và nhiệm vụ nào nó phục vụ (nhiệm vụ đã chuyển giao cho nó). Các tích hợp đơn đại lý làm mờ ranh giới đó và làm cho phân tích chi tiêu theo nhiệm vụ trở nên khó khăn hơn.

CÀI ĐẶT

Một cài đặt pip. Một biến môi trường.

Gói cần Python 3.10 hoặc mới hơn và hoạt động với poetry hoặc pip. Nó kéo vào SDK blockchain0x cốt lõi và crewai làm phụ thuộc; không cần thêm gì khác.

CÀI ĐẶT
pip install blockchain0x-crewai
BIẾN MÔI TRƯỜNG
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

BLOCKCHAIN0X_API_KEY là một khóa sk_test_ testnet hoặc sk_live_ mainnet từ dashboard Blockchain0x của bạn, và đó là biến duy nhất mà adapter cần - nó chuyển tiếp khóa này tới backend và không giữ secret nào của riêng nó. Với webhook handler bên dưới, bạn cũng đặt BLOCKCHAIN0X_WEBHOOK_SECRET, giá trị này dashboard chỉ trả về một lần khi bạn tạo hoặc xoay vòng một webhook.

VÍ DỤ ĐẦY ĐỦ VỀ ĐỘI NGŨ

Một đội hai tác nhân hoạt động với vai trò thanh toán + nghiên cứu.

Dưới đây là một đội CrewAI hoàn chỉnh nơi một đại lý thủ quỹ thanh toán cho một nhà cung cấp dữ liệu bằng USDC, và một đại lý nghiên cứu sử dụng kết quả. Thủ quỹ giữ các công cụ ví; nhà nghiên cứu không giữ gì cả. Đây là mẫu điển hình cho một đội chi tiêu.

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.

XỬ LÝ WEBHOOK

Kích hoạt nhóm tiếp theo khi một khoản thanh toán được thực hiện.

Khi USDC được giải quyết cho đại lý của bạn, Blockchain0x POST một sự kiện đã ký đến URL webhook của bạn. Trợ giúp xác minh được cung cấp trong SDK Node; một dịch vụ Python xác minh bằng tay theo HMAC đã được tài liệu hóa, điều này là tất cả những gì trợ giúp làm. Ví dụ Flask bên dưới; cùng một mã hoạt động trong FastAPI hoặc bất kỳ khung web Python nào.

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

Đây là thuật toán thực sự: HMAC-SHA256 trên chuỗi t.rawBody, so sánh thời gian không đổi và cửa sổ phát lại 300 giây. Đọc thân dữ liệu thô (request.get_data()), không bao giờ request.get_json() được tái tuần tự hóa, vì điều đó thay đổi các byte mà chữ ký bao phủ. Kiến trúc: để trình xử lý xếp hàng một công việc (Celery, RQ, danh sách Redis) kích hoạt chạy CrewAI thực tế. Gọi crew.kickoff() bên trong trình xử lý có thể mất vài phút và làm hết thời gian yêu cầu HTTP.

MỘT CÔNG CỤ, HOẶC TẤT CẢ NĂM

Trao cho nhóm toàn bộ bộ công cụ, hoặc chỉ một công cụ.

create_blockchain0x_toolset trả về toàn bộ năm tool: blockchain0x_send_payment, blockchain0x_settle_invoice, blockchain0x_get_wallet, blockchain0x_list_wallets, và blockchain0x_get_transaction. Nếu một crew chỉ cần thanh toán, hãy chỉ cấp đúng tool đó bằng một factory duy nhất.

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

Các factory theo từng capability là create_payment_tool, create_invoice_tool, create_wallet_tool, create_wallets_list_tool và create_transaction_tool. Mã nguồn và các ví dụ testnet nằm tại the Python SDK repo; ma trận hỗ trợ CrewAI nằm tại the docs.

CÁC CẠNH TRÁNH THƯỜNG GẶP

Năm điều cần chú ý khi kết nối thanh toán vào một đội.

Thiết kế dựa trên vai trò của CrewAI là điều làm cho tích hợp thanh toán sạch hơn so với các khung khác. Nó cũng có những cạm bẫy riêng. Biết những điều này trước giúp tiết kiệm thời gian.

PITFALL 1

Đặt các công cụ ví trên tác nhân sai

Các tác nhân CrewAI có vai trò. Đưa các công cụ ví cho nhà nghiên cứu, người nên đang nghiên cứu, và LLM bắt đầu cố gắng chuyển tiền giữa phân tích. Mô hình sạch là một tác nhân thủ quỹ chuyên dụng giữ các công cụ và chạy như một nhiệm vụ riêng; các tác nhân làm việc không có quyền truy cập ví. Ví dụ ở trên theo hình dạng đó. Sao chép nó.

PITFALL 2

Quy trình tuần tự vs phân cấp

CrewAI hỗ trợ thực thi tuần tự (mặc định) và phân cấp. Với phân cấp, một tác nhân quản lý điều phối nhóm. Nếu người quản lý được phép ủy quyền các công cụ ví, họ có thể chuyển cho bất kỳ cấp dưới nào, điều này chính xác là điều bạn không muốn cho quyền chi tiêu. Hoặc giữ các công cụ trên một tác nhân chuyên dụng và chạy tuần tự, hoặc hạn chế các quy tắc ủy quyền của người quản lý.

PITFALL 3

Đọc trạng thái thanh toán từ ngữ cảnh tác vụ

Việc thanh toán đến là không đồng bộ. Nếu nhiệm vụ nghiên cứu liệt kê nhiệm vụ thanh toán trong ngữ cảnh của nó (tốt) nhưng LLM sau đó cố gắng đọc trạng thái thanh toán cuối cùng từ ngữ cảnh đó (không tốt, xác nhận đến sau qua webhook), bạn sẽ nhận được đầu ra lẫn lộn. Hạn chế công việc phía dưới dựa trên tín hiệu kích hoạt webhook, không dựa trên ngữ cảnh nhiệm vụ. Các callback nhiệm vụ của CrewAI là điểm gắn kết đúng.

PITFALL 4

Các số lượng là đơn vị cơ sở USDC, dưới dạng chuỗi

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

Bộ xử lý webhook bên ngoài quy trình nhóm

Webhook handler của bạn thường là một tiến trình Flask hoặc FastAPI riêng, không nằm trong runtime của crew. Crew kết thúc kickoff() và trả về; webhook sẽ đến sau khi thanh toán được xác nhận. Hãy nối hai bên bằng một queue hoặc một dòng trong database mà webhook ghi vào và crew đọc ở lần chạy tiếp theo. Đừng giữ một crew sống chỉ để chờ webhook - các lần chạy CrewAI được thiết kế là ngắn hạn.

CÂU HỎI THƯỜNG GẶP

Ba câu hỏi cụ thể về CrewAI.

Điều này có hoạt động với CrewAI Flows (thực thi dựa trên đồ thị mới hơn) không?

Có. create_blockchain0x_toolset trả về các CrewAI tools tiêu chuẩn, nên chúng hoạt động trong các cấu trúc Crew + Task cổ điển và trong các pattern @start/@listen của CrewAI Flow. Trong Flow, hãy đặt bước thanh toán hoặc tất toán trên một bước treasurer riêng trước các bước công việc, và để các bước công việc lắng nghe một Flow event được kích hoạt khi webhook handler của bạn cập nhật shared state.

Cùng một nhóm có thể chạy nhiều nhiệm vụ trả phí đồng thời không?

Có. payments.create (mà blockchain0x_send_payment bọc lại) tự động tạo Idempotency-Key ổn định, nên một lần gửi lại sẽ gộp thành một giao dịch on-chain duy nhất thay vì thanh toán hai lần. Nếu bạn phân tán nhiều kickoff đồng thời mà mỗi cái đều chuyển tiền, hãy cho mỗi cái một intent riêng (người nhận hoặc metadata khác nhau) để chúng không trông giống bản sao của nhau. Bạn không cần tự quản header idempotency trừ khi muốn dedupe giữa nhiều tiến trình.

Nhóm có thể thanh toán hóa đơn, và có công cụ hoàn tiền không?

Nó có thể thanh toán: blockchain0x_settle_invoice thanh toán một yêu cầu thanh toán bạn đã tạo trong bảng điều khiển và ghi lại bằng chứng trên chuỗi (tx hash, người trả, số lượng USDC đã xác minh). Không có trợ giúp hoàn tiền - định danh đó không tồn tại. Để trả lại quỹ, thủ quỹ đơn giản gửi một khoản thanh toán USDC mới trở lại cho người trả với blockchain0x_send_payment. Giữ điều đó ở vai trò thủ quỹ để quyền chi tiêu vẫn ở một nơi.

Thêm vai trò thanh toán vào đội của bạn.

Từ cài đặt pip đến lần khởi động nhóm trả phí đầu tiên của bạn trong vài phút. Miễn phí để bắt đầu.