মুখ্য সামগ্ৰীৰ পৰা এৰাই চাওক
AUTOGEN ইন্টেগ্ৰেচন

AutoGen পেমেন্ট একত্ৰণ।

AutoGen পেকেজ নাই, আৰু আপোনাৰ একো প্ৰয়োজন নাই। বাস্তৱ blockchain0x ক্লায়েন্টটো এখন ফাংশনত মুঠ কৰক, ইয়াক আপোনাৰ এজেন্টলৈ হস্তান্তৰ কৰক, আৰু ই Base ত USDC স্থানান্তৰ কৰিব পাৰে।

ছোট উত্তৰ

AutoGen-ৰ বাবে কোনো বিশেষ package নাই, আৰু আপোনাক তাৰ প্ৰয়োজনো নহয়। AutoGen-এ ইতিমধ্যে এটা সাধাৰণ typed function-ক tool-লৈ ৰূপান্তৰ কৰে, সেয়ে আপুনি real Python client-টো এটা function-ত wrap কৰে, ৰ জৰিয়তে এটা -ক দিয়ে, আৰু agent-এ USDC পঠিয়াব পাৰে, invoice settle কৰিব পাৰে, আৰু Base-ত wallet পঢ়িব পাৰে। set কৰক আৰু আৰম্ভ কৰক।

কিয় কোনো package নাই

AutoGen ইতিমধ্যে এটা ফাংশনক টুল হিচাপে সৃষ্টি কৰে। ইয়াক ব্যৱহাৰ কৰক।

AutoGen এটা টুল স্কিমা সোজাকৈ এটা Python ফাংশনৰ স্বাক্ষৰ আৰু ডকষ্ট্ৰিংৰ পৰা নিৰ্মাণ কৰে। এটা নিৰ্দিষ্ট AutoGen এডাপ্টৰ মাত্ৰ এজন ফাংশনক আবৰি ৰাখিব যি আমি যিকোনো সময়তে লিখিছিলোঁ, তাৰ পিছত AutoGenৰ দ্ৰুত-চলন্ত APIৰ সৈতে সমন্বয়ৰ পৰা আঁতৰি যাব। সেয়া বাবে আমি এটা প্ৰেৰণ নকৰোঁ। আপুনি কেইটামান লাইন লিখে যিয়ে বাস্তৱ blockchain0x ক্লায়েন্টক কল কৰে, আৰু আপুনি যুক্তিসমূহ, প্ৰমাণীকৰণ, আৰু ত্ৰুটি ব্যৱস্থাপনাৰ সম্পূৰ্ণ নিয়ন্ত্ৰণ ৰাখে।

এইটো হৈছে সেই একে ক্লায়েন্ট যি পঠিওৱা LangChain আৰু CrewAI এডাপ্টাৰবোৰ আৱৰণৰ তলত মুঠ কৰে। ইয়াত আপুনি নিজে ইয়াক মুঠ কৰে, যাৰ অৰ্থ হৈছে যে ইয়াক অনুসৰণ কৰিবলৈ কোনো এডাপ্টাৰ সংস্কৰণ নাই আৰু আপোনাৰ এজেন্ট আৰু APIৰ মাজত আপোনাৰ নিজৰ ফাংশন ব্যতীত কিছু নাই। বহু-এজেন্টৰ দলসমূহ একে ধৰণে কাম কৰে: এটা এজেন্টক ৱালেট ফাংশন দিয়ক, আনবোৰক ইয়াৰ পৰা এৰি দিয়ক, আৰু খৰচৰ অধিকাৰ এক ঠাইত থাকে।

স্থাপন

AutoGen আৰু মূল SDK ইনষ্টল কৰক। এটা পৰিৱেশ চলক।

যোগ কৰিবলৈ নিবিড় AutoGen পেকেজ নাই। আপুনি AutoGen (Python 3.10+) আৰু বাস্তৱ blockchain0x মূল SDK স্থাপন কৰে, তাৰপিছত তলৰ ফাংশনটো লিখে। এইটো সম্পূৰ্ণ নিৰ্ভৰশীলতাৰ তালিকা।

স্থাপন কৰক
pip install autogen-agentchat "autogen-ext[openai]" blockchain0x
পরিবেশ চলক
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

BLOCKCHAIN0X_API_KEY হৈছে আপোনাৰ ডেছব'ৰ্ডৰ পৰা sk_test_ testnet বা sk_live_ mainnet চাবি; ক্লায়েন্টে ইয়াক পৰিবেশৰ পৰা পঢ়ে। যদি আপোনাৰ এজেণ্টে ধনো গ্ৰহণ কৰে, তেন্তে webhook হেণ্ডলাৰে লগতে BLOCKCHAIN0X_WEBHOOK_SECRETৰ প্ৰয়োজন, যি ডেছব'ৰ্ডে আপোনাৰ webhook সৃষ্টি বা ঘূৰাই দিলে একবাৰ মাক কৰে।

ৰেচিপি

এখন ফাংশন যি পেমেণ্ট কৰে, এজন AssistantAgentক দিয়া।

তলত সমগ্ৰ একত্ৰণ আছে। send_usdc বাস্তৱ blockchain0x ক্লায়েন্টক কল কৰে; AssistantAgent(tools=[send_usdc]) ইয়াক এটা টুললৈ পৰিৱৰ্তন কৰে যি মডেলটোৱে কল কৰিব পাৰে। AutoGen টাইপ হিন্ট আৰু ডকষ্ট্ৰিং পঢ়ে যাতে স্কিমা নিৰ্মাণ কৰিব পাৰে, সেয়ে সিহঁতক সৎ ৰাখক। ইয়াক চলাও আৰু এজেন্টে Baseত USDC স্থানান্তৰ কৰে।

AGENT.PY
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from blockchain0x import Client

blockchain0x = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment

# AutoGen turns a plain typed function into a tool. No dedicated package needed.
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.
    """
    result = blockchain0x.payments.create(
        body={"agentId": agent_id, "to": to, "amountWei": amount_wei},
    )
    return str(result)

treasurer = AssistantAgent(
    name="treasurer",
    model_client=OpenAIChatCompletionClient(model="gpt-4o"),
    tools=[send_usdc],
    system_message="You pay vendor invoices in USDC within owner-set limits.",
)

result = await treasurer.run(
    task="Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.",
)

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 becomes another entry in tools.

ৱেবহুক হেণ্ডলিং

এক স্বাক্ষৰিত ৱেবহুকৰ সৈতে ইনবাউণ্ড পেমেন্ট নিশ্চিত কৰক।

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

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}

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

সূত্ৰ আৰু ডক্স

আপুনি যি ক্লায়েন্টক মুড়ি দিছে সেয়া খোলা। সিহঁত পঢ়ক।

অটোজেন ষ্টাৰ্টাৰ পেকেজ ক্লোন কৰিবলৈ নাই - ওপৰৰ ৰেচিপিখন হৈছে একীকৰণ। blockchain0x SDKসমূহ GitHubত খুলি আছে; এই ৰেচিপিখনে Python SDK (blockchain0x-python)ক মোড়ে, ডক্সত সম্পূৰ্ণ পদ্ধতি পৃষ্ঠাৰ সৈতে। ফাংশন বডীসমূহৰ বাবে ইয়াক এটা উল্লেখ হিচাপে পঢ়ক।

github.com/tosh-labs/blockchain0x-python

সম্পূৰ্ণ SDK পদ্ধতি পৃষ্ঠ আৰু স্কোপসমূহ ডক্সসমূহত নথিভুক্ত কৰা হৈছে। Base Sepoliaৰ বিৰুদ্ধে sk_test_ চাবিৰ সৈতে আৰম্ভ কৰক, তাৰপিছত ফাংচন আপোনাৰ আশা কৰা কাম কৰিলে sk_live_লৈ সলনি কৰক।

সাধাৰণ বিপদ

পাঁচটা গোট-চাট আৰু আসিঙ্ক ফাঁদ যিবোৰ এৰাব লাগে।

AutoGenৰ বহু-এজেন্ট + আসিঙ্ক ডিজাইন শক্তিশালী ধাৰণাবোৰ মুকলি কৰে কিন্তু ইয়াৰ নিজৰ কিছু সমস্যা আনে। এইবোৰ আমাৰ সমৰ্থন ইনবক্সৰ পৰা আহে।

PITFALL 1

AutoGen পেকেজ নাই - আপুনি SDK মুঠ কৰে

Blockchain0x LangChain আৰু CrewAIৰ বাবে প্ৰেৰণ কৰা এডাপ্টাৰ আৰু MCP ছাৰ্ভাৰ প্ৰেৰণ কৰে; ইয়াত কোনো নিৰ্দিষ্ট AutoGen পেকেজ নাই। ওপৰৰ ৰেচিপি হৈছে সমৰ্থিত পথ: এটা সাধাৰণ টাইপ কৰা ফাংচন যি বাস্তৱ blockchain0x ক্লায়েন্টক কল কৰে, AssistantAgent(tools=[...])লৈ প্ৰদান কৰা। AutoGen ফাংচনৰ স্বাক্ষৰ আৰু ডকষ্ট্ৰিং পঢ়ে যাতে টুল স্কিমা নিৰ্মাণ কৰিব পাৰে, সেয়ে ডকষ্ট্ৰিং সঠিক ৰাখক।

PITFALL 2

মাত্ৰাসমূহ USDC বেছ ইউনিট, ষ্ট্ৰিং হিচাপে

payments.create takes amountWei: a string of USDC base units, not a float and not a dollar figure. USDC has 6 decimals, so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the tool argument as str and validate it before the call - a float that sneaks through either errors at the backend or moves a millionth of what you meant.

PITFALL 3

send_payment আগতীয়াকৈ 503 উলিয়াব পাৰে

payments.create ডিফল্টৰূপে পুনৰ চেষ্টা নকৰে আৰু আপোনাৰ নেটৱৰ্কৰ বাবে চেইন এডাপ্টৰ সংযোগ কৰা নহওঁতে 503 উলিয়াব পাৰে। এটা বিফল পেমেন্টৰ বাবে গোটৰ চ্যাটক লুপ কৰিবলৈ দিয়াৰ সলনি - আপোনাৰ ফাংশনত ত্ৰুটিটো ধৰি ৰাখক, মডেলৰ কাৰ্য্য কৰিবলৈ এটা স্পষ্ট বাৰ্তা উলিয়াব, আৰু স্বয়ংক্ৰিয়ভাৱে সৃষ্টি কৰা idempotency চাবিৰ ওপৰত নিৰ্ভৰ কৰক যাতে এটা ম্যানুৱেল পুনৰ চেষ্টা দ্বিগুণ পেমেন্ট নকৰে।

PITFALL 4

AutoGen 0.4+ async; SDK কলটো sync

AutoGen 0.4 টুলসমূহক এক async লুপত চলায়। blockchain0x ক্লায়েন্ট কলটো সমন্বিত, যি এটা তৎকালীন অনুৰোধৰ বাবে ভাল, কিন্তু এটা ধীৰ কল লুপটো ব্লক কৰে। যদি আপুনি বাস্তৱ ভলিউম চলাইছে, তেন্তে SDK কলটো asyncio.to_threadৰ সৈতে আবৰি ৰাখক যাতে ইভেন্ট লুপটো প্ৰতিক্ৰিয়াশীল থাকে। এটা একক পেমেন্টৰ বাবে, সোজাকৈ কল কৰাটো ভাল।

PITFALL 5

কাঁচা বডীৰ বিৰুদ্ধে ইনবাউণ্ড ৱেবহুক পৰীক্ষা কৰক

যদি আপোনাৰ এজেণ্টেও ধন গ্ৰহণ কৰে, তেন্তে ইয়াক ৱেবহুকৰ সৈতে নিশ্চিত কৰক, পোলিং দ্বাৰা নহয়। RAW অনুৰোধ বাইটসমূহৰ ওপৰত স্বাক্ষৰ প্ৰমাণিত কৰক (অপেক্ষা কৰক request.body()), কেতিয়াও request.json() পুনৰ-সিরিয়ালাইজ কৰা নহয়, কাৰণ HMAC সঠিক বাইটসমূহ ঢাকিবলৈ। ই HMAC-SHA256 হৈছে 300-ছেকেণ্ডৰ পুনৰ খেলা উইণ্ডোৰ সৈতে। তলৰ হেণ্ডলাৰটো সম্পূৰ্ণ বিষয়।

সাধাৰণতে সোধা হয়

এটা অটোজেন-নির্দিষ্ট তিনিটা প্ৰশ্ন।

ইনষ্টল কৰিবলৈ এক নিবিড় AutoGen পেকেজ আছে নেকি?

নাই। কোনো বিশেষ AutoGen এডাপ্টাৰ নাই, আৰু এইটো ইচ্ছাকৃত - AutoGen ইতিমধ্যে এখন সাধাৰণ টাইপ কৰা ফাংশনক এখন টুললৈ পৰিণত কৰে, সেয়ে সৎ পথ হৈছে বাস্তৱ blockchain0x ক্লায়েন্টক এখন ফাংশনত মুড়ি দিয়ে আৰু আপোনাৰ এজেন্টক সঁপাই দিয়ে, যেন উপৰোক্তত দেখুওৱা হৈছে। মাত্ৰ প্ৰেৰণ কৰা ফ্ৰেমৱৰ্ক পেকেজসমূহ হৈছে blockchain0x-langchain আৰু blockchain0x-crewai (দুয়োটা Python) আৰু @blockchain0x/mcp ছাৰ্ভাৰ। আন সকলো, AutoGen অন্তৰ্ভুক্ত, এই কেইটামান লাইনৰ ৰেচিপি।

এই ৰেচিপি কি ক্লাসিক AutoGen (0.2.x) আৰু 0.4+ত কাম কৰে?

হয়, কাৰণ পেমেন্ট যুক্তি হৈছে কেৱল এটা Python ফাংশন - ইয়াত কোনো AutoGen-সংস্কৰণ-নির্দিষ্ট বস্তু নাই। 0.4+ত আপুনি ইয়াক AssistantAgent(tools=[...])ৰ জৰিয়তে আগৰ দৰে প্ৰেৰণ কৰে। 0.2.x ConversableAgent লাইনৰ ওপৰত আপুনি register_functionৰ সৈতে একে ফাংশন পঞ্জীয়ন কৰে। ইয়াত কোনো .legacy উপমডিউল আমদানি কৰিবলৈ নাই কাৰণ ইয়াত কোনো পেকেজ নাই; আপুনি ফাংশনৰ মালিক।

মোৰ এজেণ্ট কেনেকৈ USDC গ্ৰহণ কৰে বা এটা ইনভইচ সমাধান কৰে, কেৱল পঠিয়াবলৈ নহয়?

ক্লায়েন্টৰ অধিক অংশ একে ৰূপে মোড়ক কৰক। blockchain0x.transactions.getএ এটা লেনদেন পঢ়ে, blockchain0x.agents.get আৰু blockchain0x.agents.listএ ৱালেট পঢ়ে, আৰু blockchain0x.payment_requests.settleএ আপোনাৰ ডেছব’ৰ্ডত সৃষ্টি কৰা এটা ইনভইচ স্থিৰ কৰে যাৰ ওপৰত চেইন প্ৰমাণ থাকে। প্ৰতিটো আপোনাৰ টুলৰ তালিকাত অন্য এটা টাইপ কৰা ফাংশন হৈ পৰে। ইনবাউণ্ড পেমেন্টসমূহ payment.received ৱেবহুকৰ জৰিয়তে নিশ্চিত হয় (তলৰ হেণ্ডলাৰৰ সৈতে ইয়াক পৰীক্ষা কৰক); কোনো টুল নাই যি এটা নতুন ইনভইচ মিণ্ট কৰে, যিহেতু পেমেন্ট অনুৰোধসমূহ ডেছব’ৰ্ডত সৃষ্টি কৰা হয়।

আপোনাৰ AutoGen এজেণ্টক এটা ৱালেট দিয়ক।

এখন কেইটামান লাইন বাস্তৱ ক্লায়েন্টৰ চাৰিওকাষে, ইনষ্টল কৰিবলৈ কোনো পেকেজ নাই। আৰম্ভ কৰিবলৈ মুক্ত।