মুখ্য সামগ্ৰীৰ পৰা এৰাই চাওক
PYDANTIC AI সংহতি

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

Pydantic AI পেকেজ নাই, আৰু আপোনাৰ একো প্ৰয়োজন নাই। @agent.tool_plain সৈতে এটা টাইপ কৰা ফাংশন ৰেজিষ্টাৰ কৰক, বাস্তৱ blockchain0x ক্লায়েন্টক কল কৰক, আৰু আপোনাৰ এজেন্ট Base ত USDC স্থানান্তৰ কৰিব পাৰে।

ছোট উত্তৰ

Pydantic AI-ৰ বাবে কোনো বিশেষ package নাই, আৰু আপোনাক তাৰ প্ৰয়োজনো নহয়। Pydantic AI-এ সৈতে এটা function-ক validated tool-লৈ ৰূপান্তৰ কৰে, সেয়ে আপুনি real Python client-টো এটা typed function-ত wrap কৰে আৰু agent-এ USDC পঠিয়াব পাৰে, invoice settle কৰিব পাৰে, আৰু wallet পঢ়িব পাৰে। ই OpenAI, Anthropic, Google, Mistral, Groq, আৰু বাকী সকলো Pydantic AI provider-ৰ সৈতে কাম কৰে, কাৰণ tool-এ model নহয়, HTTP API call কৰে। Payment-সমূহ Base-ত settle হয়।

TYPED PAYMENT TOOLS কিয়

Pydantic AIৰ টাইপিং বিজয়ী। পেমেন্টৰ বাবে ইয়াকো ব্যৱহাৰ কৰক।

Pydantic AIৰ মূল উদ্দেশ্য হৈছে শক্তিশালী টাইপিং: এজেন্ট ইনপুট টাইপ কৰা, আউটপুট টাইপ কৰা, নিৰ্ভরতাসমূহ টাইপ কৰা, পুনৰ চেষ্টা টাইপ কৰা। ফ্ৰেমৱৰ্কে সীমাত অশুদ্ধ ডাটা প্ৰত্যাখ্যান কৰে, LLM কলৰ মাজেৰে সিঁচি যাবলৈ নিদিয়ে। আপোনাৰ ৱালেট টুল ঠিক সেইটোত আধাৰিত - আৰ্গুমেন্টসমূহ টাইপৰ সৈতে ঘোষণা কৰক, আৰু Pydantic AI স্বাক্ষৰ আৰু ডকষ্ট্ৰিংৰ পৰা এক প্ৰমাণিত স্কিমা নিৰ্মাণ কৰে যেতিয়া মডেলটোক কল কৰিবলৈ অনুমতি দিয়া হয়।

ব্যৱহাৰিক লাভ: যদি মডেলটো send_usdc কল কৰিবলৈ বেইজ-ইউনিট ষ্ট্ৰিংৰ সলনি এটা ফ্ল'ট ব্যৱহাৰ কৰিবলৈ চেষ্টা কৰে, তেন্তে ব্যৰ্থতা Pydanticৰ পৰীক্ষা স্তৰত ঘটে যাৰ আগতে আমাৰ সৈতে যিকোনো HTTP কল। আপুনি এটা স্পষ্ট ValidationError এটা সহায়ক বাৰ্তাৰ সৈতে দেখিবলৈ পায় যি APIৰ পৰা গোপন ক্ষেত্ৰ পথৰ সৈতে 422ৰ সলনি। ইয়াৰ বাবে আপোনাৰ ক্লায়েন্টক নিজে ইয়াত মুড়ি দিবলৈ সকলো কাৰণ হৈছে, সাধাৰণ এডাপ্টাৰৰ বাবে হাতৰ পৰা আঁতৰি যাবলৈ - আপুনি চাৰিওফালে টাইপিং ৰাখে।

স্থাপন

Pydantic AI আৰু মূল SDK ইনষ্টল কৰক। দুটা চাবি।

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

স্থাপন কৰক
pip install pydantic-ai blockchain0x
পৰিবেশ চলকসমূহ
export OPENAI_API_KEY=sk-...
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

OPENAI_API_KEY (অথবা যি প্ৰদানকাৰী আপুনি ব্যৱহাৰ কৰে তাৰ সমান)। BLOCKCHAIN0X_API_KEY হৈছে আপোনাৰ ডেছব'ৰ্ডৰ পৰা sk_test_ testnet বা sk_live_ mainnet চাবি; ক্লায়েন্টে ইয়াক পৰিবেশৰ পৰা পঢ়ে। যদি আপোনাৰ এজেণ্টে ধনো গ্ৰহণ কৰে, তেন্তে webhook হেণ্ডলাৰে লগতে BLOCKCHAIN0X_WEBHOOK_SECRETৰ প্ৰয়োজন।

ৰেচিপি

এখন টাইপ কৰা ফাংশন যি পেমেণ্ট কৰে, টুল হিচাপে পঞ্জীয়ন কৰা।

তলত সমগ্ৰ একত্ৰণ আছে। send_usdc বাস্তৱ blockchain0x ক্লায়েন্টক কল কৰে; @agent.tool_plain ইয়াক টাইপ হিন্ট আৰু ডকষ্ট্ৰিংৰ পৰা নিৰ্মাণ কৰা স্কিমাৰ সৈতে পঞ্জীয়ন কৰে। ইয়াক চলাও আৰু এজেন্টে Baseত USDC স্থানান্তৰ কৰে, কলৰ আগতে যুক্তিসমূহ প্ৰমাণীকৃত হয়।

AGENT.PY
from pydantic_ai import Agent
from blockchain0x import Client

blockchain0x = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment

agent = Agent(
    "openai:gpt-4o",
    system_prompt="You pay vendor invoices in USDC within owner-set limits.",
)

# Register a plain function as a tool. No dedicated package needed.
@agent.tool_plain
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.
    """
    return str(
        blockchain0x.payments.create(body={"agentId": agent_id, "to": to, "amountWei": amount_wei})
    )

result = agent.run_sync(
    "Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset."
)
print(result.output)

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_. Want a typed result object instead of a string? Set the agent's output_type to your own Pydantic model and return it from the tool. Add read and settle functions the same way.

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

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

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

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; শাখা কৰিবলৈ X-Blockchain0x-Event-Type হেডাৰত সংকীর্ণ কৰক।

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

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

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

github.com/tosh-labs/blockchain0x-python

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

সাধাৰণ বিপদ

পাঁচটা Pydantic AI-নির্দিষ্ট ফাঁদ যিবোৰ এৰাব লাগে।

Pydantic AIৰ শক্তিশালী টাইপিং বাউণ্ডাৰিত অধিকাংশ একত্ৰণ বাগ ধৰি ৰাখে; এইবোৰ কেইটামান যি পাৰ হৈ যায়।

PITFALL 1

Pydantic AI পেকেজ নাই - আপুনি এটা টুল ৰেজিষ্টাৰ কৰে

Blockchain0x LangChain আৰু CrewAIৰ বাবে এডাপ্টাৰ আৰু MCP ছাৰ্ভাৰ প্ৰেৰণ কৰে; ইয়াত কোনো নিৰ্দিষ্ট Pydantic AI পেকেজ নাই। ওপৰৰ ৰেচিপি হৈছে পথ: @agent.tool_plainৰ সৈতে সজ্জিত এটা সাধাৰণ টাইপ কৰা ফাংচন যি বাস্তৱ blockchain0x ক্লায়েন্টক কল কৰে। Pydantic AIয়ে স্বাক্ষৰ আৰু ডকষ্ট্ৰিং পঢ়ে যাতে এটা প্ৰমাণিত টুল স্কিমা নিৰ্মাণ কৰিব পাৰে, যি ঠিক সেই টাইপিং বিজয় যাৰ বাবে আপুনি Pydantic AIলৈ আহিছিল।

PITFALL 2

ৰাশি এটা ষ্ট্ৰিং হিচাপে ৰাখক; Pydanticক ৰেখা ধৰি ৰাখিবলৈ দিয়ক

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 tool argument as str and Pydantic AI rejects a float at the boundary with a clear ValidationError, before any HTTP call. That is the whole point of doing this in Pydantic AI - the malformed value never reaches the API.

PITFALL 3

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

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

PITFALL 4

প্ৰদানকাৰী-পূৰ্বৰ মডেল ষ্ট্ৰিং

Pydantic AI প্ৰদানকাৰী-পূৰ্বৰ মডেল ষ্ট্ৰিং ব্যৱহাৰ কৰে: 'openai:gpt-4o', 'anthropic:claude-3-5-sonnet-latest', 'google-gla:gemini-1.5-pro'। প্ৰিফিক্স বাদ দিলে এটা গুপ্ত 'অজ্ঞাত মডেল' ত্ৰুটি পোৱা যায়। আপোনাৰ টুল প্ৰদানকাৰী-অজ্ঞাত, কাৰণ ই HTTP APIক কল কৰে, মডেলক নহয় - প্ৰিফিক্স বিনিময় কৰক আৰু ৱালেট ফাংশন সলনি নহয়।

PITFALL 5

tool_plain বনাম tool (RunContext)

যেতিয়া ফাংশনটোৱে চলনৰ পৰা একো প্ৰয়োজন নাথাকে, তেতিয়া @agent.tool_plain ব্যৱহাৰ কৰক, ওপৰৰ দৰে। যদি আপুনি টুলৰ ভিতৰত এজেন্টৰ নিৰ্ভৰশীলতাসমূহ (এটা প্ৰতি-অনুৰোধ ক্লায়েন্ট আইডি, এটা খৰচৰ সীমা) চাৰা চাৰা, @agent.tool ব্যৱহাৰ কৰক আৰু প্ৰথম যুক্তিটোক ctx: RunContext[Deps] হিচাপে ঘোষণা কৰক যাতে ctx.deps পঢ়া যায়। দুয়োটাক মিশ্ৰণ কৰা - tool_plain ত ctx যুক্তি ঘোষণা কৰা - পঞ্জীয়ন সময়ত TypeError উত্থাপন কৰে।

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

এটা পাইডেন্টিক AI-নির্দিষ্ট তিনিটা প্ৰশ্ন।

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

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

এইটো LLM প্ৰদানকাৰী (OpenAI, Anthropic, Google) সমূহৰ মাজত কাম কৰে নে?

হয়। টুলটো প্ৰদানকাৰী-নিরপেক্ষ - ই Blockchain0x HTTP API ক কল কৰে, যি কোনো LLM-নির্দিষ্ট পৃষ্ঠাত নহয়। যেতিয়া Pydantic AI প্ৰদানকাৰীক সমৰ্থন কৰে (OpenAI, Anthropic, Google GLA, Google VertexAI, Groq, Cohere, Mistral, Bedrock), একে ফাংশনটো কাম কৰে। কেৱল এজেণ্ট কনষ্ট্ৰাক্টৰত মডেল ষ্ট্ৰিংটো সলনি কৰক: 'anthropic:claude-3-5-sonnet-latest' 'openai:gpt-4o' ৰ সলনি।

মই কেনেকৈ টাইপ কৰা ইনপুট যোগ কৰিব পাৰো, অথবা পঢ়িব আৰু সমাধান কৰিব পাৰো লগতে পঠিয়াব পাৰো?

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

আপোনাৰ এজেন্টত টাইপ কৰা পেমেন্ট যোগ কৰক।

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