মুখ্য সামগ্ৰীৰ পৰা এৰাই চাওক
LLAMAINDEX একত্ৰিতকৰণ

LlamaIndex পেমেণ্ট একত্ৰিতকৰণ।

LlamaIndex পেকেজ নাই, আৰু আপোনাৰ একো প্ৰয়োজন নাই। বাস্তৱ blockchain0x ক্লায়েন্টটো এখন FunctionToolত মুঠ কৰক আৰু আপোনাৰ এজেন্ট Base ত USDC স্থানান্তৰ কৰিব পাৰে আৰু এটা পেইড RAG প্ৰশ্নৰ দ্বাৰা গেট কৰিব পাৰে।

ছোট উত্তৰ

LlamaIndex-ৰ বাবে কোনো বিশেষ package নাই, আৰু আপোনাক তাৰ প্ৰয়োজনো নহয়। LlamaIndex-এ সৈতে এটা সাধাৰণ function-ক tool-লৈ ৰূপান্তৰ কৰে, সেয়ে আপুনি real Python client-টো এটা function-ত wrap কৰি এটা বা -ত যোগ কৰে। Agent-এ USDC পঠিয়াব পাৰে, invoice settle কৰিব পাৰে, আৰু wallet পঢ়িব পাৰে। প্ৰতি RAG query-ৰ বাবে charge কৰিব বিচাৰিলে, নিজৰ QueryEngineTool-টোকো একেই ধৰণে gate কৰক। Payment-সমূহ Base-ত settle হয়।

LLAMAINDEX PAID RAGৰ বাবে কিয় উপযুক্ত

RAG অনুসন্ধানবোৰ ব্যয়বহুল। প্ৰতি অনুসন্ধানৰ বাবে মাচুল লোৱাৰ দ্বাৰা অৰ্থনীতি কাৰ্যকৰী হয়।

LlamaIndexৰ শক্তি হৈছে পুনৰ উদ্ধাৰ-বৰ্ধিত উৎপাদন: আপোনাৰ প্ৰকৃত নথিপত্ৰ (আপোনাৰ কোম্পানীৰ নথিপত্ৰ, এটা গৱেষণা ডেটাসেট, এটা আইনী কৰ্পাছ)ৰ ওপৰত এটা ভেক্টৰ সূচী আছে, আৰু এজেণ্টে প্ৰাসংগিক খণ্ডসমূহ উদ্ধাৰ কৰি আৰু সংক্ষেপণ কৰি উত্তৰ দিয়ে। প্ৰতিটো অনুৰোধৰ বাবে বাস্তৱ ধন খৰচ হয় এম্বেডিং, LLM টোকেন, আৰু প্ৰায়েই তৃতীয়-পক্ষৰ API কলসমূহ। বিনামূলীয়া সীমাহীন প্ৰৱেশ বাজেটৰ ক্ষতি কৰে; প্ৰতি-অনুৰোধ বিলিং খৰচৰ আকাৰৰ সৈতে মিলে।

এইটো বাবে পঠিওৱা সহায়কৰ কোনো অস্তিত্ব নাই, আৰু আপোনাৰ একো প্ৰয়োজন নাই। আপুনি নিজেই ইয়াক গেট কৰে: আপোনাৰ QueryEngineToolৰ ফাংশনৰ ভিতৰত, চাওক যে কলাৰটোৱে পেমেন্ট কৰিছে নে (আপোনাৰ নিজৰ পতাকা, পেমেন্ট ৱেবহুকৰ দ্বাৰা উল্টোৱা) আৰু পুনৰ উদ্ধাৰ কৰক বা এটা মূল্য উলিয়াওক। ৱালেট ফাংশন আৰু গেটিং দুয়োটাই বাস্তৱ blockchain0x ক্লায়েন্টৰ ওপৰত কেইটামান লাইন, যি নীতি ৰাখে - প্ৰতি প্ৰশ্ন, প্ৰতি অধিবেশন, মুক্ত স্তৰ আৰু তাৰপিছত পেইড - সম্পূৰ্ণৰূপে আপোনাৰ হাতত।

স্থাপন

LlamaIndex আৰু মূল SDK ইনষ্টল কৰক। এটা পৰিৱেশ চলক।

যোগ কৰিবলৈ blockchain0x LlamaIndex পেকেজ নাই। আপুনি LlamaIndex (Python 3.10+, আধুনিক FunctionAgent / ReActAgent / Workflows APIs) আৰু বাস্তৱ blockchain0x মূল SDK স্থাপন কৰে, তাৰপিছত তলৰ ফাংশনটো লিখে। যিকোনো ভেক্টৰ ষ্টোৰৰ সৈতে কাম কৰে - Pinecone, Qdrant, Chroma, Weaviate, LlamaIndex Cloud।

স্থাপন কৰক
pip install llama-index blockchain0x
পরিবেশ চলক
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

BLOCKCHAIN0X_API_KEY হৈছে আপোনাৰ ডেছব'ৰ্ডৰ পৰা sk_test_ testnet বা sk_live_ mainnet চাবি; ক্লায়েন্টে ইয়াক পৰিবেশৰ পৰা পঢ়ে। যদি আপুনি পেইড প্ৰশ্নসমূহৰ বাবে গেট কৰে, তেন্তে webhook হেণ্ডলাৰে লগতে BLOCKCHAIN0X_WEBHOOK_SECRETৰ প্ৰয়োজন, যি ডেছব'ৰ্ডে আপোনাৰ webhook সৃষ্টি বা ঘূৰাই দিলে একবাৰ মাক কৰে।

ৰেচিপি

এখন ফাংশন যি পেমেণ্ট কৰে, FunctionTool হিচাপে আবৰণ কৰা।

তলত সমগ্ৰ একত্ৰণ আছে। send_usdc বাস্তৱ blockchain0x ক্লায়েন্টক কল কৰে; FunctionTool.from_defaults ইয়াক আবৰি ৰাখে, আৰু FunctionAgent ইয়াক এটা কলযোগ্য টুল হিচাপে গ্ৰহণ কৰে। LlamaIndex টাইপ হিন্ট আৰু ডকষ্ট্ৰিং পঢ়ে যাতে স্কিমা নিৰ্মাণ কৰিব পাৰে। তালিকাত আপোনাৰ নিজস্ব QueryEngineTool যোগ কৰক আৰু একে এজেন্টে RAG প্ৰশ্নসমূহৰো উত্তৰ দিব পাৰে।

AGENT.PY
from llama_index.core.tools import FunctionTool
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai import OpenAI
from blockchain0x import Client

blockchain0x = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment

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})
    )

# Wrap the plain function as a LlamaIndex tool. No dedicated package needed.
pay_tool = FunctionTool.from_defaults(fn=send_usdc)

agent = FunctionAgent(
    tools=[pay_tool],  # plus your own QueryEngineTool over a RAG index
    llm=OpenAI(model="gpt-4o"),
    system_prompt="You pay vendor invoices in USDC within owner-set limits.",
)

response = await agent.run(
    "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_. To charge for a query instead, put the same paid check at the top of your QueryEngineTool's function.

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

যেতিয়া ৱেবহুক আহে তেতিয়া পেমেন্টৰ পতাকা উল্টাওক।

যেতিয়া এটা পেমেন্ট স্থিৰ হয়, Blockchain0x আপোনাৰ ৱেবহুক URLলৈ এটা স্বাক্ষৰিত payment.received ঘটনা POST কৰে। verify সহায়ক Node SDKত প্ৰেৰণ কৰা হয়; এটা Python সেৱাত আপুনি হাতৰ দ্বাৰা নথিভুক্ত HMACৰ বিৰুদ্ধে পৰীক্ষা কৰে। আপোনাৰ নিজৰ ষ্টোৰত কলকাৰীক পেমেন্ট কৰা বুলি চিহ্নিত কৰক, আৰু আপোনাৰ গেটেড কুৱাৰী টুলে পৰৱৰ্তী কলটো পাৰ হৈ যাব। তলত 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 - serve the paid query
    return {"ok": True}

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

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

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

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

github.com/tosh-labs/blockchain0x-python

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

সাধাৰণ বিপদ

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

এইবোৰ আমাৰ সমৰ্থন ইনবক্সৰ পৰা আহে। প্ৰতিটো জানিবলৈ পালে অন্ততঃ এক ঘণ্টাৰ ডিবাগিং বাচায়।

PITFALL 1

LlamaIndex পেকেজ নাই - আপুনি SDK মুঠ কৰে

Blockchain0x LangChain আৰু CrewAIৰ বাবে এডাপ্টাৰ প্ৰেৰণ কৰে লগতে MCP ছাৰ্ভাৰ; ইয়াত কোনো নিৰ্দিষ্ট LlamaIndex পেকেজ নাই। তলত উল্লেখ কৰা ৰেচিপি হৈছে পথ: এটা সাধাৰণ টাইপ কৰা ফাংশন যিয়ে বাস্তৱ blockchain0x ক্লায়েন্টক কল কৰে, FunctionTool.from_defaultsৰ সৈতে আবৰি ৰাখে। LlamaIndex স্বাক্ষৰ আৰু ডকষ্ট্ৰিং পঢ়ে যাতে স্কিমা নিৰ্মাণ কৰিব পাৰে, সেয়ে ডকষ্ট্ৰিংটোক সঠিক ৰাখক।

PITFALL 2

এটা QueryEngineTool নিজে গেট কৰক - কোনো সহায়ক ইয়াক নকৰে

পেইড-RAG প্যাটাৰ্নটো বাস্তৱ আৰু ভাল, কিন্তু কোনো paid_query_engine_tool সহায়ক নাই। আপুনি ইয়াক নিৰ্মাণ কৰে: আপোনাৰ অনুসন্ধান সঁজুলিৰ ফাংশনত, কলাৰ পেমেন্ট কৰিছে নে নাই সেয়া পৰীক্ষা কৰক (আপোনাৰ নিজৰ ষ্ট'ৰ, তলৰ ৱেবহুকৰ দ্বাৰা আপডেট কৰা) আৰু সিহঁতে পেমেন্ট কৰিলে মাত্ৰ পুনৰ উদ্ধাৰ কৰক, নহলে এটা মূল্য উভতি দিয়ক। ই কিছু পংক্তি, আৰু আপুনি গেটিং নীতিটোৰ নিয়ন্ত্ৰণ ৰাখে।

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 tool argument as str. LlamaIndex passes tool args through pydantic, which will happily coerce a float and lose precision, so keep it a string end to end.

PITFALL 4

FunctionAgent.run asynchronous; SDK কল synchronous

LlamaIndex এজেণ্টসমূহ asynchronous-প্ৰথম - await agent.run(...)। আপোনাৰ টুলৰ ভিতৰত blockchain0x ক্লায়েন্ট কলটো synchronous, যি এটা একক তৎক্ষণাত পেমেন্টৰ বাবে ঠিক আছে কিন্তু চাপৰ অধীনত লুপটো বন্ধ কৰে। যদি আপুনি বহুতো একসাথে অনুৰোধ সেৱা কৰি থাকে, তেন্তে SDK কলটো asyncio.to_threadৰ সৈতে আবৰি ৰাখক যাতে ইভেন্ট লুপটো সঁচা থাকে।

PITFALL 5

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

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

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

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

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

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

মই কেনেকৈ RAG অনুৰোধৰ বাবে চাৰ্জ কৰিব পাৰো (পেইড QueryEngine পেটাৰ্ন)?

নিজেই নিৰ্মাণ কৰক - ইয়াৰ বাবে কোনো প্ৰেৰণ কৰা সহায়ক নাই, আৰু ই কেৱল কেইটামান লাইন। আপোনাৰ QueryEngineToolৰ ফাংচনক সজ্জিত কৰক যাতে প্ৰথমে চেক কৰে যে কলাৰ পেমেন্ট কৰিছে নে (আপোনাৰ নিজৰ ষ্টোৰত এটা পতাকা যি তলৰ ৱেবহুক payment.receivedত উল্টাই দিয়ে) আৰু ইয়াক পুনৰুদ্ধাৰ কৰে বা মূল্য চেলেঞ্জ প্ৰদান কৰে। সেয়া আপোনাৰ হাতত গেটিং নীতি ৰাখে: প্ৰতি প্ৰশ্ন, প্ৰতি অধিবেশন, মুক্ত স্তৰ তাৰপিছত পেইড, যি কিছু উপযুক্ত।

এই ৰেচিপি কি LlamaIndex Workflowsৰ সৈতে কাম কৰে নেকি?

হয়। পেমেন্ট যুক্তি হৈছে এটা সাধাৰণ ফাংশন, সেয়ে ইয়াক বিশেষ এজেণ্ট প্ৰিমিটিভৰ সৈতে সংযুক্ত কৰা নাই। ইয়াক ReActAgent, FunctionAgent, বা LlamaIndex Workflow ৰ এটা পদক্ষেপৰ পৰা কল কৰক। এক Workflow ত, এটা স্বাভাৱিক আকাৰ হৈছে send_usdc (অথবা আপোনাৰ গেটেড অনুসন্ধান) কল কৰা এটা পদক্ষেপৰ ভিতৰত আৰু ফলাফলটো এক ইভেন্ট হিচাপে নিৰ্গত কৰা যি পৰৱৰ্তী পদক্ষেপে গ্ৰহণ কৰে। আহৰণ কৰা পেমেন্টসমূহ তলত থকা payment.received ৱেবহুকৰ জৰিয়তে নিশ্চিত হয়।

আপোনাৰ RAG প্ৰতিক্ৰিয়াৰ বাবে মাচুল লোৱা।

বাস্তৱ ক্লায়েন্টটোক FunctionToolত মোড়ক কৰক, আপোনাৰ কুৱাৰীক একে ৰূপে গেট কৰক। আৰম্ভ কৰিবলৈ মুক্ত।