OpenAI Agents SDK entegrasyonu.
Ajanslar SDK paketi yoktur ve buna ihtiyacınız yoktur. Bir işlevi @function_tool ile süsleyin, gerçek blockchain0x istemcisini çağırın ve ajansınız Base üzerinde USDC taşıyabilir.
OpenAI Agents SDK'ye özel bir paket yok ve buna ihtiyacınız da yok. SDK, dekore edilmiş bir fonksiyonu ile bir araca dönüştürür, bu yüzden gerçek Python istemcisini bir fonksiyon içinde sarar ve bunu 'nize eklersiniz. Agent USDC gönderebilir, faturaları kapatabilir ve cüzdanları okuyabilir - tek agent'lar, handoff'lar ve alttaki Responses API boyunca. Ödemeler Base üzerinde sonuçlanır.
OpenAI'nin sunduğu en temiz araç çağırma yüzeyi.
OpenAI Ajanları SDK'sı (2025'te yayımlandı), OpenAI'nın Yanıtlar API'sinin üstünde ajanlar inşa etmek için önerdiği yoldur. Araç kaydı, mesaj döngüleri ve ajanlar arasındaki geçişler etrafındaki gereksiz kodu soyutlar ve temiz, tiplenmiş Python kodu üretir. Bugün OpenAI merkezli bir ajan projesine başlıyorsanız ve çerçeve tercihlerin yoksa, önerdiğimiz SDK budur.
Tarif kasıtlı olarak ince tutulmuştur. send_usdc, @function_tool ile süslenmiş sıradan bir işlevdir; bunu bir Ajansın araç listesine ekler ve Koşucu bunu alır. Özel bir yapılandırma yok, ekstra bir sarmalayıcı yok, SDK'nın bir çatalı yok. Ajans SDK'sı yeni bir özellik (çok modlu girdiler, sesli ajanslar) gönderdiğinde, işleviniz çalışmaya devam eder çünkü standart araç çağırma yüzeyinde sürer - içinde sürüme özgü hiçbir şey yoktur.
Ajans SDK'sını ve çekirdek SDK'yı kurun. İki anahtar.
Ekleyecek bir blockchain0x Ajanslar SDK paketi yoktur. OpenAI Ajanslar SDK'sını (openai-agents paketi, 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.
pip install openai-agents blockchain0xexport OPENAI_API_KEY=sk-... export BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
OPENAI_API_KEY mevcut OpenAI anahtarınızdır (Agents SDK bunu underlying Responses API için kullanır). BLOCKCHAIN0X_API_KEY, dashboard'unuzdan alınan bir sk_test_ testnet veya sk_live_ mainnet anahtarıdır; client bunu environment'tan okur. Agent'iniz para da alıyorsa, webhook handler ayrıca BLOCKCHAIN0X_WEBHOOK_SECRET gerektirir.
Bir @function_tool, ödeme yapan, bir Ajan'a verildi.
Aşağıda, tüm entegrasyon bulunmaktadır. send_usdc, gerçek blockchain0x istemcisini çağırır; @function_tool bunu bir araca dönüştürür ve Runner çağrıyı düzenler. SDK, ş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.
from agents import Agent, Runner, function_tool from blockchain0x import Client blockchain0x = Client() # reads BLOCKCHAIN0X_API_KEY from the environment @function_tool 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. """ return str( blockchain0x.payments.create(body={"agentId": agent_id, "to": to, "amountWei": amount_wei}) ) agent = Agent( name="treasurer", instructions="You pay vendor invoices in USDC within owner-set limits.", tools=[send_usdc], model="gpt-4o", ) result = await Runner.run( agent, input="Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.", ) print(result.final_output)
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 is another @function_tool in the list.
İ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.
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, arq) ve yöneticiyi engellemek yerine hemen 200 yanıtı verin.
Sarmaladığınız istemci açıktır. Okuyun.
Klonlanacak bir Agents SDK 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-pythonTam 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.
İlk entegrasyonda izlenmesi gereken beş şey.
Bunlar destek gelen kutumuzdan gelmektedir. Önceden bilmek, her birinde bir saat tasarruf sağlar.
Ajanslar SDK paketi yoktur - SDK'yı sararsınız.
Blockchain0x, LangChain ve CrewAI için adaptörler ve MCP sunucusu gönderir; özel bir OpenAI Agents SDK paketi yoktur. Yukarıdaki tarif, basit bir tipli işlevi @function_tool ile süslemek, gerçek blockchain0x istemcisini içinde çağırmak ve bunu Agent(tools=[...])'ye eklemektir. SDK, araç şemasını oluşturmak için imzayı ve belge dizesini okur, bu nedenle belge dizesini doğru tutun.
Agents SDK, Assistants API değildir
OpenAI Ajanları SDK'sı (openai-agents paketi, ajanlar olarak içe aktarılır) eski Asistanlar API'sinden farklı bir üründür. Tarif, Ajanlar SDK'sını hedef alır: Ajan + Koşucu + @function_tool Yanıtlar API'si üzerinden. Eğer client.beta.assistants.create(...) çağrısı yapıyorsanız, OpenAI'nin sona erdirdiği eski iplikler/çalışmalar modelindesiniz - Ajanlar SDK'sına geçin ve yukarıdaki işlev doğrudan içine düşer.
Tutarlar, dize olarak USDC temel birimleridir
payments.create takes amountWei: a string of USDC base units, not a float. USDC has 6 decimals, so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the function argument as str; a float will lose precision before it reaches the API. Keep it a string end to end.
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. Runner'ın döngüye girmesine izin vermek yerine hatayı fonksiyonunuz içinde yakalayın ve modelin işlem yapabileceği net bir mesaj döndürün. Otomatik oluşturulan idempotency key sayesinde manuel yeniden deneme çift ödeme oluşturmaz.
Sadece asenkron çalışma zamanı
Ajanlar SDK'sı asenkron önceliklidir - await Runner.run(...). Araç içindeki blockchain0x çağrısı senkronizedir, bu tek bir hızlı ödeme için uygundur ancak yük altında döngüyü engeller. Birçok eşzamanlı ajan çalıştırıyorsanız, SDK çağrısını asyncio.to_thread ile sarın. Senkron bir giriş noktasından, asyncio.run() en üst düzeyde.