LangChain भुगतान एकीकरण।
किसी भी LangChain एजेंट में USDC भुगतान जोड़ें। वास्तविक Python पैकेज इसे वॉलेट टूल्स - भेजें, निपटान करें, और पढ़ें - कुछ पंक्तियों में देता है।
Blockchain0x एक वास्तविक Python package, , ship करता है जो LangChain agent को native wallet tools देता है: Base पर USDC भेजें, on-chain proof के साथ invoice settle करें, और wallets तथा transactions पढ़ें। इसे install करें, set करें, call करें, और tools अपने agent को दें। TypeScript पर? कोई npm adapter नहीं है - x402 client को LangChain.js tool में wrap करें।
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-langchainexport BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
BLOCKCHAIN0X_API_KEY आपके Blockchain0x dashboard से एक sk_test_ testnet या sk_live_ mainnet key है. adapter को केवल यही variable चाहिए; यह key को backend तक forward करता है और अपना कोई secret नहीं रखता. नीचे दिखाए गए webhook handler के लिए आपको BLOCKCHAIN0X_WEBHOOK_SECRET भी सेट करना होगा, जिसे dashboard webhook create या rotate करने पर एक बार देता है.
एक कार्यशील LangChain एजेंट जिसमें भुगतान समर्थन है।
नीचे एक पूरा LangChain एजेंट है Python में। create_blockchain0x_toolset वॉलेट टूल्स लौटाता है, create_react_agent उन्हें एक ReAct लूप में जोड़ता है, और मॉडल प्रॉम्प्ट से सही टूल चुनता है। BLOCKCHAIN0X_API_KEY सेट करें, इसे चलाएँ, और एजेंट बेस पर 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 प्राप्त करता है जब एक भुगतान निपटता है। वेबहुक सत्यापन सहायक Node SDK में है, इसलिए यह हैंडलर TypeScript है भले ही आपका एजेंट Python हो। नीचे एक Express हैंडलर है जो हस्ताक्षर की जांच करता है और भुगतान किए गए कार्य को चलाता है। किसी भी HTTP ढांचे में उसी पैटर्न का उपयोग करें।
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 पर शाखा करते हैं बिना किसी प्रयास/पकड़ के और result.eventType पढ़ते हैं। कच्चे शरीर को पढ़ें, न कि एक पार्स की गई प्रति: पार्सिंग फिर से-सीरियलाइजिंग सिग्नेचर को तोड़ता है। भेजे गए घटनाएँ हैं payment.received, payment.sent, wallet.deployed, और webhook.test; आपके एजेंट पर एक इनबाउंड चार्ज payment.received है।
कोई npm LangChain एडाप्टर नहीं है। यहाँ ईमानदार नुस्खा है।
शिप किए गए LangChain एडेप्टर केवल पायथन के लिए है। npm पर कोई LangChain एडेप्टर नहीं है। एक टाइपस्क्रिप्ट LangChain या LangGraph एजेंट के लिए, आप वास्तविक x402 क्लाइंट को स्वयं LangChain.js उपकरण में लपेटते हैं। यह कुछ पंक्तियाँ हैं, और यह ठीक वही है जो एक समर्पित एडेप्टर अंदर करता।
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() }), }, );
source और testnet examples the Python SDK repo में हैं; SDK support matrix the docs में है। Python smoke example Base Sepolia पर एक वास्तविक $0.01 USDC transfer भेजता है, उसी send-payment action के माध्यम से जिसे LangChain tool wrap करता है।
पहली एकीकरण पर पांच चीजें जो नुकसान पहुँचाती हैं।
ये हमारे समर्थन इनबॉक्स से आते हैं। इनमें से कोई भी डील-ब्रेकर्स नहीं हैं, लेकिन उनके बारे में पहले से जानने से प्रत्येक में एक घंटे की सिर खुजाने की बचत होती है।
राशियाँ 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.
चालान उपकरण निपटारा करता है, यह नहीं बनाता है
blockchain0x_settle_invoice एक मौजूदा भुगतान अनुरोध को ऑन-चेन प्रमाण के साथ निपटाता है। ऐसा कोई उपकरण नहीं है जो एक नया चालान या एक होस्टेड चेकआउट लिंक बनाता है: भुगतान अनुरोध डैशबोर्ड में बनाए जाते हैं, और कोर SDK केवल निपटान को उजागर करता है। यदि आप उम्मीद कर रहे थे कि एजेंट तात्कालिक रूप से एक भुगतान योग्य लिंक उत्पन्न करेगा, तो यह आकार नहीं है। अनुरोध को बैंड से बाहर बनाएं, फिर एजेंट को इसे निपटाने दें।
कच्चे शरीर के खिलाफ वेबहुक को सत्यापित करें
वेबहुक आपके URL पर POST करते हैं, और जो कोई भी उस URL को जानता है वह जंक POST कर सकता है। एक घटना पर भरोसा करने से पहले RAW अनुरोध बाइट्स पर @blockchain0x/node से webhooks.verify चलाएं। पहले JSON को पार्स करें और HMAC मेल नहीं खाएगा, क्योंकि हस्ताक्षर उन सटीक बाइट्स को कवर करता है जो आए। यह HMAC-SHA256 है जिसमें 300-सेकंड का पुनः-खेल विंडो है। इसे छोड़ना सबसे सामान्य उत्पादन चूक है।
send_payment प्रारंभ में 503 का उत्तर दे सकता है।
payments.create, जिसे blockchain0x_send_payment लपेटता है, डिफ़ॉल्ट रूप से पुनः प्रयास नहीं करता है और आपके नेटवर्क के लिए चेन एडेप्टर के कनेक्ट होने तक 503 वापस कर सकता है। LLM को त्रुटि पर पुनः प्रयास लूप में उपकरण को नष्ट करने न दें: यह टोकन जलाता है और आपके इरादे के लॉग को धुंधला करता है। अंतर्निहित idempotency कुंजी पर भरोसा करें, विफलता को उजागर करें, आगे बढ़ें।
langchain-core संस्करण से मेल खाएं
blockchain0x-langchain 0.1.x का target langchain-core >=0.2,<0.4 है। यदि आप adapter द्वारा समर्थित संस्करण से नए core पर हैं, तो दोनों के latest versions के पीछे भागने के बजाय matching pair को pin करें। support matrix docs में है।