OpenAI Agents SDK സംയോജനം.
Agents SDK പാക്കേജ് ഇല്ല, നിങ്ങൾക്ക് ഒന്നും ആവശ്യമില്ല. @function_tool-ൽ ഒരു ഫംഗ്ഷൻ അലങ്കരിക്കുക, യഥാർത്ഥ blockchain0x ക്ലയന്റിനെ വിളിക്കുക, നിങ്ങളുടെ ഏജന്റ് Base-ൽ USDC നീക്കാൻ കഴിയും.
OpenAI Agents SDK-യ്ക്ക് പ്രത്യേക package ഒന്നുമില്ല, അതിനാൽ ആവശ്യമുമില്ല. SDK ഉപയോഗിച്ച് ഒരു decorated function-നെ tool ആക്കുന്നതിനാൽ, real Python client-നെ ഒരു function-ൽ wrap ചെയ്ത് നിങ്ങളുടെ -ൽ ചേർക്കുക. agent-ന് USDC അയക്കാനും, invoices settle ചെയ്യാനും, wallets വായിക്കാനും കഴിയും - single agents, handoffs, underlying Responses API എന്നിവയിലുടനീളം. Payments Base-ൽ settle ചെയ്യും.
OpenAI അയക്കുന്ന ഏറ്റവും ശുദ്ധമായ ടൂൾ-കോളിംഗ് ഉപരിതലമാണ്.
OpenAI ഏജന്റുകൾ SDK (2025-ൽ പുറത്തിറക്കിയ) Responses API-യുടെ മേൽ ഏജന്റുകൾ നിർമ്മിക്കാൻ OpenAI ശുപാർശ ചെയ്യുന്ന മാർഗമാണ്. ഇത് ടൂൾ രജിസ്ട്രേഷൻ, സന്ദേശ ലൂപ്പുകൾ, ഏജന്റുകൾക്കിടയിലെ കൈമാറ്റങ്ങൾ എന്നിവയുടെ ബോയിലർപ്ലേറ്റ് ആബ്സ്ട്രാക്റ്റ് ചെയ്യുന്നു, കൂടാതെ ഇത് ശുദ്ധമായ, ടൈപ്പ് ചെയ്ത Python കോഡ് ഉത്പാദിപ്പിക്കുന്നു. നിങ്ങൾ ഇന്ന് OpenAI-കേന്ദ്രിതമായ ഏജന്റ് പ്രോജക്ട് ആരംഭിക്കുന്നുവെങ്കിൽ, ഫ്രെയിംവർക്ക് ഇഷ്ടങ്ങൾ ഇല്ലെങ്കിൽ, ഇത് ഞങ്ങൾ ശുപാർശ ചെയ്യുന്ന SDK ആണ്.
ഈ റെസിപ്പി ഉദ്ദേശ്യപരമായി തിളക്കമുള്ളതാണ്. send_usdc ഒരു സാധാരണ ഫംഗ്ഷനാണ്, @function_tool-ൽ അലങ്കരിച്ചിരിക്കുന്നു; നിങ്ങൾ അത് ഒരു ഏജന്റിന്റെ ഉപകരണങ്ങളുടെ പട്ടികയിൽ ചേർക്കുന്നു, റണ്ണർ അത് എടുക്കുന്നു. പ്രത്യേക ക്രമീകരണം ഇല്ല, അധിക വ്രാപ്പർ ഇല്ല, SDK-യുടെ ഒരു ഫോർക്ക് ഇല്ല. ഏജന്റുകളുടെ SDK ഒരു പുതിയ ഫീച്ചർ (ബഹുമുഖ ഇൻപുട്ടുകൾ, ശബ്ദ ഏജന്റുകൾ) അയക്കുമ്പോൾ, നിങ്ങളുടെ ഫംഗ്ഷൻ പ്രവർത്തനക്ഷമമാണ്, കാരണം ഇത് സ്റ്റാൻഡേർഡ് ടൂൾ-കോളിംഗ് ഉപരിതലത്തിൽ പ്രവർത്തിക്കുന്നു - അതിൽ ഒന്നും പതിപ്പ്-നിഷ്കർഷമായില്ല.
എജന്റുകളുടെ SDK ഇൻസ്റ്റാൾ ചെയ്യുക, കൂടാതെ കോർ SDK. രണ്ട് കീകൾ.
ചേർക്കാൻ blockchain0x Agents SDK പാക്കേജ് ഇല്ല. നിങ്ങൾ OpenAI Agents SDK (openai-agents പാക്കേജ്, Python 3.10+) ഇൻസ്റ്റാൾ ചെയ്യുന്നു, യഥാർത്ഥ blockchain0x കോർ SDK, പിന്നെ താഴെ ഫംഗ്ഷൻ എഴുതുന്നു. അത് മുഴുവൻ ആശ്രിതങ്ങളുടെ പട്ടികയാണ്.
pip install openai-agents blockchain0xexport OPENAI_API_KEY=sk-... export BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
OPENAI_API_KEY നിങ്ങളുടെ നിലവിലുള്ള OpenAI key ആണ് (Agents SDK അതിനെ അടിസ്ഥാന Responses API-ക്കായി ഉപയോഗിക്കുന്നു). BLOCKCHAIN0X_API_KEY നിങ്ങളുടെ dashboard-ലുള്ള sk_test_ testnet അല്ലെങ്കിൽ sk_live_ mainnet കീ ആണ്; client അതിനെ environment-ൽ നിന്ന് വായിക്കുന്നു. നിങ്ങളുടെ agent-ിന് money സ്വീകരിക്കാനുമുണ്ടെങ്കിൽ, webhook handler-ിന് കൂടാതെ BLOCKCHAIN0X_WEBHOOK_SECRET ആവശ്യമാണ്.
ഒരു @function_tool, ഏജന്റിന് കൈമാറുന്നു.
താഴെ മുഴുവൻ സംയോജനം ആണ്. send_usdc യഥാർത്ഥ blockchain0x ക്ലയന്റ് വിളിക്കുന്നു; @function_tool ഇത് ഒരു ഉപകരണമായി മാറ്റുന്നു, റണ്ണർ വിളിയെ ഓർക്കസ്ട്രേറ്റ് ചെയ്യുന്നു. SDK തരം സൂചനകൾ, ഡോക്സ്ട്രിംഗ് എന്നിവ വായിച്ച് സ്കീമ നിർമ്മിക്കുന്നു, അതിനാൽ അവയെ സത്യമായിരിക്കുക. ഇത് പ്രവർത്തിപ്പിക്കുക, ഏജന്റ് Base-ൽ USDC കൈമാറുന്നു.
from agents import Agent, Runner, function_tool from blockchain0x import Client blockchain0x = Client() # reads BLOCKCHAIN0X_API_KEY from the environment @function_tool 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}) ) agent = Agent( name="treasurer", instructions="You pay vendor invoices in USDC within owner-set limits.", tools=[send_usdc], model="gpt-4o", ) result = await Runner.run( agent, input="Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.", ) print(result.final_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_. Add more functions - read a wallet, settle an invoice - the same way; each is another @function_tool in the list.
ഒരു ഒപ്പിട്ട വെബ് ഹുക്ക് ഉപയോഗിച്ച് വരവേൽപ്പു പണമടച്ചുകൾ സ്ഥിരീകരിക്കുക.
നിങ്ങളുടെ ഏജന്റ് 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, arq) enqueue ചെയ്യുക, ഹാൻഡ്ലർ തടയുന്നതിന് പകരം ഉടൻ 200 പ്രതികരിക്കുക.
നിങ്ങൾ വ്രാപ്പ് ചെയ്യുന്ന ക്ലയന്റ് തുറന്നതാണ്. അത് വായിക്കുക.
clone ചെയ്യാൻ വേറെ Agents SDK 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_ ആയി മാറുക.
ആദ്യ ഇന്റഗ്രേഷനിൽ ശ്രദ്ധിക്കേണ്ട അഞ്ചു കാര്യങ്ങൾ.
ഇവ നമ്മുടെ പിന്തുണ ഇൻബോക്സിൽ നിന്നാണ്. അവയെ മുൻകൂട്ടി അറിയുന്നത് ഓരോന്നിനും ഒരു മണിക്കൂർ സംരക്ഷിക്കുന്നു.
Agents SDK പാക്കേജ് ഇല്ല - നിങ്ങൾ SDK-നെ മൂടുന്നു
Blockchain0x LangChain, CrewAI, MCP സെർവറിന് അഡാപ്റ്ററുകൾ അയക്കുന്നു; പ്രത്യേക OpenAI Agents SDK പാക്കേജ് ഇല്ല. മുകളിൽ നൽകിയ റെസിപ്പി വഴി: ഒരു സാധാരണ typed ഫംഗ്ഷനെ @function_tool-ൽ അലങ്കരിക്കുക, യഥാർത്ഥ blockchain0x ക്ലയന്റ് അതിന്റെ അകത്ത് വിളിക്കുക, Agent(tools=[...])-ൽ ചേർക്കുക. SDK സിഗ്നേച്ചർ, ഡോക്സ്ട്രിംഗ് എന്നിവ വായിച്ച് സ്കീമ നിർമ്മിക്കുന്നു, അതിനാൽ ഡോക്സ്ട്രിംഗ് കൃത്യമായിരിക്കണം.
ഏജന്റുകൾ SDK അസിസ്റ്റന്റ് API അല്ല
OpenAI ഏജന്റുകളുടെ SDK (openai-agents പാക്കേജ്, ഏജന്റുകൾ എന്ന നിലയിൽ ഇറക്കുമതി ചെയ്ത) പഴയ അസിസ്റ്റന്റുകൾ API-യിൽ നിന്ന് വ്യത്യസ്തമായ ഉൽപ്പന്നമാണ്. വിഭവം ഏജന്റുകളുടെ SDK-യെ ലക്ഷ്യമിടുന്നു: ഏജന്റ് + റണ്ണർ + @function_tool പ്രതികരണ API-യിൽ. നിങ്ങൾ client.beta.assistants.create(...) വിളിക്കുകയാണെങ്കിൽ, നിങ്ങൾ പഴയ ത്രെഡുകൾ/ഓടുകൾ മോഡലിൽ ആണ്, OpenAI അവസാനിപ്പിക്കുന്നു - ഏജന്റുകളുടെ SDK-ലേക്ക് മാറുക, മുകളിലുള്ള ഫംഗ്ഷൻ നേരിട്ട് വീഴുന്നു.
അളവുകൾ USDC അടിസ്ഥാന യൂണിറ്റുകൾ, സ്ട്രിംഗുകളായി
payments.create takes amountWei: a string of USDC base units, not a float. USDC has 6 decimals, so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the function argument as str; a float will lose precision before it reaches the API. Keep it a string end to end.
send_payment തുടക്കത്തിൽ 503 മറുപടി നൽകാം
payments.create ഡിഫോൾട്ടായി വീണ്ടും ശ്രമിക്കില്ല, കൂടാതെ നിങ്ങളുടെ network-നായി chain adapter ബന്ധിപ്പിക്കുന്നതുവരെ 503 തിരികെ നൽകാം. Runner loop ചെയ്യാൻ വിടാതെ, നിങ്ങളുടെ function-ൽ തന്നെ error പിടിച്ച് model പ്രവർത്തിക്കാനാവുന്ന വ്യക്തമായ സന്ദേശം മടക്കുക. സ്വയമേവ സൃഷ്ടിച്ച idempotency key ഉള്ളതിനാൽ മാനുവൽ retry double-pay ഉണ്ടാക്കില്ല.
അസിങ്ക്-മാത്രം റൺടൈം
ഏജന്റുകളുടെ SDK അസിങ്ക്-മുന്നണിയാണ് - await Runner.run(...). നിങ്ങളുടെ ഉപകരണത്തിനുള്ള blockchain0x വിളി സമകാലികമാണ്, ഇത് ഒരു ഏകീകൃത പേയ്മെന്റിന് ശരിയാണ്, പക്ഷേ ലോഡിന്റെ കീഴിൽ ലൂപ്പ് തടയുന്നു. നിങ്ങൾ പല സമകാലിക ഏജന്റുകൾ ഓടിച്ചാൽ, SDK വിളി asyncio.to_thread ഉപയോഗിച്ച് വ്രാപ്പ് ചെയ്യുക. ഒരു സമകാലിക എൻട്രി പോയിന്റിൽ, asyncio.run() മുകളിൽ.