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

LangChain পেমেন্ট ইন্টিগ্রেশন।

কোনও LangChain এজেন্টে USDC পেমেন্ট যুক্ত করুন। আসল Python প্যাকেজটি কয়েকটি লাইনে ওয়ালেট টুলস - পাঠান, নিষ্পত্তি করুন এবং পড়ুন - দেয়।

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

Blockchain0x একটি বাস্তব Python package, , ship করে, যা একটি LangChain agent-কে native wallet tool দেয়: Base-এ USDC পাঠানো, on-chain proof সহ invoice settle করা, এবং wallet ও transaction পড়া। এটি install করুন, সেট করুন, কল করুন, এবং tool-গুলো আপনার agent-কে দিন। TypeScript-এ? কোনো npm adapter নেই - x402 client-কে একটি LangChain.js tool-এ wrap করুন।

কেন WRAPPER বিদ্যমান

Blockchain0x HTTP API এর উপর একটি পাতলা স্তর।

blockchain0x-langchain এর প্রতিটি টুল হল অফিসিয়াল blockchain0x কোর SDK এর উপর একটি পাতলা র‍্যাপার। পুনরায় বাস্তবায়িত REST বা x402 লজিক নেই, কোনও কী কাস্টডি নেই: অ্যাডাপ্টারটি আপনার API কী ব্যাকএন্ডে ফরওয়ার্ড করে এবং এর নিজস্ব কোনও গোপনীয়তা ধারণ করে না। create_blockchain0x_toolset(client) LangChain কে পাঁচটি টুল দেয় - একটি পেমেন্ট পাঠান, একটি ইনভয়েস নিষ্পত্তি করুন, একটি ওয়ালেট পড়ুন, ওয়ালেটের তালিকা তৈরি করুন, একটি লেনদেন পড়ুন - প্রতিটি ইতিমধ্যে টাইপ এবং স্কোপ করা হয়েছে।

আপনি এখনও কাঁচা API বা মূল SDK সরাসরি কল করতে পারেন যদি আপনি চান। অ্যাডাপ্টারটি সর্বনিম্ন প্রতিরোধের পথ; API হল চুক্তি। blockchain0x-langchain-কে langchain-core পরিসরের সাথে পিন করুন যা এটি সমর্থন করে বরং উভয়ের সর্বশেষটি অনুসরণ করুন।

ইনস্টলেশন

একটি ইনস্টল। একটি পরিবেশের পরিবর্তনশীল। প্রস্তুত।

প্যাকেজটির Python 3.9 বা তার নতুন সংস্করণ প্রয়োজন। এটি মূল blockchain0x SDK এবং langchain-core-কে নির্ভরতা হিসাবে টেনে আনে; যোগ করার জন্য আর কিছু নেই।

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

BLOCKCHAIN0X_API_KEY আপনার Blockchain0x ড্যাশবোর্ড থেকে একটি sk_test_ testnet বা sk_live_ mainnet কী। এটি একমাত্র পরিবর্তনশীল যা অ্যাডাপ্টারের প্রয়োজন; এটি কীটি ব্যাকএন্ডে ফরওয়ার্ড করে এবং নিজস্ব কোন গোপনীয়তা রাখে না। নিচে প্রদর্শিত ওয়েবহুক হ্যান্ডলারের জন্য আপনি BLOCKCHAIN0X_WEBHOOK_SECRET সেট করেন, যা আপনি একটি ওয়েবহুক তৈরি বা রোটেট করার সময় একবার ড্যাশবোর্ড ফেরত দেয়।

সম্পূর্ণ এজেন্ট উদাহরণ

একটি কার্যকর LangChain এজেন্ট যা পেমেন্ট সমর্থন করে।

নিচে একটি সম্পূর্ণ LangChain এজেন্ট রয়েছে Python-এ। create_blockchain0x_toolset ওয়ালেট টুলস ফেরত দেয়, create_react_agent সেগুলিকে একটি ReAct লুপে সংযুক্ত করে, এবং মডেলটি প্রম্পট থেকে সঠিক টুলটি নির্বাচন করে। BLOCKCHAIN0X_API_KEY সেট করুন, এটি চালান, এবং এজেন্টটি Base-এ USDC স্থানান্তর এবং পড়তে পারে।

এজেন্ট.পি
from blockchain0x import Client
from blockchain0x_langchain import create_blockchain0x_toolset
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent

client = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment
tools = create_blockchain0x_toolset(client)

llm = ChatOpenAI(model="gpt-4o")
agent = create_react_agent(llm, tools)

result = agent.invoke({
    "messages": [{
        "role": "user",
        "content": "Pay 0.01 USDC from my agent to 0xRecipient for the dataset.",
    }],
})

Run it with the prompt above and the model picks the send-payment tool, the SDK submits the transfer on Base, and you get a transaction hash back. amount_wei is USDC base units (6 decimals), so 0.01 USDC is the string "10000". A sk_test_ key keeps you on Base Sepolia until you switch to sk_live_. Heads up: payments.create can answer 503 until the chain adapter is wired for your network.

ওয়েবহুক হ্যান্ডলিং

ব্যবহারকারী অর্থ প্রদান করার পরে কী ঘটে।

আপনার এজেন্টের ওয়েবহুক URL (Blockchain0x ড্যাশবোর্ডে সেট করা) একটি POST গ্রহণ করে যখন একটি পেমেন্ট সেটেল হয়। ওয়েবহুক যাচাইকরণ সহায়ক নোড SDK-তে রয়েছে, তাই এই হ্যান্ডলারটি TypeScript যদিও আপনার এজেন্ট পাইথন। নীচে একটি এক্সপ্রেস হ্যান্ডলার রয়েছে যা স্বাক্ষরটি পরীক্ষা করে এবং পেইড কাজ চালায়। যেকোন HTTP ফ্রেমওয়ার্কে একই প্যাটার্ন ব্যবহার করুন।

ওয়েবহুক-হ্যান্ডলার.TS
import express from "express";
import { webhooks } from "@blockchain0x/node";

const app = express();
// Capture the RAW body. The HMAC is over the exact bytes on the wire.
app.use(express.raw({ type: "application/json" }));

app.post("/webhooks/payment", (req, res) => {
  const result = webhooks.verify({
    headers: req.headers,
    rawBody: req.body, // Buffer, raw bytes
    secret: process.env.BLOCKCHAIN0X_WEBHOOK_SECRET!,
  });
  if (!result.ok) return res.status(400).json({ code: result.code });

  if (result.eventType === "payment.received") {
    // USDC landed in your agent wallet - do the paid work
  }
  res.status(200).send("ok");
});

webhooks.verify HMAC-SHA256 নিরবচ্ছিন্ন সময়ে করে এবং একটি বৈচিত্র্যময় ইউনিয়ন ফেরত দেয়, তাই আপনি result.ok এর উপর শাখা করেন কোন try/catch ছাড়াই এবং result.eventType পড়েন। কাঁচা শরীরটি পড়ুন, একটি বিশ্লেষিত কপি নয়: বিশ্লেষণ এবং পুনরায়-সিরিয়ালাইজিং স্বাক্ষর ভেঙে দেয়। প্রেরিত ইভেন্টগুলি হল payment.received, payment.sent, wallet.deployed, এবং webhook.test; আপনার এজেন্টের জন্য একটি ইনবাউন্ড চার্জ হল payment.received।

TYPESCRIPT? X402 ক্লায়েন্টকে মোড়ান

কোনও npm LangChain অ্যাডাপ্টার নেই। এখানে সৎ রেসিপি।

চালানো LangChain অ্যাডাপ্টারটি কেবল পাইথনের জন্য। npm-এ কোনো LangChain অ্যাডাপ্টার নেই। একটি TypeScript LangChain বা LangGraph এজেন্টের জন্য, আপনি নিজে একটি LangChain.js টুলে প্রকৃত x402 ক্লায়েন্টকে মোড়ান। এটি কয়েকটি লাইন, এবং এটি একটি নিবেদিত অ্যাডাপ্টার যা পিছনে করবে ঠিক তাই।

PAY-TOOL.TS
import { createClient } from "@blockchain0x/node";
import { createX402Client } from "@blockchain0x/x402/client";
import { tool } from "@langchain/core/tools";
import { z } from "zod";

const sdk = createClient({ apiKey: process.env.BLOCKCHAIN0X_API_KEY! });
const fetchWithPay = createX402Client({ sdk });

// There is no npm LangChain adapter. Wrap the x402 client in a LangChain.js tool.
export const payAndFetch = tool(
  async ({ url }) => (await fetchWithPay(url)).text(),
  {
    name: "pay_and_fetch",
    description: "Fetch a URL, answering any x402 payment challenge automatically",
    schema: z.object({ url: z.string().url() }),
  },
);

সোর্স এবং টেস্টনেট উদাহরণগুলি Python SDK রিপো এ বিদ্যমান; SDK সমর্থন ম্যাট্রিক্স ডকস এ রয়েছে। Python স্মোক উদাহরণটি Base Sepolia তে $0.01 USDC স্থানান্তর করে একই send-payment ক্রিয়া মাধ্যমে যা LangChain টুল মোড়ানো।

সাধারণ ফাঁদ

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

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

PITFALL 1

পরিমাণগুলি USDC বেস ইউনিট, স্ট্রিং হিসাবে

The payment tools take amount_wei: 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". Always pass a string; large integers lose precision as JSON numbers. Send "5.00" and you will either get a validation error or move a millionth of what you meant.

PITFALL 2

ইনভয়েস টুলটি নিষ্পত্তি করে, এটি তৈরি করে না

blockchain0x_settle_invoice একটি বিদ্যমান পেমেন্ট অনুরোধ সেটেল করে যা অন-চেইন প্রমাণ সহ। কোন টুল নেই যা একটি নতুন ইনভয়েস বা একটি হোস্টেড চেকআউট লিঙ্ক তৈরি করে: পেমেন্টের অনুরোধগুলি ড্যাশবোর্ডে তৈরি করা হয়, এবং মূল SDK শুধুমাত্র সেটেলমেন্ট প্রকাশ করে। যদি আপনি আশা করেন যে এজেন্টটি ফ্লাইয়ে একটি পেমেন্টযোগ্য লিঙ্ক তৈরি করবে, তবে এটি সেই আকার নয়। ব্যান্ডের বাইরে অনুরোধটি তৈরি করুন, তারপর এজেন্টকে সেটেল করতে দিন।

PITFALL 3

কাঁচা শরীরের বিরুদ্ধে ওয়েবহুক যাচাই করুন

ওয়েবহুকগুলি আপনার URL এ POST করে, এবং যে কেউ সেই URL জানলে তারা জাঙ্ক POST করতে পারে। আপনি একটি ইভেন্টে বিশ্বাস করার আগে RAW অনুরোধ বাইটগুলির উপরে @blockchain0x/node থেকে webhooks.verify চালান। প্রথমে JSON পার্স করুন এবং HMAC মেলে না, কারণ স্বাক্ষরটি যে সঠিক বাইটগুলি এসেছে তা কভার করে। এটি HMAC-SHA256 একটি 300-সেকেন্ড পুনরায় প্লে উইন্ডো সহ। এটি বাদ দেওয়া সবচেয়ে সাধারণ উত্পাদন মিস।

PITFALL 4

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

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

PITFALL 5

langchain-core সংস্করণটি মেলান।

blockchain0x-langchain 0.1.x langchain-core >=0.2,<0.4 লক্ষ্য করে। যদি আপনি একটি নতুন কোরে থাকেন যা অ্যাডাপ্টার সমর্থন করে, তবে উভয়ের মধ্যে সর্বশেষটি অনুসরণ করার পরিবর্তে মেলানো জোড়টি পিন করুন। সমর্থন ম্যাট্রিক্স ডকসে রয়েছে।

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

তিনটি LangChain-নির্দিষ্ট প্রশ্ন।

আমার এজেন্ট কি শুধুমাত্র পাঠানোর পরিবর্তে USDC গ্রহণ করতে পারে?

হ্যাঁ, দুটি উপায়। নিষ্ক্রিয়ভাবে: আপনার এজেন্টের একটি ওয়ালেট ঠিকানা এবং একটি পাবলিক পৃষ্ঠা রয়েছে, তাই যে কেউ এটি পরিশোধ করতে পারে এবং একটি payment.received ওয়েবহুক একবার চেইন সেটেল হলে চালু হয়। সক্রিয়ভাবে: blockchain0x_settle_invoice একটি পেমেন্ট অনুরোধ সেটেল করে যা আপনি ড্যাশবোর্ডে তৈরি করেছেন এবং অন-চেইন প্রমাণ রেকর্ড করে। যা নেই তা হল একটি টুল যা এজেন্টের ভিতরে একটি নতুন ইনভয়েস বা হোস্টেড লিঙ্ক তৈরি করে। ড্যাশবোর্ডে অনুরোধটি তৈরি করুন, এজেন্টকে সেটেল করতে দিন। প্রচুর সেটআপ উভয়ই ব্যবহার করে: টিপগুলির জন্য পাবলিক পৃষ্ঠা, নির্দিষ্ট ইনভয়েসের জন্য সেটেল টুল।

এটি কি LangGraph এর সাথে কাজ করে?

হ্যাঁ। create_blockchain0x_toolset স্ট্যান্ডার্ড LangChain টুলগুলি ফেরত দেয়, তাই সেগুলি create_react_agent (উপরের মতো), AgentExecutor, বা যেকোন LangGraph নোডে পড়ে, এবং সেগুলি চেকপয়েন্টিং এবং মানব-ইন-দ্য-লুপের সাথে একত্রিত হয়। এটি পাইথনের গল্প। যদি আপনার LangGraph এজেন্ট TypeScript হয়, তবে কোন npm অ্যাডাপ্টার নেই: createX402Client (অথবা @blockchain0x/node ক্লায়েন্ট) একটি LangChain.js টুলে মোড়ান, যেমন উপরের TypeScript রেসিপি।

কোন কোন চেইন এবং টোকেন সমর্থিত?

Base mainnet (sk_live_ কী) এবং Base Sepolia টেস্টনেট (sk_test_ কী), 6 দশমিক সহ USDC-তে নিষ্পত্তি করা। এটি আজকের পুরো লাইভ সারফেস: একটি চেইন পরিবার, একটি টোকেন। অন্যান্য চেইনগুলি রোডম্যাপে রয়েছে, চালু হয়নি, তাই এখনও তাদের চারপাশে ডিজাইন করবেন না। কী প্রিফিক্সটি আপনার জন্য নেটওয়ার্কটি নির্বাচন করে, এবং একটি sk_test_ কী প্রধান নেটের তহবিল স্থানান্তর করতে পারে না, যা আপনি নির্মাণের সময় চান।

আপনার LangChain এজেন্টে পেমেন্ট সংযুক্ত করুন।

পিপ ইনস্টল থেকে আপনার প্রথম পেইড রিকোয়েস্টে মিনিটের মধ্যে। শুরু করতে ফ্রি।