Ana içeriğe atla
AUTOGEN ENTEGRASYONU

AutoGen ödeme entegrasyonu.

AutoGen paketi yoktur ve buna ihtiyacınız yoktur. Gerçek blockchain0x istemcisini bir işlev içinde sarın, ajansınıza verin ve Base üzerinde USDC taşıyabilir.

KISA CEVAP

AutoGen'e özel bir paket yok ve buna ihtiyacınız da yok. AutoGen zaten düz, tipli bir fonksiyonu araca dönüştürür, bu yüzden gerçek Python istemcisini bir fonksiyon içinde sarar, bir 'ye aracılığıyla verirsiniz ve agent Base üzerinde USDC gönderebilir, faturaları kapatabilir ve cüzdanları okuyabilir. ayarlayın ve başlayın.

NEDEN PAKET YOK

AutoGen zaten bir fonksiyonu bir araç haline getirir. Bunu kullanın.

AutoGen, bir Python fonksiyonunun imzası ve dokümantasyonundan doğrudan bir araç şeması oluşturur. Özel bir AutoGen adaptörü, zaten yazacağımız bir fonksiyonu yalnızca sarardı, sonra AutoGen'in hızlı hareket eden API'si ile senkronizasyonu kaybederdi. Bu yüzden bir tane göndermiyoruz. Gerçek blockchain0x istemcisini çağıran birkaç satır yazıyorsunuz ve argümanların, doğrulamanın ve hata yönetiminin tam kontrolünü elinizde tutuyorsunuz.

Bu, gönderilen LangChain ve CrewAI adaptörlerinin arka planda sardığı aynı istemcidir. Burada kendiniz sarıyorsunuz, bu da takip edilecek bir adaptör sürümü olmadığı ve ajansınız ile API arasında yalnızca kendi fonksiyonunuz olduğu anlamına gelir. Çoklu ajan ekipleri aynı şekilde çalışır: cüzdan fonksiyonunu bir ajana verin, diğerlerini bunun dışında bırakın ve harcama yetkisi bir yerde kalsın.

KURULUM

AutoGen'i ve çekirdek SDK'yı kurun. Bir ortam değişkeni.

Ekleyecek özel bir AutoGen paketi yoktur. AutoGen'i (Python 3.10+) ve gerçek blockchain0x çekirdek SDK'sını kurarsınız, ardından aşağıdaki işlevi yazarsınız. Bu, tüm bağımlılık listesidir.

KUR
pip install autogen-agentchat "autogen-ext[openai]" blockchain0x
ORTAM DEĞİŞKENİ
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

BLOCKCHAIN0X_API_KEY, dashboard'unuzdan alınan bir sk_test_ testnet veya sk_live_ mainnet anahtarıdır; client bunu ortamdan okur. Agent'iniz aynı zamanda para alıyorsa, webhook handler ayrıca BLOCKCHAIN0X_WEBHOOK_SECRET gerektirir; bu değer, bir webhook oluşturduğunuzda veya rotate ettiğinizde dashboard tarafından bir kez döndürülür.

TARİF

Ödeme yapan bir işlev, bir AssistantAgent'a verildi.

Aşağıda, tüm entegrasyon bulunmaktadır. send_usdc, gerçek blockchain0x istemcisini çağırır; AssistantAgent(tools=[send_usdc]) bunu modelin çağırabileceği bir araca dönüştürür. AutoGen, şemayı oluşturmak için tür ipuçlarını ve dokümantasyonu okur, bu yüzden onları dürüst tutun. Çalıştırın ve ajan Base'de USDC'yi taşır.

AJAN.PY
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from blockchain0x import Client

blockchain0x = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment

# AutoGen turns a plain typed function into a tool. No dedicated package needed.
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.
    """
    result = blockchain0x.payments.create(
        body={"agentId": agent_id, "to": to, "amountWei": amount_wei},
    )
    return str(result)

treasurer = AssistantAgent(
    name="treasurer",
    model_client=OpenAIChatCompletionClient(model="gpt-4o"),
    tools=[send_usdc],
    system_message="You pay vendor invoices in USDC within owner-set limits.",
)

result = await treasurer.run(
    task="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_. Add more functions - read a wallet, settle an invoice - the same way; each becomes another entry in tools.

WEBHOOK İŞLEME

İmzalı bir webhook ile gelen ödemeleri onaylayın.

Eğer ajanınız da USDC alıyorsa, bunu polling ile değil, webhook ile doğrulayın. Doğrulama yardımcı programı Node SDK ile birlikte gelir; bir Python hizmetinde belgelenmiş HMAC ile elle doğrulama yaparsınız, bu yardımcı programın yaptığı tek şeydir. Aşağıda FastAPI örneği; aynı kod herhangi bir asenkron Python çerçevesinde çalışır.

WEBHOOK.PY
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 - run the next step
    return {"ok": True}

Algoritma, t.rawBody dizesi üzerinde HMAC-SHA256, sabit zamanlı karşılaştırma ve 300 saniyelik bir tekrar penceresi ile çalışır. Ham veriyi await request.body() aracılığıyla okuyun, asla request.json() ile yeniden serileştirmeyin, çünkü bu imzanın kapsadığı baytları değiştirir. Gönderilen olaylar payment.received, payment.sent, wallet.deployed ve webhook.test'tir. Yoğun takip çalışmaları için bir iş kuyruğa alın (Celery, RQ, arq) ve yöneticiyi engellemek yerine hemen 200 yanıtı verin.

KAYNAK VE BELGELER

Sarmaladığınız istemci açıktır. Okuyun.

Klonlanacak bir AutoGen starter package yok - yukarıdaki recipe entegrasyonun kendisidir. blockchain0x SDK'leri GitHub'da open source'dur; bu recipe Python SDK'yı (blockchain0x-python) sarar ve tam method surface dokümanlarda yer alır. Function body'leri için bir referans olarak okuyun.

github.com/tosh-labs/blockchain0x-python

Tam SDK method surface ve scope'lar the docs içinde belgelenmiştir. Base Sepolia üzerinde bir sk_test_ anahtarıyla başlayın, ardından function beklediğiniz gibi çalıştığında sk_live_ anahtarına geçin.

YAYGIN TUZAKLAR

Beş grup sohbeti ve asenkron kaçınılması gereken tuzak.

AutoGen'in çoklu ajan + asenkron tasarımı güçlü desenleri açar ancak kendi tuzaklarını da getirir. Bunlar destek gelen kutumuzdan gelir.

PITFALL 1

AutoGen paketi yoktur - SDK'yı sararsınız.

Blockchain0x, LangChain ve CrewAI için gönderilen adaptörler ve MCP sunucusu gönderir; özel bir AutoGen paketi yoktur. Yukarıdaki tarif, gerçek blockchain0x istemcisini çağıran basit bir tipli işlevdir ve bunu AssistantAgent(tools=[...])'ye verir. AutoGen, araç şemasını oluşturmak için işlev imzasını ve belge dizesini okur, bu nedenle belge dizesini doğru tutun.

PITFALL 2

Tutarlar, dize olarak USDC temel birimleridir

payments.create takes amountWei: a string of USDC base units, not a float and not a dollar figure. USDC has 6 decimals, so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the tool argument as str and validate it before the call - a float that sneaks through either errors at the backend or moves a millionth of what you meant.

PITFALL 3

send_payment, erken bir 503 dönebilir.

payments.create varsayılan olarak yeniden deneme yapmaz ve chain adapter ağınız için bağlanana kadar 503 döndürebilir. Başarısız bir ödemede group chat'in döngüye girmesine izin vermeyin - hatayı fonksiyonunuz içinde yakalayın, modelin işlem yapabileceği net bir mesaj döndürün ve manuel yeniden denemenin çift ödeme oluşturmaması için otomatik oluşturulan idempotency key'e güvenin.

PITFALL 4

AutoGen 0.4+ asenkron; SDK çağrısı senkron

AutoGen 0.4, araçları asenkron bir döngüde çalıştırır. blockchain0x istemcisi çağrısı senkron olup, hızlı bir istek için uygundur, ancak yavaş bir çağrı döngüyü engeller. Gerçek hacim taşıyorsanız, SDK çağrısını asyncio.to_thread ile sarın ki olay döngüsü yanıt vermeye devam etsin. Her dönüş için tek bir ödeme için, doğrudan çağırmak iyidir.

PITFALL 5

Gelen webhook'ları ham gövdeye karşı doğrula

Eğer ajanınız da para ALIYORSA, bunu polling ile değil, webhook ile doğrulayın. İmzanın HAM istek baytları üzerinde doğrulayın (await request.body()), asla request.json() yeniden serileştirilmiş olarak değil, çünkü HMAC tam baytları kapsar. Bu, 300 saniyelik bir tekrar penceresi ile HMAC-SHA256'dır. Aşağıdaki işleyici tüm budur.

SIKÇA SORULAN

Üç AutoGen'e özgü soru.

Kurulacak özel bir AutoGen paketi var mı?

Hayır. Özel bir AutoGen adaptörü yoktur ve bu kasıtlıdır - AutoGen zaten düz bir tipli işlevi bir araca dönüştürüyor, bu nedenle dürüst yol, gerçek blockchain0x istemcisini bir işlevin içine sarmak ve yukarıda gösterildiği gibi ajana vermektir. Gönderilen tek çerçeve paketleri blockchain0x-langchain ve blockchain0x-crewai'dir (her ikisi de Python) ve @blockchain0x/mcp sunucusudur. Diğer her şey, AutoGen dahil, bu birkaç satırlık tarif.

Tarif klasik AutoGen (0.2.x) ile 0.4+ üzerinde de çalışıyor mu?

Evet, çünkü ödeme mantığı yalnızca bir Python function'dır - içinde AutoGen sürümüne özgü hiçbir şey yoktur. 0.4+ sürümünde bunu yukarıdaki gibi AssistantAgent(tools=[...]) ile verirsiniz. 0.2.x ConversableAgent hattında ise aynı function'ı register_function ile kaydedersiniz. İçe aktarılacak bir .legacy submodule yoktur çünkü ortada bir package yoktur; function size aittir.

Ajanım USDC'yi nasıl alır veya bir faturayı kapatır, sadece göndermekle kalmaz mı?

Client'ın daha fazla kısmını da aynı şekilde sarın. blockchain0x.transactions.get bir transaction okur, blockchain0x.agents.get ve blockchain0x.agents.list wallet'ları okur, blockchain0x.payment_requests.settle ise dashboard'da oluşturduğunuz bir invoice'u on-chain proof ile settle eder. Her biri tools listenizde başka bir typed function olur. Inbound ödemeler payment.received webhook'u ile doğrulanır (aşağıdaki handler ile verify edin); yeni bir invoice oluşturan bir tool yoktur, çünkü payment request'ler dashboard'da oluşturulur.

AutoGen ajanınza bir cüzdan verin.

Gerçek istemciyi saran birkaç satır, yüklemek için paket yok. Başlamak ücretsiz.