Pydantic AI கட்டண ஒருங்கிணைப்பு.
Pydantic AI தொகுப்பு இல்லை, மற்றும் நீங்கள் ஒன்றை தேவைப்படவில்லை. @agent.tool_plain உடன் ஒரு வகைப்படுத்தப்பட்ட செயல்பாட்டை பதிவு செய்யவும், உண்மையான blockchain0x கிளையைக் அழைக்கவும், மற்றும் உங்கள் முகவர் Base இல் USDC ஐ நகர்த்த முடியும்.
Pydantic AI-specific package எதுவும் இல்லை, மேலும் உங்களுக்கு அது தேவையுமில்லை. Pydantic AI ஒரு function-ஐ மூலம் validated tool-ஆக மாற்றுகிறது, ஆகவே உண்மையான Python client-ஐ typed function-இல் wrap செய்தால் agent USDC அனுப்பவும், invoices-ஐ settle செய்யவும், wallets-ஐ read செய்யவும் முடியும். இது OpenAI, Anthropic, Google, Mistral, Groq, மற்றும் மற்ற எல்லா Pydantic AI provider-களிலும் வேலை செய்கிறது, ஏனெனில் இந்த tool model-ஐ அல்ல, HTTP API-ஐ call செய்கிறது. Payments Base-இல் settle ஆகும்.
Pydantic AI இன் வகைப்படுத்தல் வெற்றி பெறுகிறது. இதை கட்டணங்களுக்கு பயன்படுத்தவும்.
Pydantic AI இன் முழு நோக்கம் வலுவான வகைப்படுத்தல் ஆகும்: எஜெண்ட் உள்ளீடுகள் வகைப்படுத்தப்பட்டவை, வெளியீடுகள் வகைப்படுத்தப்பட்டவை, சார்புகள் வகைப்படுத்தப்பட்டவை, மீண்டும் முயற்சிகள் வகைப்படுத்தப்பட்டவை. கட்டமைப்பு LLM அழைப்பின் மூலம் பரவ விடாமல் எல்லையில் தவறான தரவுகளை நிராகரிக்கிறது. உங்கள் வாலெட் கருவி அதில் அடிப்படையாக உள்ளது - வகைகளுடன் வாதங்களை அறிவிக்கவும், மற்றும் Pydantic AI க்கு அழைக்க அனுமதிக்கப்படுவதற்கு முன்பு கையொப்பம் மற்றும் ஆவணத்திலிருந்து ஒரு சரிபார்க்கப்பட்ட ஸ்கீமாவை உருவாக்குகிறது.
நடைமுறை நன்மை: மாதிரி send_usdc ஐ அடிப்படை அலகு சரம் பதிலாக ஒரு மிதவை உடன் அழைக்க முயற்சிக்கும்போது, தோல்வி எங்கள் மீது எந்த HTTP அழைப்புக்கு முன்பு Pydantic இன் சரிபார்ப்பு அடிப்படையில் நிகழ்கிறது. நீங்கள் ஒரு பயனுள்ள செய்தியுடன் தெளிவான ValidationError ஐப் பார்க்கிறீர்கள், API இல் இருந்து குறுக்கு புல பாதைகளுடன் 422 ஐப் பெறுவதற்கு பதிலாக. நீங்கள் ஒரு பொதுவான இணைப்பை அடையாமல் இங்கு கிளையனைச் சுற்றி வைக்க இந்த முழு காரணம் - நீங்கள் கம்பிக்கு முழுமையாக தட்டச்சு செய்வீர்கள்.
Pydantic AI மற்றும் மைய SDK ஐ நிறுவவும். இரண்டு விசைகள்.
சேர்க்க blockchain0x Pydantic AI தொகுப்பு இல்லை. நீங்கள் Pydantic AI ஐ (Python 3.10+) மற்றும் உண்மையான blockchain0x மைய SDK ஐ நிறுவுகிறீர்கள், பிறகு கீழே உள்ள செயல்பாட்டைப் எழுதுகிறீர்கள். இது முழு சார்பு பட்டியல்.
pip install pydantic-ai blockchain0xexport OPENAI_API_KEY=sk-... export BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
OPENAI_API_KEY (அல்லது நீங்கள் பயன்படுத்தும் எந்த provider-னின் சமமான key). BLOCKCHAIN0X_API_KEY என்பது உங்கள் dashboard-இல் உள்ள sk_test_ testnet அல்லது sk_live_ mainnet key; client அதை environment-இலிருந்து வாசிக்கிறது. உங்கள் agent பணத்தையும் பெறுமானால், webhook handler-க்கு கூடுதலாக BLOCKCHAIN0X_WEBHOOK_SECRET தேவைப்படும்.
ஒரு வகைப்படுத்தப்பட்ட செயல்பாடு, செலுத்தும், ஒரு கருவியாக பதிவு செய்யப்பட்டுள்ளது.
கீழே முழு ஒருங்கிணைப்பு உள்ளது. send_usdc உண்மையான blockchain0x கிளையினை அழைக்கிறது; @agent.tool_plain அதை வகை குறிப்புகள் மற்றும் ஆவணத்திலிருந்து உருவாக்கப்பட்ட வடிவமைப்புடன் பதிவு செய்கிறது. அதை இயக்கவும், முகவர் Base இல் USDC ஐ நகர்த்துகிறது, அழைப்புக்கு முன் வாதங்கள் சரிபார்க்கப்படுகின்றன.
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.
ஒரு கையொப்பம் செய்யப்பட்ட webhook உடன் உள்ளே வரும் கட்டணங்களை உறுதிப்படுத்தவும்.
உங்கள் எஜெண்ட் USDC ஐப் பெறுமானால், polling மூலம் அல்ல, webhook மூலம் உறுதிப்படுத்துங்கள். verify உதவியாளர் Node SDK இல் அனுப்பப்படுகிறது; ஒரு Python சேவையில் நீங்கள் ஆவணப்படுத்தப்பட்ட HMAC க்கு எதிராக கையால் சரிபார்க்கிறீர்கள். நீங்கள் வகைப்படுத்தப்பட்ட நிகழ்வுகளை விரும்பினால், உங்கள் சொந்த Pydantic மாதிரியை வரையறுக்கவும் மற்றும் கையொப்பம் சரிபார்க்கப்பட்ட பிறகு மாடல்_validate_json க்கான கச்சா உடலைச் சேர்க்கவும் - வகை நிரலாக்கத்தைச் சேர்க்க வேண்டும்.
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 ஆக உள்ளன; கிளை செய்ய X-Blockchain0x-Event-Type தலைப்பில் நெருக்கமாகவும்.
நீங்கள் சுற்றி வைக்கும் கிளையன் திறந்தது. அதைப் படிக்கவும்.
Clone செய்ய Pydantic AI starter package இல்லை - மேலே உள்ள recipe-தான் integration. blockchain0x SDKs GitHub-இல் open source ஆக உள்ளன; இந்த recipe Python SDK (blockchain0x-python)-ஐ wrap செய்கிறது, முழு method surface docs-இல் உள்ளது. function bodies-க்கு reference ஆக அதை வாசிக்கவும்.
github.com/tosh-labs/blockchain0x-pythonமுழு SDK method surface மற்றும் scopes ஆகியவை the docs இல் ஆவணப்படுத்தப்பட்டுள்ளன. Base Sepolia-வில் sk_test_ key-யுடன் தொடங்கி, பின்னர் function நீங்கள் எதிர்பார்த்ததைச் செய்ததும் sk_live_ க்கு மாற்றவும்.
தவிர்க்க வேண்டிய ஐந்து Pydantic AI-சிறப்பு சிக்கல்கள்.
Pydantic AI இன் வலுவான வகைப்படுத்தல் எல்லையில் பெரும்பாலான ஒருங்கிணைப்பு பிழைகளை பிடிக்கிறது; இவை சிலவற்றில் சிலவாக உள்ளன.
Pydantic AI தொகுப்பு இல்லை - நீங்கள் ஒரு கருவியை பதிவு செய்கிறீர்கள்
Blockchain0x LangChain மற்றும் CrewAI க்கான அடாப்டர்களை மற்றும் MCP சேவையகத்தை அனுப்புகிறது; தனிப்பட்ட Pydantic AI தொகுப்பு இல்லை. மேலே உள்ள செய்முறை பாதை: உண்மையான blockchain0x கிளையண்டை அழைக்கும் @agent.tool_plain உடன் அலங்கரிக்கப்பட்ட ஒரு சாதாரண வகை செயல்பாடு. Pydantic AI கையொப்பம் மற்றும் ஆவணத்தை வாசித்து ஒரு சரிபார்க்கப்பட்ட கருவியின் வடிவமைப்பை உருவாக்குகிறது, இது நீங்கள் Pydantic AI க்கு வந்தது.
அளவை ஒரு சரம் ஆக வைத்திருக்கவும்; 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.
send_payment ஆரம்ப கட்டத்தில் 503 answer செய்யக்கூடும்
payments.create default-ஆக retry செய்யாது, மேலும் உங்கள் network-க்கு chain adapter இணைக்கப்படும் வரை 503 return செய்யக்கூடும். agent loop ஆக விடாமல், உங்கள் tool-க்குள் error-ஐ catch செய்து, model செயல்படக்கூடிய தெளிவான message-ஐ return செய்யவும். Auto-minted idempotency key காரணமாக manual retry double-pay செய்யாது.
முதலீட்டாளர் முன்னணி மாதிரி சரங்கள்
Pydantic AI முதலீட்டாளர் முன்னணி மாதிரி சரங்களைப் பயன்படுத்துகிறது: 'openai:gpt-4o', 'anthropic:claude-3-5-sonnet-latest', 'google-gla:gemini-1.5-pro'. முன்னணி நீக்கினால், ஒரு மர்மமான 'அறியாத மாதிரி' பிழை கிடைக்கும். உங்கள் கருவி HTTP API ஐ அழைக்கிறதால், அது வழங்குநர்-அறியாதது - முன்னணியை சுதந்திரமாக மாற்றவும், வாலெட் செயல்பாடு மாற்றமில்லை.
tool_plain vs tool (RunContext)
மேலே உள்ளபடி செயல்பாட்டுக்கு இயக்கத்திலிருந்து எதுவும் தேவை இல்லாத போது @agent.tool_plain ஐ பயன்படுத்தவும். கருவியில் முகவரியின் சார்புகளை (ஒரு கேள்விக்கு கிளையாளர் ஐடி, ஒரு செலவீன வரம்பு) நீங்கள் விரும்பினால், @agent.tool ஐப் பயன்படுத்தவும் மற்றும் முதல் வாதத்தை ctx: RunContext[Deps] ஆக அறிவிக்கவும், ctx.deps ஐப் படிக்கவும். இரண்டையும் கலக்குவது - tool_plain இல் ctx வாதத்தை அறிவிப்பது - பதிவு செய்ய TypeError ஐ எழுப்புகிறது.