AutoGen പണമടച്ച സംയോജനം.
AutoGen പാക്കേജ് ഇല്ല, നിങ്ങൾക്ക് ഒന്നും ആവശ്യമില്ല. യഥാർത്ഥ blockchain0x ക്ലയന്റിനെ ഒരു ഫംഗ്ഷനിൽ മൂടുക, അത് നിങ്ങളുടെ ഏജന്റിന് കൈമാറുക, അത് Base-ൽ USDC നീക്കാൻ കഴിയും.
AutoGen-യ്ക്ക് പ്രത്യേക package ഒന്നുമില്ല, അതിന് നിങ്ങൾക്ക് ആവശ്യമുമില്ല. AutoGen ഇതിനകം തന്നെ ഒരു plain typed function-നെ tool ആക്കുന്നതിനാൽ, real Python client-നെ ഒരു function-ൽ wrap ചെയ്ത്, അത് -ന് വഴി നൽകുക, അതിലൂടെ agent-ന് Base-ൽ USDC അയക്കാനും, invoices settle ചെയ്യാനും, wallets വായിക്കാനും കഴിയും. സെറ്റ് ചെയ്ത് തുടങ്ങുക.
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 നിങ്ങളുടെ dashboard-ലുള്ള sk_test_ testnet അല്ലെങ്കിൽ sk_live_ mainnet കീ ആണ്; client അതിനെ environment-ൽ നിന്ന് വായിക്കുന്നു. നിങ്ങളുടെ agent-ിന് money സ്വീകരിക്കാനുമുണ്ടെങ്കിൽ, webhook handler-ിന് കൂടി BLOCKCHAIN0X_WEBHOOK_SECRET ആവശ്യമാണ്, ഇത് ഒരു webhook create ചെയ്യുമ്പോഴോ rotate ചെയ്യുമ്പോഴോ dashboard ഒരിക്കൽ return ചെയ്യും.
ഒരു ഫംഗ്ഷൻ, അസിസ്റ്റന്റ് ഏജന്റിന് കൈമാറുന്നു.
താഴെ മുഴവൻ സംയോജനം ആണ്. send_usdc യഥാർത്ഥ blockchain0x ക്ലയന്റ് വിളിക്കുന്നു; AssistantAgent(tools=[send_usdc]) ഇത് മോഡൽ വിളിക്കാവുന്ന ഒരു ഉപകരണമായി മാറ്റുന്നു. AutoGen തരം സൂചനകൾ, ഡോക്സ്ട്രിംഗ് എന്നിവ വായിച്ച് സ്കീമ നിർമ്മിക്കുന്നു, അതിനാൽ അവയെ സത്യമായിരിക്കുക. ഇത് പ്രവർത്തിപ്പിക്കുക, ഏജന്റ് Base-ൽ USDC കൈമാറുന്നു.
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 സ്വീകരിക്കുന്നുവെങ്കിൽ, polling വഴി അല്ലാതെ വെബ്ഹുക്ക് ഉപയോഗിച്ച് ഇത് സ്ഥിരീകരിക്കുക. verify സഹായി Node SDK-യിൽ എത്തിക്കുന്നു; ഒരു Python സേവനത്തിൽ, രേഖപ്പെടുത്തിയ HMAC-ന് എതിരായും നിങ്ങൾ കൈകൊണ്ടു സ്ഥിരീകരിക്കുന്നു, ഇത് സഹായിയുടെ എല്ലാ കാര്യങ്ങളും ചെയ്യുന്നു. താഴെയുള്ള FastAPI ഉദാഹരണം; ഒരുപോലെ കോഡ് ഏതെങ്കിലും അസിങ്ക് 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}
അൽഗോറിതം t.rawBody എന്ന വരിയിൽ HMAC-SHA256 ആണ്, സ്ഥിരമായ സമയത്ത് താരതമ്യം ചെയ്യുന്നു, 300-സെക്കൻഡ് പുനരാവൃത്തി വിൻഡോ. ഒപ്പുവെച്ചതിന്റെ അക്ഷരരൂപം നിലനിർത്താൻ await request.body() വഴി കച്ചവട ബോഡി വായിക്കുക, request.json() വീണ്ടും സീരിയലൈസ് ചെയ്യരുത്, കാരണം അത് ഒപ്പുവെച്ചതിന്റെ പരിധിയിൽ വരുന്ന ബൈറ്റുകൾ മാറ്റുന്നു. അയച്ച ഇവന്റുകൾ payment.received, payment.sent, wallet.deployed, webhook.test എന്നിവയാണ്. ഭാരമുള്ള പിന്തുടർച്ചാ പ്രവർത്തനങ്ങൾക്ക്, ഒരു ജോലി (Celery, RQ, arq) enqueue ചെയ്യുക, ഹാൻഡ്ലർ തടയുന്നതിന് പകരം ഉടൻ 200 പ്രതികരിക്കുക.
നിങ്ങൾ വ്രാപ്പ് ചെയ്യുന്ന ക്ലയന്റ് തുറന്നതാണ്. അത് വായിക്കുക.
clone ചെയ്യാൻ വേറെ AutoGen 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_ ആയി മാറുക.
എടുപ്പിക്കേണ്ട അഞ്ചു ഗ്രൂപ്പ്-ചാറ്റും അസിങ്ക്രോണസ് തട്ടിപ്പുകൾ.
AutoGen-ന്റെ ബഹുഏജന്റ് + അസിങ്ക് രൂപകൽപ്പന ശക്തമായ മാതൃകകൾ തുറക്കുന്നു, എന്നാൽ അതിന്റെ സ്വന്തം പാദക്കുഴികൾ അവതരിപ്പിക്കുന്നു. ഇവ ഞങ്ങളുടെ പിന്തുണ ഇൻബോക്സിൽ നിന്നാണ്.
AutoGen പാക്കേജ് ഇല്ല - നിങ്ങൾ SDK-നെ മൂടുന്നു
Blockchain0x LangChain, CrewAI, MCP സെർവറിന് അഡാപ്റ്ററുകൾ അയക്കുന്നു; പ്രത്യേക AutoGen പാക്കേജ് ഇല്ല. മുകളിൽ നൽകിയ റെസിപ്പി വഴി: യഥാർത്ഥ blockchain0x ക്ലയന്റ് വിളിക്കുന്ന ഒരു സാധാരണ typed ഫംഗ്ഷൻ, AssistantAgent(tools=[...])-ക്ക് കൈമാറുന്നു. AutoGen ഫംഗ്ഷൻ സിഗ്നേച്ചർ, ഡോക്സ്ട്രിംഗ് എന്നിവ വായിച്ച് സ്കീമ നിർമ്മിക്കുന്നു, അതിനാൽ ഡോക്സ്ട്രിംഗ് കൃത്യമായിരിക്കണം.
അളവുകൾ 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.
send_payment തുടക്കത്തിൽ 503 മറുപടി നൽകാം
payments.create ഡിഫോൾട്ടായി വീണ്ടും ശ്രമിക്കില്ല, കൂടാതെ നിങ്ങളുടെ network-നായി chain adapter ബന്ധിപ്പിക്കുന്നതുവരെ 503 തിരികെ നൽകാം. പരാജയപ്പെട്ട പേയ്മെന്റിൽ group chat loop ചെയ്യാൻ വിടരുത് - നിങ്ങളുടെ function-ൽ error പിടിച്ച് model പ്രവർത്തിക്കാനാവുന്ന വ്യക്തമായ സന്ദേശം മടക്കുക, കൂടാതെ മാനുവൽ retry double-pay ആകാതിരിക്കാൻ auto-minted idempotency key-യിൽ ആശ്രയിക്കുക.
AutoGen 0.4+ async ആണ്; SDK വിളി സമകാലികമാണ്
AutoGen 0.4 ടൂളുകൾ ഒരു async ലൂപ്പിൽ പ്രവർത്തിക്കുന്നു. blockchain0x ക്ലയന്റ് വിളി സമകാലികമാണ്, ഇത് ഒരു വേഗത്തിലുള്ള അഭ്യർത്ഥനയ്ക്ക് നല്ലതാണ്, എന്നാൽ ഒരു മന്ദമായ വിളി ലൂപ്പ് തടയുന്നു. നിങ്ങൾ യാഥാർത്ഥ്യ വോള്യം കൈമാറുന്നുവെങ്കിൽ, SDK വിളിയെ asyncio.to_thread-ൽ ചുറ്റിക്കൊണ്ട് ഇവന്റ് ലൂപ്പ് പ്രതികരണശേഷിയുള്ളതാക്കുക. ഓരോ തവണയും ഒരു പണമിടപാട് ചെയ്യാൻ, നേരിട്ട് വിളിക്കുന്നത് നല്ലതാണ്.
ഇൻബൗണ്ട് വെബ്ഹുക്കുകൾ കച്ചവട ബോഡി എതിരെ സ്ഥിരീകരിക്കുക
നിങ്ങളുടെ ഏജന്റ് പണം RECEIVES ചെയ്യുകയാണെങ്കിൽ, polling വഴി അല്ലാതെ വെബ്ഹുക്ക് ഉപയോഗിച്ച് ഇത് സ്ഥിരീകരിക്കുക. RAW അഭ്യർത്ഥന ബൈറ്റുകൾ (await request.body()) മുകളിൽ ഒപ്പിടൽ സ്ഥിരീകരിക്കുക, ഒരിക്കലും request.json() വീണ്ടും സീരിയലൈസ് ചെയ്യരുത്, കാരണം HMAC കൃത്യമായ ബൈറ്റുകൾ ഉൾക്കൊള്ളുന്നു. ഇത് 300-സെക്കൻഡ് റിപ്ലേ വിൻഡോയോടുകൂടിയ HMAC-SHA256 ആണ്. താഴെയുള്ള ഹാൻഡ്ലർ മുഴുവൻ കാര്യമാണ്.