মূল বিষয়বস্তুতে যান
AGNO INTEGRেশন

Agno পেমেন্ট ইন্টিগ্রেশন।

এখানে কোনো Agno প্যাকেজ নেই, এবং আপনার একটি প্রয়োজন নেই। একটি ছোট টুলকিটে প্রকৃত blockchain0x ক্লায়েন্টকে মোড়ান এবং আপনার এজেন্ট Base-এ USDC স্থানান্তর করতে পারে - ন্যূনতম বিমূর্ততা, Agno পদ্ধতি।

সংক্ষিপ্ত উত্তর

Agno-এর জন্য আলাদা কোনো package নেই, এবং আপনারও তা দরকার নেই। Agno একটি method-কে tool-এ রূপান্তর করে, তাই আপনি real Python client-কে একটি ছোট toolkit-এ wrap করে আপনার -এ যোগ করেন। এজেন্ট USDC পাঠাতে পারে, invoice settle করতে পারে, এবং wallet পড়তে পারে, সব Agno model জুড়ে (OpenAI, Anthropic, DeepSeek, Llama, Mistral)। Payment Base-এ settle হয়।

কেন AGNO

হালকা ওজনের Python ফ্রেমওয়ার্ক। কোন বিমূর্ততা কর নেই।

Agno (পূর্বে Phidata) হল সেই এজেন্ট ফ্রেমওয়ার্ক যা আপনি যখন ন্যূনতম অনুষ্ঠান চান তখন ব্যবহার করেন। এখানে কোনও গ্রাফ নির্মাতা নেই, কোনও ক্রু নেই, কোনও ওয়ার্কফ্লো নেই - কেবল এজেন্ট, টুলস এবং একটি run() পদ্ধতি। টুলগুলি হল পাইথন কলেবল। ফ্রেমওয়ার্কটি টুল সমর্থনের সাথে LLMs কল করতে, মেমরি পরিচালনা করতে এবং স্ট্রিমিং আউটপুট তৈরি করতে যথেষ্ট কাঠামো যোগ করে, তারপর আপনার পথে চলে যায়।

রেসিপিটি একই দর্শন অনুসরণ করে। আপনি একটি ছোট Toolkit সাবক্লাস লেখেন যা একটি পদ্ধতি নিবন্ধিত করে যা প্রকৃত ক্লায়েন্টকে কল করে - এটি অন্যান্য Agno টুলের মতো দেখায় এবং আচরণ করে। ইনস্ট্যানশিয়েশন ছাড়া কোনো বিশেষ সেটআপ নেই, কোনো গ্রাফ সংযোগ করার নেই, কোনো অ্যাডাপ্টার সংস্করণ ট্র্যাক করার নেই। সরলতা হল মূল বিষয়: যদি আপনি গ্রাফ চান তবে আপনি LangGraph-এ থাকবেন।

ইনস্টলেশন

Agno এবং মূল SDK ইনস্টল করুন। দুটি কী।

যোগ করার জন্য কোনো blockchain0x Agno প্যাকেজ নেই। আপনি Agno (Python 3.10+, Phidata নাম পরিবর্তনের পরে 1.0+ লাইন) এবং প্রকৃত blockchain0x মূল SDK ইনস্টল করেন, তারপর নিচের টুলকিটটি লেখেন। যদি আপনি এখনও phi.* আমদানি করে থাকেন, তাহলে প্রথমে pip install -U agno চালান।

ইনস্টল করুন
pip install agno blockchain0x
পরিবেশ ভেরিয়েবল
export OPENAI_API_KEY=sk-...
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

OPENAI_API_KEY (অথবা আপনি যে Agno-সমর্থিত মডেল ব্যবহার করেন তার জন্য সমতুল্য)। BLOCKCHAIN0X_API_KEY আপনার ড্যাশবোর্ড থেকে একটি sk_test_ testnet বা sk_live_ mainnet কী; ক্লায়েন্ট এটি পরিবেশ থেকে পড়ে। যদি আপনার এজেন্টও অর্থ গ্রহণ করে, তবে ওয়েবহুক হ্যান্ডলার অতিরিক্তভাবে BLOCKCHAIN0X_WEBHOOK_SECRET প্রয়োজন।

রেসিপি

একটি টুলকিট যা অর্থ প্রদান করে, একটি এজেন্টকে হস্তান্তরিত হয়।

নিচে পুরো ইন্টিগ্রেশন রয়েছে। WalletTools হল একটি Toolkit সাবক্লাস যা send_usdc নিবন্ধন করে, যা আসল blockchain0x ক্লায়েন্টকে কল করে। এটিকে এজেন্টে যুক্ত করুন এবং run() কলটি টুল আহ্বানকে সংগঠিত করে। Agno পদ্ধতির স্বাক্ষর এবং ডক্সট্রিং পড়ে স্কিমা তৈরি করে।

এজেন্ট.পি
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.

ওয়েবহুক হ্যান্ডলিং

একটি স্বাক্ষরিত ওয়েবহুক দিয়ে ইনবাউন্ড পেমেন্ট নিশ্চিত করুন।

যদি আপনার এজেন্টও USDC গ্রহণ করে, তবে এটি ওয়েবহুকের সাথে নিশ্চিত করুন পোলিংয়ের পরিবর্তে। যাচাই সহায়ক নোড SDK তে শিপ করে; একটি পাইথন সার্ভিসে আপনি নথিভুক্ত HMAC এর বিরুদ্ধে হাতে যাচাই করেন, যা সহায়কটি করে। নিচে FastAPI উদাহরণ; একই কোড যেকোন অ্যাসিঙ্ক পাইথন ফ্রেমওয়ার্কে কাজ করে।

ওয়েবহুক.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}

অ্যালগরিদমটি t.rawBody স্ট্রিংয়ের উপর HMAC-SHA256, একটি ধ্রুবক-সময়ের তুলনা, এবং একটি 300-সেকেন্ডের পুনরায় প্লে উইন্ডো। কাঁচা শরীরটি await request.body() এর মাধ্যমে পড়ুন, কখনও request.json() পুনরায় সিরিয়ালাইজ করবেন না, কারণ এটি সিগনেচার দ্বারা কভার করা বাইটগুলি পরিবর্তন করে। চালানো ইভেন্টগুলি হল payment.received, payment.sent, wallet.deployed, এবং webhook.test। ভারী অনুসরণ কাজের জন্য, একটি কাজ (Celery, arq) এনকিউ করুন এবং হ্যান্ডলারকে ব্লক করার পরিবর্তে 200 তাত্ক্ষণিকভাবে প্রতিক্রিয়া জানান।

সূত্র এবং ডক্স

আপনি যেটি মোড়াচ্ছেন ক্লায়েন্টটি খোলা। এটি পড়ুন।

এখন ক্লোন করার জন্য কোন Agno স্টার্টার প্যাকেজ নেই - উপরের রেসিপিটি ইন্টিগ্রেশন। blockchain0x SDK গুলি GitHub এ ওপেন সোর্স; এই রেসিপিটি Python SDK (blockchain0x-python) মোড়ানো, ডকসে সম্পূর্ণ পদ্ধতি পৃষ্ঠ সহ। টুলকিট পদ্ধতির জন্য একটি রেফারেন্স হিসাবে এটি পড়ুন।

github.com/tosh-labs/blockchain0x-python

পূর্ণ SDK পদ্ধতি পৃষ্ঠ এবং স্কোপগুলি ডকস এ নথিভুক্ত। Base Sepolia এর বিরুদ্ধে একটি sk_test_ কী দিয়ে শুরু করুন, তারপর যখন টুলকিট আপনার প্রত্যাশা অনুযায়ী কাজ করে তখন sk_live_ এ স্যুইচ করুন।

সাধারণ ফাঁদ

পাঁচটি Agno-নির্দিষ্ট বিষয় যা লক্ষ্য করা উচিত।

Agno হল একটির মধ্যে পরিষ্কার এজেন্ট ফ্রেমওয়ার্কগুলির একটি, তবে এর নিজস্ব কিছু সমস্যা রয়েছে - বিশেষ করে Phidata নামকরণ এবং মার্কডাউন রেন্ডারিংয়ের চারপাশে।

PITFALL 1

এখানে কোনো Agno প্যাকেজ নেই - আপনি একটি টুলকিটে SDK মোড়ান

Blockchain0x LangChain এবং CrewAI এর জন্য অ্যাডাপ্টার পাঠায় এবং MCP সার্ভার; কোনও নিবেদিত Agno প্যাকেজ নেই। উপরের রেসিপিটি হল পথ: একটি Toolkit সাবক্লাস যা একটি পদ্ধতি নিবন্ধন করে যা আসল blockchain0x ক্লায়েন্টকে কল করে। Agno পদ্ধতির স্বাক্ষর এবং ডক্সট্রিং পড়ে টুল স্কিমা তৈরি করে, তাই ডক্সট্রিংটি সঠিক রাখুন।

PITFALL 2

Phidata থেকে Agno মাইগ্রেশন বিভ্রান্তি

Agno 2024 সালে Phidata থেকে নাম পরিবর্তন করা হয়েছিল। phi.agent বা phi.tools থেকে আমদানি করা পুরানো কোডবেসগুলি এখনও একটি সামঞ্জস্য শিমের মাধ্যমে কাজ করে, তবে agno.* আমদানিগুলি বর্তমান। রেসিপিটি agno.* ব্যবহার করে; যদি আপনার কোড এখনও phi.* আমদানিতে থাকে, তবে pip install -U agno চালান এবং টুলকিট যুক্ত করার আগে আমদানি পথগুলি পরিবর্তন করুন।

PITFALL 3

পরিমাণগুলি USDC বেস ইউনিট, স্ট্রিং হিসাবে

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

সিঙ্ক বনাম অ্যাসিঙ্ক্রোনাস রান

Agno সমর্থন করে agent.run() (সিঙ্ক) এবং agent.arun() (অ্যাসিঙ্ক)। প্রতি এজেন্টের জন্য একটি মোড চয়ন করুন - agent.run() কল করুন এবং ফলাফলটির জন্য অপেক্ষা করার চেষ্টা করুন এবং আপনি একটি করউটিন পাবেন যেখানে আপনি একটি স্ট্রিং আশা করেছিলেন। টুলকিটের ভিতরে blockchain0x কলটি সিঙ্ক্রোনাস; যদি আপনি অ্যাসিঙ্ক পাথে থাকেন এবং বাস্তব ভলিউম সরান, তবে এটি asyncio.to_thread দিয়ে মোড়ান যাতে ইভেন্ট লুপ প্রতিক্রিয়া রাখে।

PITFALL 5

কাঁচা শরীরের বিরুদ্ধে ওয়েবহুক যাচাই করুন

যদি আপনার এজেন্টও USDC গ্রহণ করে, তবে এটি ওয়েবহুকের সাথে নিশ্চিত করুন, পোলিং দ্বারা নয়। RAW রিকোয়েস্ট বাইটের উপরে স্বাক্ষর যাচাই করুন (await request.body()), কখনো request.json() পুনঃসিরিয়ালাইজড নয়, কারণ HMAC সঠিক বাইটগুলি কভার করে। এটি HMAC-SHA256 একটি 300-সেকেন্ড পুনরায় খেলার উইন্ডো সহ। নিচের হ্যান্ডলারটি পুরো বিষয়।

প্রায়শই জিজ্ঞাসিত

তিনটি Agno-নির্দিষ্ট প্রশ্ন।

ইনস্টল করার জন্য কি একটি নিবেদিত Agno প্যাকেজ আছে?

না। Agno ইতিমধ্যেই একটি Toolkit পদ্ধতিকে একটি টুলে পরিণত করে, তাই সৎ পথ হল বাস্তব blockchain0x ক্লায়েন্টকে একটি Toolkit উপশ্রেণীতে নিজে মোড়ানো, যেমন উপরে দেখানো হয়েছে। একমাত্র বিতরণ করা ফ্রেমওয়ার্ক প্যাকেজগুলি হল blockchain0x-langchain এবং blockchain0x-crewai (দুইটি Python) এবং @blockchain0x/mcp সার্ভার। Agno, অন্যান্য ফ্রেমওয়ার্কগুলির মতো যাদের জন্য একটি নিবেদিত অ্যাডাপ্টার নেই, এই কয়েক লাইন রেসিপি।

এটি কি Agno টিমের সাথে (মাল্টি-এজেন্ট সহযোগিতা) কাজ করে?

হ্যাঁ। Agno টিমগুলি একাধিক এজেন্টকে একটি সমন্বিত ইউনিটে একত্রিত করে। WalletTools টুলকিটটি যে কোন এজেন্টে কাজ করে যা এটি তালিকাভুক্ত করে। টিমগুলির জন্য পরিষ্কার প্যাটার্ন হল একটি নিবেদিত ট্রেজারার এজেন্টকে ওয়ালেট টুলকিট দেওয়া এবং অন্য সদস্যদের কাজ করতে দেওয়া, তাই ব্যয় কর্তৃত্ব এক জায়গায় থাকে - CrewAI রেসিপির মতো একই আকার। টুলকিটে পড়া এবং নিষ্পত্তি পদ্ধতি একইভাবে যোগ করুন (blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle)।

এটি কি যুক্তি মডেল এবং AgentUI এর সাথে কাজ করে?

হ্যাঁ। যুক্তি মডেলগুলি (o1, DeepSeek R1) টুলগুলি একইভাবে কল করে, কেবল প্রতি টার্নে ধীর, তাই আপনি যদি চান যে ব্যবহারকারী কল সম্পূর্ণ হওয়ার আগে অগ্রগতি দেখুক তবে আংশিক প্রতিক্রিয়া স্ট্রিম করুন। AgentUI-তে, Agno-এর রান পরিদর্শক, send_usdc কলটি টুল-কল প্যানেলে অন্য যেকোনো টুলের মতো প্রদর্শিত হয়, যা বিকাশের সময় Base Sepolia-তে একটি পেমেন্ট যেতে দেখার জন্য সুবিধাজনক।

আপনার Agno এজেন্টের কাজের জন্য চার্জ করুন।

একটি ছোট টুলকিট বাস্তব ক্লায়েন্টকে মোড়ানো, ইনস্টল করার জন্য কোন প্যাকেজ নেই। শুরু করতে বিনামূল্যে।