Ana içeriğe atla
AGNO ENTEGRASYONU

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

KISA CEVAP

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.

NEDEN AGNO

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.

KURULUM

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.

KUR
pip install agno 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 (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.

TARİF

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

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

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 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-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 toolkit beklediğiniz gibi çalıştığında sk_live_ anahtarına geçin.

YAYGIN TUZAKLAR

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.

PITFALL 1

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.

PITFALL 2

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.

PITFALL 3

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.

PITFALL 4

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.

PITFALL 5

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.

SIKÇA SORULAN

Üç Agno'ya özgü soru.

Kurulacak özel bir Agno paketi var mı?

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

Bu, Agno Takımlarıyla (çoklu ajan işbirliği) çalışıyor mu?

Evet. Agno Teams birden fazla Agent'ı tek bir koordineli birime dönüştürür. WalletTools toolkit'i, onu listeleyen herhangi bir agent'ta çalışır. Teams için temiz model, wallet toolkit'i tek bir özel treasurer agent'a vermek ve diğer üyelerin işi yapmasına izin vermektir; böylece harcama yetkisi tek bir yerde kalır - CrewAI recipe'siyle aynı yapı. Toolkit'e read ve settle method'larını da aynı şekilde ekleyin (blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle).

Akıl yürütme modelleri ve AgentUI ile çalışıyor mu?

Evet. Reasoning modelleri (o1, DeepSeek R1) tool'ları aynı şekilde çağırır, sadece her turda daha yavaş ilerler; bu yüzden çağrı tamamlanmadan önce kullanıcının ilerlemeyi görmesini istiyorsanız partial response'u stream edin. AgentUI içinde, Agno'nun run inspector'ında send_usdc çağrısı diğer tool'lar gibi tool-calls panelinde görünür; bu da geliştirme sırasında Base Sepolia üzerinde bir ödemenin geçişini izlemek için kullanışlıdır.

Agno ajanınızın çalışması için ücret alın.

Gerçek istemciyi saran küçük bir Araç Seti, yüklemek için paket yok. Başlamak ücretsiz.