মূল বিষয়বস্তুতে যান
OPENAI AGENTS SDK ইন্টিগ্রেশন

OpenAI Agents SDK ইন্টিগ্রেশন।

এজেন্ট SDK প্যাকেজ নেই, এবং আপনার একটি প্রয়োজন নেই। একটি ফাংশনকে @function_tool দিয়ে সাজান, প্রকৃত blockchain0x ক্লায়েন্টকে কল করুন, এবং আপনার এজেন্ট Base-এ USDC স্থানান্তর করতে পারে।

সংক্ষিপ্ত উত্তর

OpenAI Agents SDK-এর জন্য আলাদা কোনো package নেই, এবং আপনারও তা দরকার নেই। SDK দিয়ে একটি decorated function-কে tool-এ রূপান্তর করে, তাই আপনি real Python client-কে একটি function-এ wrap করে আপনার -এ যোগ করেন। এজেন্ট single agent, handoff, এবং underlying Responses API জুড়ে USDC পাঠাতে, invoice settle করতে, এবং wallet পড়তে পারে। Payment Base-এ settle হয়।

কেন OPENAI AGENTS SDK

সবচেয়ে পরিষ্কার টুল-কলে সুরক্ষা OpenAI প্রেরণ করে।

OpenAI এজেন্ট SDK (২০২৫ সালে মুক্তি পেয়েছে) হল OpenAI এর সুপারিশকৃত উপায় এজেন্ট তৈরি করার জন্য Responses API এর উপর। এটি টুল নিবন্ধন, বার্তা লুপ এবং এজেন্টগুলির মধ্যে হ্যান্ডঅফের চারপাশে বয়লারপ্লেটকে বিমূর্ত করে এবং এটি পরিষ্কার, টাইপ করা পাইথন কোড তৈরি করে। যদি আপনি আজ একটি OpenAI-কেন্দ্রিক এজেন্ট প্রকল্প শুরু করেন এবং আপনার ফ্রেমওয়ার্ক পছন্দ না থাকে, তবে এটি হল SDK যা আমরা সুপারিশ করি।

রেসিপিটি ইচ্ছাকৃতভাবে পাতলা। send_usdc হল একটি সাধারণ ফাংশন যা @function_tool দিয়ে সাজানো; আপনি এটি একটি এজেন্টের টুলের তালিকায় যুক্ত করেন এবং রানার এটি তুলে নেয়। কোনো বিশেষ কনফিগারেশন নেই, কোনো অতিরিক্ত মোড়ক নেই, SDK-এর কোনো ফর্ক নেই। যখন Agents SDK একটি নতুন বৈশিষ্ট্য চালু করে (বহু-মোড ইনপুট, ভয়েস এজেন্ট), আপনার ফাংশনটি কাজ করতে থাকে কারণ এটি স্ট্যান্ডার্ড টুল-কলে পৃষ্ঠের উপর চলে - এতে কিছু সংস্করণ-নির্দিষ্ট নেই।

ইনস্টলেশন

এজেন্টস SDK এবং মূল SDK ইনস্টল করুন। দুটি কী।

যোগ করার জন্য কোনো blockchain0x Agents SDK প্যাকেজ নেই। আপনি OpenAI Agents SDK (openai-agents প্যাকেজ, Python 3.10+) এবং প্রকৃত blockchain0x মূল SDK ইনস্টল করেন, তারপর নিচের ফাংশনটি লেখেন। এটি পুরো নির্ভরতা তালিকা।

ইনস্টল করুন
pip install openai-agents blockchain0x
পরিবেশ ভেরিয়েবল
export OPENAI_API_KEY=sk-...
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

OPENAI_API_KEY আপনার বিদ্যমান OpenAI কী (Agents SDK এটি মৌলিক Responses API এর জন্য ব্যবহার করে)। BLOCKCHAIN0X_API_KEY আপনার ড্যাশবোর্ড থেকে একটি sk_test_ testnet বা sk_live_ mainnet কী; ক্লায়েন্ট এটি পরিবেশ থেকে পড়ে। যদি আপনার এজেন্টও অর্থ গ্রহণ করে, তবে ওয়েবহুক হ্যান্ডলার অতিরিক্তভাবে 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 গ্রহণ করে, তবে এটি ওয়েবহুকের সাথে নিশ্চিত করুন পোলিংয়ের পরিবর্তে। যাচাই সহায়ক নোড SDK তে শিপ করে; একটি পাইথন সার্ভিসে আপনি নথিভুক্ত HMAC এর বিরুদ্ধে হাতে যাচাই করেন, যা সহায়কটি করে। নিচে FastAPI উদাহরণ; একই কোড যেকোন অ্যাসিঙ্ক পাইথন ফ্রেমওয়ার্কে কাজ করে।

ওয়েবহুক.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}

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

সূত্র এবং ডক্স

আপনি যেটি মোড়াচ্ছেন ক্লায়েন্টটি খোলা। এটি পড়ুন।

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

github.com/tosh-labs/blockchain0x-python

পূর্ণ SDK পদ্ধতি পৃষ্ঠ এবং স্কোপগুলি ডকস এ নথিভুক্ত। Base Sepolia এর বিরুদ্ধে একটি sk_test_ কী দিয়ে শুরু করুন, তারপর যখন ফাংশন আপনার প্রত্যাশা অনুযায়ী কাজ করে তখন sk_live_ এ স্যুইচ করুন।

সাধারণ ফাঁদ

প্রথম ইন্টিগ্রেশনে লক্ষ্য করার জন্য পাঁচটি বিষয়।

এগুলি আমাদের সমর্থন ইনবক্স থেকে আসে। এগুলি আগে জানলে প্রতিটি এক ঘণ্টা সাশ্রয় হয়।

PITFALL 1

এজেন্ট SDK প্যাকেজ নেই - আপনি SDK মোড়ান

Blockchain0x LangChain এবং CrewAI এর জন্য অ্যাডাপ্টার পাঠায় এবং MCP সার্ভার; কোনও নিবেদিত OpenAI Agents SDK প্যাকেজ নেই। উপরের রেসিপিটি হল পথ: একটি সাধারণ টাইপ করা ফাংশনকে @function_tool দিয়ে সাজিয়ে, এর ভিতরে আসল blockchain0x ক্লায়েন্টকে কল করুন এবং এটিকে Agent(tools=[...])-এ যুক্ত করুন। SDK স্বাক্ষর এবং ডক্সট্রিং পড়ে স্কিমা তৈরি করে, তাই ডক্সট্রিংটি সঠিক রাখুন।

PITFALL 2

এজেন্ট SDK হল না সহায়ক API

OpenAI Agents SDK (openai-agents প্যাকেজ, এজেন্ট হিসাবে আমদানি করা) পুরানো Assistants API থেকে একটি ভিন্ন পণ্য। রেসিপিটি Agents SDK-কে লক্ষ্য করে: এজেন্ট + রানার + @function_tool Responses API-এর উপর। যদি আপনি client.beta.assistants.create(...) কল করেন, তাহলে আপনি পুরানো থ্রেড/রান মডেলে রয়েছেন যা OpenAI বন্ধ করছে - Agents SDK-তে চলে যান এবং উপরের ফাংশনটি সোজা চলে আসে।

PITFALL 3

পরিমাণগুলি 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.

PITFALL 4

send_payment প্রাথমিকভাবে 503 উত্তর দিতে পারে

payments.create ডিফল্টভাবে পুনরায় চেষ্টা করে না এবং আপনার নেটওয়ার্কের জন্য চেইন অ্যাডাপ্টার সংযুক্ত না হওয়া পর্যন্ত 503 ফেরত দিতে পারে। আপনার ফাংশনের মধ্যে ত্রুটি ধরুন এবং একটি স্পষ্ট বার্তা ফেরত দিন যা মডেল কার্যকর করতে পারে, রানার লুপ করতে না দিয়ে। স্বয়ংক্রিয়ভাবে তৈরি করা idempotency কী মানে একটি ম্যানুয়াল পুনরায় চেষ্টা দ্বিগুণ পেমেন্ট করবে না।

PITFALL 5

অ্যাসিঙ্ক-শুধুমাত্র রানটাইম

এজেন্ট SDK হল অ্যাসিঙ্ক-প্রথম - await Runner.run(...)। আপনার টুলের ভিতরে blockchain0x কলটি সিঙ্ক্রোনাস, যা একটি একক দ্রুত পেমেন্টের জন্য ঠিক আছে কিন্তু লোডের অধীনে লুপকে ব্লক করে। যদি আপনি অনেক সমান্তরাল এজেন্ট চালাচ্ছেন, SDK কলটি asyncio.to_thread দিয়ে মোড়ান। একটি সিঙ্ক এন্ট্রি পয়েন্ট থেকে, শীর্ষ স্তরে asyncio.run()।

প্রায়শই জিজ্ঞাসিত

তিনটি OpenAI Agents SDK প্রশ্ন।

ইনস্টল করার জন্য কি একটি নিবেদিত OpenAI Agents SDK প্যাকেজ আছে?

না। Agents SDK ইতিমধ্যেই একটি সাজানো ফাংশনকে @function_tool দিয়ে একটি টুলে পরিণত করে, তাই সৎ পথ হল বাস্তব blockchain0x ক্লায়েন্টকে নিজে মোড়ানো, যেমন উপরে দেখানো হয়েছে। একমাত্র বিতরণ করা ফ্রেমওয়ার্ক প্যাকেজগুলি হল blockchain0x-langchain এবং blockchain0x-crewai (দুইটি Python) এবং @blockchain0x/mcp সার্ভার। Agents SDK, অন্যান্য ফ্রেমওয়ার্কগুলির মতো যাদের জন্য একটি নিবেদিত অ্যাডাপ্টার নেই, এই কয়েক লাইন রেসিপি।

আমি কি এটি এজেন্ট SDK ছাড়া সরাসরি OpenAI Responses API এর সাথে ব্যবহার করতে পারি?

হ্যাঁ। Responses API হল টুল-কলিং স্তর যা Agents SDK নির্মাণ করে। যদি আপনি client.responses.create() সরাসরি কল করেন, তবে অনুরোধের টুলের তালিকায় একই ফাংশনটিকে একটি টুল হিসাবে ঘোষণা করুন এবং যখন মডেলটি এটি চায় তখন নিজেই কলটি বিতরণ করুন - বডিটি হল রেসিপি থেকে blockchain0x.payments.create কল। Agents SDK হল সর্বনিম্ন প্রতিরোধের পথ কারণ @function_tool সেই টুল স্কিমা এবং বিতরণ আপনার জন্য তৈরি করে।

এটি কি মাল্টি-এজেন্ট হ্যান্ডঅফের সাথে কাজ করে?

হ্যাঁ, এবং আপনি সিদ্ধান্ত নেন কোন এজেন্ট ওয়ালেটের মালিক। পরিষ্কার প্যাটার্ন হল একটি একক ফ্রন্ট-ফেসিং এজেন্টকে পেমেন্ট ফাংশন দেওয়া এবং এটি বিশেষজ্ঞ এজেন্টদের কাছে প্রকৃত কাজটি হস্তান্তর করা যারা কোন ওয়ালেট টুল বহন করে না। ব্যয় কর্তৃত্ব এক জায়গায় থাকে, তাই ভুল এজেন্ট চার্জিং নেই। একইভাবে পড়া এবং নিষ্পত্তি ফাংশন যোগ করুন - blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle - প্রতিটি তার নিজস্ব @function_tool হিসাবে।

আপনার Agents SDK বিল্ডে পেমেন্ট যোগ করুন।

কিছু লাইন বাস্তব ক্লায়েন্টকে মোড়ানো, ইনস্টল করার জন্য কোন প্যাকেজ নেই। শুরু করতে বিনামূল্যে।