Agno পেমেন্ট একত্ৰণ।
Agno পেকেজ নাই, আৰু আপোনাৰ একো প্ৰয়োজন নাই। বাস্তৱ blockchain0x ক্লায়েন্টটো এখন সৰু টুলকিটত মুঠ কৰক আৰু আপোনাৰ এজেন্ট Base ত USDC স্থানান্তৰ কৰিব পাৰে - অতি কম বিমূর্ততা, Agno পদ্ধতি।
Agno-specific কোনো package নাই, আৰু আপোনাক তাৰ প্ৰয়োজনো নাই। Agno-এ এটা method-ক tool-লৈ ৰূপান্তৰ কৰে, সেয়ে আপুনি real Python client-টো এটা সৰু toolkit-ত wrap কৰি আপোনাৰ -ত যোগ কৰে। Agent-এ USDC পঠিয়াব পাৰে, invoice settle কৰিব পাৰে, আৰু wallet পঢ়িব পাৰে, সকলো Agno model-ত (OpenAI, Anthropic, DeepSeek, Llama, Mistral)। Payment-সমূহ Base-ত settle হয়।
পাতল Python ফ্ৰেমৱৰ্ক। কোনো বিমূর্ততা কৰ।
Agno (পূৰ্বে Phidata) হৈছে সেই এজেন্ট ফ্ৰেমৱৰ্ক যি আপুনি সৰু অনুষ্ঠানৰ বাবে বিচাৰে। ইয়াত কোনো গ্ৰাফ নিৰ্মাতা নাই, কোনো ক্রু নাই, কোনো কাৰ্যপদ্ধতি নাই - কেৱল এজেন্ট, টুল, আৰু এটা run() পদ্ধতি। টুলবোৰ হৈছে Python কলেবল। ফ্ৰেমৱৰ্কে 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 blockchain0xexport 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 চাবি; ক্লায়েন্টে ইয়াক পৰিবেশৰ পৰা পঢ়ে। যদি আপোনাৰ এজেণ্টে ধনো গ্ৰহণ কৰে, তেন্তে webhook হেণ্ডলাৰে লগতে BLOCKCHAIN0X_WEBHOOK_SECRETৰ প্ৰয়োজন।
এখন Toolkit যি পেমেণ্ট কৰে, এজেন্টক দিয়া।
তলত সমগ্ৰ একত্ৰণ আছে। 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 গ্ৰহণ কৰে, তেন্তে ইয়াক ৱেবহুকৰ সৈতে নিশ্চিত কৰক পোলিংৰ সলনি। প্ৰমাণীকৰণ সহায়ক Node SDKত থাকে; এটা Python সেৱাত আপুনি নথিভুক্ত HMACৰ বিৰুদ্ধে হাতেৰে প্ৰমাণিত কৰে, যি সকলো সহায়ক কৰে। তলত FastAPI উদাহৰণ; একে কোড যিকোনো async Python ফ্ৰেমৱৰ্কত কাম কৰে।
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}
এলগৰিদমটো HMAC-SHA256 হৈছে t.rawBodyৰ ওপৰত, এটা ধ্ৰুৱক-সময় তুলনা, আৰু 300-ছেকেণ্ডৰ পুনৰ খেলা জাননী। কাঁচা বডী পঢ়ক await request.body()ৰ জৰিয়তে, কেতিয়াও request.json() পুনৰ-ডিছাৰিয়েলাইজ নকৰিব, কাৰণ সেয়া স্বাক্ষৰ যি বাইটসমূহ ঢাকিছে সেয়া সলনি কৰে। পঠিওৱা ইভেন্টসমূহ হৈছে payment.received, payment.sent, wallet.deployed, আৰু webhook.test। গম্ভীৰ অনুসৰণৰ কাৰ্যৰ বাবে, এটা চাকৰি (Celery, arq) কিউত ৰাখক আৰু 200 তৎক্ষণাত প্ৰতিক্ৰিয়া জনাওক যাৰ ফলত হেণ্ডলাৰটো ব্লক নকৰে।
আপুনি যি ক্লায়েন্টক মুড়ি দিছে সেয়া খোলা। সিহঁত পঢ়ক।
এগনো ষ্টাৰ্টাৰ পেকেজ ক্লোন কৰিবলৈ নাই - ওপৰৰ ৰেচিপিখন হৈছে একীকৰণ। blockchain0x SDKসমূহ GitHubত খুলি আছে; এই ৰেচিপিখনে Python SDK (blockchain0x-python)ক মোড়ে, ডক্সত সম্পূৰ্ণ পদ্ধতি পৃষ্ঠাৰ সৈতে। টুলকিট পদ্ধতিসমূহৰ বাবে ইয়াক এটা উল্লেখ হিচাপে পঢ়ক।
github.com/tosh-labs/blockchain0x-pythonসম্পূৰ্ণ SDK পদ্ধতি পৃষ্ঠ আৰু স্কোপসমূহ ডক্সসমূহত নথিভুক্ত কৰা হৈছে। Base Sepoliaৰ বিৰুদ্ধে sk_test_ চাবিৰ সৈতে আৰম্ভ কৰক, তাৰপিছত টুলকিট আপোনাৰ আশা কৰা কাম কৰিলে sk_live_লৈ সলনি কৰক।
পাঁচটা Agno-নির্দিষ্ট কথা যিবোৰ লক্ষ্য কৰিব লাগে।
Agno হৈছে এক পৰিষ্কাৰ এজেন্ট ফ্ৰেমৱৰ্ক যি একত্ৰিত কৰিবলৈ, কিন্তু ইয়াৰ নিজৰ কিছু সমস্যা আছে - বিশেষকৈ Phidata পুনঃনামকৰণ আৰু মার্কডাউন ৰেণ্ডাৰিংৰ চাৰিওফালে।
Agno পেকেজ নাই - আপুনি SDK টুলকিটত মুঠ কৰে
Blockchain0x LangChain আৰু CrewAIৰ বাবে এডাপ্টাৰ প্ৰেৰণ কৰে লগতে MCP ছাৰ্ভাৰ; ইয়াত কোনো নিৰ্দিষ্ট Agno পেকেজ নাই। তলত উল্লেখ কৰা ৰেচিপি হৈছে পথ: এটা Toolkit উপশ্রেণী যিয়ে বাস্তৱ blockchain0x ক্লায়েন্টক কল কৰা এটা পদ্ধতি পঞ্জীয়ন কৰে। Agno পদ্ধতিৰ স্বাক্ষৰ আৰু ডকষ্ট্ৰিং পঢ়ে যাতে টুল স্কিমা নিৰ্মাণ কৰিব পাৰে, সেয়ে ডকষ্ট্ৰিংটোক সঠিক ৰাখক।
Phidataৰ পৰা Agno স্থানান্তৰৰ বিভ্ৰান্তি
Agno 2024 চনত Phidataৰ পৰা নাম পৰিবৰ্তন কৰা হৈছিল। phi.agent বা phi.toolsৰ পৰা আমদানি কৰা পুৰণি কোডবেইজসমূহে এখন সামঞ্জস্য শিমৰ জৰিয়তে এতিয়াও কাম কৰে, কিন্তু agno.* আমদানিসমূহ বৰ্তমানৰ। ৰেচিপিয়ে agno.* ব্যৱহাৰ কৰে; যদি আপোনাৰ কোড এতিয়াও phi.* আমদানিত থাকে, তেন্তে pip install -U agno চলাও আৰু Toolkit যোগ কৰাৰ আগতে আমদানিৰ পথসমূহ সলনি কৰক।
মাত্ৰাসমূহ 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.
সিঙ্ক বনাম আসিঙ্ক চলাও
Agno এজেন্ট.run() (sync) আৰু agent.arun() (async) সমৰ্থন কৰে। প্ৰতিটো এজেন্টৰ বাবে এটা মোড বাচি লওক - agent.run() কল কৰক আৰু ফলাফলৰ বাবে অপেক্ষা কৰিবলৈ চেষ্টা কৰক আৰু আপুনি এটা coroutine পাব য'ত আপুনি এটা ষ্ট্ৰিং আশা কৰিছিল। Toolkitৰ ভিতৰত blockchain0x কলটো সমন্বিত; যদি আপুনি async পথত থাকে আৰু বাস্তৱ ভলিউম চলাইছে, তেন্তে ইয়াক asyncio.to_threadৰ সৈতে আবৰি ৰাখক যাতে ইভেন্ট লুপটো প্ৰতিক্ৰিয়াশীল থাকে।
কাঁচা বডীৰ বিৰুদ্ধে ৱেবহুক পৰীক্ষা কৰক
যদি আপোনাৰ এজেণ্টেও USDC গ্ৰহণ কৰে, তেন্তে ইয়াক ৱেবহুকৰ সৈতে নিশ্চিত কৰক, পোলিং দ্বাৰা নহয়। RAW অনুৰোধ বাইটসমূহৰ ওপৰত স্বাক্ষৰ প্ৰমাণিত কৰক (অপেক্ষা কৰক request.body()), কেতিয়াও request.json() পুনৰ-সিরিয়ালাইজ কৰা নহয়, কাৰণ HMAC সঠিক বাইটসমূহ ঢাকিবলৈ। ই HMAC-SHA256 হৈছে 300-ছেকেণ্ডৰ পুনৰ খেলা উইণ্ডোৰ সৈতে। তলৰ হেণ্ডলাৰটো সম্পূৰ্ণ বিষয়।