การรวมระบบการชำระเงิน LangChain.
เพิ่มการชำระเงิน USDC ให้กับเอเจนต์ LangChain ใดๆ แพ็คเกจ Python จริงให้เครื่องมือกระเป๋าเงิน - ส่ง, ชำระ, และอ่าน - ในไม่กี่บรรทัด
Blockchain0x มี Python package จริงชื่อ ที่มอบเครื่องมือวอลเล็ทแบบ native ให้กับเอเจนต์ LangChain: ส่ง USDC บน Base, ชำระ invoice พร้อมหลักฐานบนเชน, และอ่านวอลเล็ทกับธุรกรรม ติดตั้งมัน ตั้งค่า เรียก แล้วส่งเครื่องมือให้เอเจนต์ของคุณ บน TypeScript? ไม่มี npm adapter - ให้ wrap x402 client เป็นเครื่องมือ LangChain.js
ชั้นบาง ๆ หนึ่งชั้นเหนือ Blockchain0x HTTP API
ทุกเครื่องมือใน blockchain0x-langchain เป็นการห่อหุ้มที่บางเบาเหนือ SDK หลักของ blockchain0x ที่เป็นทางการ. ไม่มีการนำกลับมาใช้ใหม่ของ REST หรือ x402 logic, ไม่มีการดูแลกุญแจ: ตัวเชื่อมจะส่งต่อ API key ของคุณไปยัง backend และไม่ถือความลับของตัวเอง. create_blockchain0x_toolset(client) มอบ LangChain ห้าเครื่องมือ - ส่งการชำระเงิน, ชำระใบแจ้งหนี้, อ่านกระเป๋าเงิน, รายการกระเป๋าเงิน, อ่านธุรกรรม - แต่ละรายการมีการกำหนดประเภทและขอบเขตแล้ว.
คุณยังสามารถเรียก API ดิบหรือ SDK หลักโดยตรงหากคุณต้องการ ตัวแปลงเป็นเส้นทางที่มีน้อยที่สุดในการต่อต้าน; API คือสัญญา กำหนด blockchain0x-langchain ให้ตรงกับช่วง langchain-core ที่รองรับแทนที่จะไล่ตามเวอร์ชันล่าสุดของทั้งสอง
ติดตั้งหนึ่งครั้ง ตัวแปรสภาพแวดล้อมหนึ่งตัว พร้อม
แพ็คเกจต้องการ Python 3.9 หรือใหม่กว่า มันดึง SDK blockchain0x หลักและ langchain-core เป็นการพึ่งพา ไม่มีอะไรเพิ่มเติม.
pip install blockchain0x-langchainexport BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
BLOCKCHAIN0X_API_KEY คือคีย์ sk_test_ สำหรับ testnet หรือ sk_live_ สำหรับ mainnet จากแดชบอร์ด Blockchain0x ของคุณ นั่นคือตัวแปรเดียวที่ adapter ต้องใช้ โดยมันส่งคีย์ไปยัง backend และไม่ได้เก็บ secret ใดของตัวเอง สำหรับ webhook handler ที่แสดงด้านล่าง คุณต้องตั้งค่า BLOCKCHAIN0X_WEBHOOK_SECRET เพิ่มเติมด้วย ซึ่งแดชบอร์ดจะแสดงให้เห็นเพียงครั้งเดียวเมื่อคุณสร้างหรือหมุนเวียน webhook
ตัวแทน LangChain ที่ทำงานได้พร้อมการสนับสนุนการชำระเงิน
ด้านล่างคือเอเจนต์ LangChain ที่สมบูรณ์ใน Python create_blockchain0x_toolset คืนค่าเครื่องมือกระเป๋าเงิน create_react_agent เชื่อมต่อเข้ากับลูป ReAct และโมเดลเลือกเครื่องมือที่ถูกต้องจากคำสั่ง ตั้งค่า BLOCKCHAIN0X_API_KEY รันมัน และเอเจนต์สามารถย้ายและอ่าน USDC บน Base
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 webhook ของเอเจนต์ของคุณ (ตั้งค่าในแดชบอร์ด Blockchain0x) จะได้รับ POST เมื่อการชำระเงินตั้งอยู่ ตัวช่วยตรวจสอบ webhook อยู่ใน 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 โดยไม่ต้องใช้ try/catch และอ่าน result.eventType อ่าน body ดิบ ไม่ใช่สำเนาที่ถูกวิเคราะห์: การวิเคราะห์แล้วทำการเรียกคืนจะทำให้ลายเซ็นเสียหาย เหตุการณ์ที่ส่งมาคือ payment.received, payment.sent, wallet.deployed และ webhook.test; การเรียกเก็บเงินที่เข้ามาสำหรับตัวแทนของคุณคือ payment.received.
ไม่มีตัวแปลง LangChain npm นี่คือสูตรที่ตรงไปตรงมา
ตัวปรับ LangChain ที่จัดส่งเป็น Python เท่านั้น ไม่มีตัวปรับ LangChain บน npm สำหรับตัวแทน LangChain หรือ LangGraph ที่ใช้ TypeScript คุณห่อหุ้มไคลเอนต์ 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() }), }, );
ซอร์สโค้ดและตัวอย่าง testnet อยู่ที่ the Python SDK repo; ตารางรองรับของ SDK อยู่ที่ the docs. ตัวอย่าง smoke ของ Python ส่งการโอน USDC จริงจำนวน $0.01 บน Base Sepolia ผ่าน action send-payment เดียวกับที่ LangChain tool ห่อไว้
ห้าสิ่งที่ทำให้เจ็บในการรวมระบบครั้งแรก
สิ่งเหล่านี้มาจากกล่องจดหมายสนับสนุนของเรา ไม่มีรายการใดเป็นอุปสรรคในการทำข้อตกลง แต่การทราบเกี่ยวกับพวกเขาล่วงหน้าช่วยประหยัดเวลาในการคิดมากได้หนึ่งชั่วโมงต่อรายการ
จำนวนเงินเป็นหน่วยพื้นฐานของ 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 หลักเปิดเผยการตั้งถิ่นฐานเท่านั้น หากคุณคาดหวังว่าเอเจนต์จะสร้างลิงก์ที่ชำระเงินได้ทันที นั่นไม่ใช่รูปแบบ สร้างคำขอนอกวงจร จากนั้นให้เอเจนต์ตั้งค่ามัน
ตรวจสอบ webhook กับเนื้อหาดิบ
Webhooks POST ไปยัง URL ของคุณ และใครก็ตามที่เรียนรู้ URL นั้นสามารถ POST ขยะได้ รัน webhooks.verify จาก @blockchain0x/node บนไบต์คำขอ RAW ก่อนที่คุณจะเชื่อเหตุการณ์ แยก JSON ก่อนและ HMAC จะไม่ตรงกัน เพราะลายเซ็นจะครอบคลุมไบต์ที่มาถึงอย่างแม่นยำ มันคือ HMAC-SHA256 พร้อมหน้าต่างการเล่นซ้ำ 300 วินาที การข้ามมันเป็นความผิดพลาดในการผลิตที่พบบ่อยที่สุด
send_payment สามารถตอบ 503 ได้ในระยะเริ่มต้น
payments.create ซึ่ง blockchain0x_send_payment ห่อหุ้ม จะไม่ลองใหม่โดยค่าเริ่มต้นและสามารถส่งคืน 503 จนกว่าตัวแปลงเครือข่ายจะถูกเชื่อมต่อ อย่าปล่อยให้ LLM ทุบเครื่องมือในลูปการลองใหม่เมื่อเกิดข้อผิดพลาด: มันทำให้สูญเสียโทเค็นและทำให้บันทึกเจตนาของคุณสับสน พึ่งพาคีย์ idempotency ที่สร้างขึ้นในตัว แสดงความล้มเหลว แล้วไปต่อ
จับคู่เวอร์ชัน langchain-core
blockchain0x-langchain 0.1.x รองรับ langchain-core >=0.2,<0.4 หากคุณใช้ core ที่ใหม่กว่าที่ adapter รองรับ ให้ pin คู่เวอร์ชันที่ตรงกันแทนที่จะพยายามไล่ให้ใหม่ที่สุดทั้งสองฝั่ง ตารางรองรับอยู่ใน docs