Agno ödeme entegrasyonu.
Agno paketi yoktur ve buna ihtiyacınız yoktur. Gerçek blockchain0x istemcisini küçük bir Toolkit içinde sarın ve ajansınız Base üzerinde USDC taşıyabilir - minimal soyutlama, Agno tarzı.
Agno'ya özel bir paket yok ve buna ihtiyacınız da yok. Agno bir metodunu araca dönüştürür, bu yüzden gerçek Python istemcisini küçük bir toolkit içine sarar ve bunu 'nize eklersiniz. Agent USDC gönderebilir, faturaları kapatabilir ve cüzdanları okuyabilir; tüm Agno modellerinde (OpenAI, Anthropic, DeepSeek, Llama, Mistral) çalışır. Ödemeler Base üzerinde sonuçlanır.
Hafif Python çerçevesi. Soyutlama vergisi yok.
Agno (eski adıyla Phidata), minimal bir seremoniyi istediğinizde başvurduğunuz ajan çerçevesidir. Hiçbir Grafik oluşturucu, ekip veya iş akışı yok - sadece Ajan, Araçlar ve bir run() yöntemi. Araçlar Python çağrılabilirleridir. Çerçeve, araç desteği ile LLM'leri çağırmak, belleği yönetmek ve akış çıktısı üretmek için yeterli iskele ekler, ardından yolunuzdan çekilir.
Tarif aynı felsefeyi takip eder. Gerçek istemciyi çağıran bir yöntemi kaydeden küçük bir Toolkit alt sınıfı yazarsınız - diğer tüm Agno araçları gibi görünür ve davranır. Oluşturmanın ötesinde özel bir kurulum yoktur, bağlanacak bir grafik yoktur, takip edilecek bir adaptör sürümü yoktur. Basitlik noktadır: grafikleri istiyorsanız LangGraph'ta olurdunuz.
Agno'yu ve çekirdek SDK'yı kurun. İki anahtar.
Ekleyecek bir blockchain0x Agno paketi yoktur. Agno'yu (Python 3.10+, Phidata yeniden adlandırmasından sonraki 1.0+ satırı) ve gerçek blockchain0x çekirdek SDK'sını kurarsınız, ardından aşağıdaki araç setini yazarsınız. Hala phi.* içe aktarımlarındaysanız, önce pip install -U agno çalıştırın.
pip install agno blockchain0xexport OPENAI_API_KEY=sk-... export BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
OPENAI_API_KEY (veya kullandığınız Agno-supported model için eşdeğeri). 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.
Ödeme yapan bir Araç Seti, bir Ajan'a verildi.
Aşağıda, tüm entegrasyon bulunmaktadır. WalletTools, send_usdc'yi kaydeden bir Toolkit alt sınıfıdır, bu da gerçek blockchain0x istemcisini çağırır. Bunu Ajan'a ekleyin ve run() çağrısı aracı çağrısını düzenler. Agno, şemayı oluşturmak için yöntem imzasını ve dokümantasyonu okur.
from agno.agent import Agent from agno.models.openai import OpenAIChat from agno.tools import Toolkit from blockchain0x import Client blockchain0x = Client() # reads BLOCKCHAIN0X_API_KEY from the environment # Wrap the real client in an Agno Toolkit. No dedicated package needed. class WalletTools(Toolkit): def __init__(self): super().__init__(name="wallet_tools") self.register(self.send_usdc) def send_usdc(self, 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( model=OpenAIChat(id="gpt-4o"), tools=[WalletTools()], instructions=["You pay vendor invoices in USDC within owner-set limits."], ) result = agent.run("Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.") print(result.content)
When agent.run() executes, the model decides to pay, 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_. Register more methods on the toolkit - read a wallet, settle an invoice - the same way.
İ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 Agno 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. Toolkit method'ları 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 toolkit beklediğiniz gibi çalıştığında sk_live_ anahtarına geçin.
Beş Agno'ya özgü izlenmesi gereken şey.
Agno, entegre edilmesi en temiz ajan çerçevelerinden biridir, ancak kendi zorlukları vardır - özellikle Phidata yeniden adı ve markdown işleme etrafında.
Agno paketi yoktur - SDK'yı bir Toolkit içinde sararsınız.
Blockchain0x, LangChain ve CrewAI için adaptörler ve MCP sunucusu gönderir; özel bir Agno paketi yoktur. Yukarıdaki tarif, gerçek blockchain0x istemcisini çağıran bir yöntem kaydeden bir Toolkit alt sınıfıdır. Agno, araç şemasını oluşturmak için yöntem imzasını ve belge dizesini okur, bu nedenle belge dizesini doğru tutun.
Phidata'dan Agno'ya geçiş karışıklığı
Agno, 2024'te Phidata'dan yeniden adlandırıldı. phi.agent veya phi.tools'dan içe aktaran eski kod tabanları hala bir uyumluluk shim'i aracılığıyla çalışıyor, ancak agno.* içe aktarmaları güncel olanlardır. Tarif, agno.* kullanıyor; eğer kodunuz hala phi.* içe aktarmalarındaysa, pip install -U agno çalıştırın ve Toolkit eklemeden önce içe aktarma yollarını değiştirin.
Tutarlar, dize olarak USDC temel birimleridir
payments.create takes amountWei: a string of USDC base units (6 decimals), so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the method argument as str. It also does not retry by default and can answer 503 until the chain adapter is wired for your network - return a clear message rather than letting the agent loop.
Senkran vs asenkron çalıştırma
Agno, agent.run() (senkron) ve agent.arun() (asenkron) destekler. Her ajana bir mod seçin - agent.run() çağırın ve sonucu beklemeye çalışın, bir dize beklediğiniz yerde bir coroutine alırsınız. Toolkit içindeki blockchain0x çağrısı senkron; eğer asenkron yoldaysanız ve gerçek hacim taşıyorsanız, asyncio.to_thread ile sarın ki olay döngüsü yanıt vermeye devam etsin.
Webhook'ları ham gövdeye karşı doğrula
Eğer ajanınız da USDC alıyorsa, 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.