Ana içeriğe atla
OPENAI AJANLARI SDK ENTEGRASYONU

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.

KISA CEVAP

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.

NEDEN OPENAI AJANLARI SDK

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.

KURULUM

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.

KUR
pip install openai-agents blockchain0x
ORTAM DEĞİŞKENLERİ
export 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.

TARİF

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.

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

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, arq) ve yöneticiyi engellemek yerine hemen 200 yanıtı verin.

KAYNAK VE BELGELER

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

İlk entegrasyonda izlenmesi gereken beş şey.

Bunlar destek gelen kutumuzdan gelmektedir. Önceden bilmek, her birinde bir saat tasarruf sağlar.

PITFALL 1

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.

PITFALL 2

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.

PITFALL 3

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.

PITFALL 4

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.

PITFALL 5

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.

SIKÇA SORULAN

Üç OpenAI Agents SDK sorusu.

Özel bir OpenAI Agents SDK paketi kurmak var mı?

Hayır. Agents SDK zaten süslenmiş bir işlevi @function_tool ile bir araca dönüştürüyor, bu nedenle dürüst yol, yukarıda gösterildiği gibi gerçek blockchain0x istemcisini kendiniz sarmaktır. Gönderilen tek çerçeve paketleri blockchain0x-langchain ve blockchain0x-crewai'dir (her ikisi de Python) ve @blockchain0x/mcp sunucusudur. Agents SDK, özel bir adaptörü olmayan diğer çerçeveler gibi, bu birkaç satırlık tarif.

Bunu Agents SDK olmadan doğrudan OpenAI Responses API ile kullanabilir miyim?

Evet. Responses API, Agents SDK'nin üzerine kurulduğu tool-calling katmanıdır. client.responses.create() çağrısını doğrudan yaparsanız, aynı function'ı request'in tools listesinde bir tool olarak tanımlayın ve model istediğinde çağrıyı kendiniz dispatch edin - body yalnızca recipe'deki blockchain0x.payments.create çağrısıdır. Agents SDK en kolay yoldur çünkü @function_tool bu tool şemasını ve dispatch'i sizin için oluşturur.

Bu, çoklu ajan devretmeleriyle çalışıyor mu?

Evet ve wallet'ın hangi agent'a ait olduğuna siz karar verirsiniz. Temiz model, payment function'ı tek bir ön yüzdeki agent'a vermek ve gerçek işi wallet tool'ları taşımayan uzman agent'lara devretmesini sağlamaktır. Harcama yetkisi tek bir yerde kalır, böylece yanlış agent'tan ücret çekilmez. Read ve settle function'larını da aynı şekilde ekleyin - blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle - her birini kendi @function_tool'u olarak.

Agents SDK derlemenize ödemeler ekleyin.

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