ข้ามไปยังเนื้อหาหลัก
การรวมระบบ LANGCHAIN

การรวมระบบการชำระเงิน LangChain.

เพิ่มการชำระเงิน USDC ให้กับเอเจนต์ LangChain ใดๆ แพ็คเกจ Python จริงให้เครื่องมือกระเป๋าเงิน - ส่ง, ชำระ, และอ่าน - ในไม่กี่บรรทัด

คำตอบสั้น

Blockchain0x มี Python package จริงชื่อ ที่มอบเครื่องมือวอลเล็ทแบบ native ให้กับเอเจนต์ LangChain: ส่ง USDC บน Base, ชำระ invoice พร้อมหลักฐานบนเชน, และอ่านวอลเล็ทกับธุรกรรม ติดตั้งมัน ตั้งค่า เรียก แล้วส่งเครื่องมือให้เอเจนต์ของคุณ บน TypeScript? ไม่มี npm adapter - ให้ wrap x402 client เป็นเครื่องมือ LangChain.js

ทำไมถึงมี Wrapper

ชั้นบาง ๆ หนึ่งชั้นเหนือ 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-langchain
ตัวแปรสภาพแวดล้อม
export 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

AGENT.PY
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 ใดๆ

WEBHOOK-HANDLER.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 อ่าน body ดิบ ไม่ใช่สำเนาที่ถูกวิเคราะห์: การวิเคราะห์แล้วทำการเรียกคืนจะทำให้ลายเซ็นเสียหาย เหตุการณ์ที่ส่งมาคือ payment.received, payment.sent, wallet.deployed และ webhook.test; การเรียกเก็บเงินที่เข้ามาสำหรับตัวแทนของคุณคือ payment.received.

TYPESCRIPT? ห่อหุ้มลูกค้า X402

ไม่มีตัวแปลง LangChain npm นี่คือสูตรที่ตรงไปตรงมา

ตัวปรับ LangChain ที่จัดส่งเป็น Python เท่านั้น ไม่มีตัวปรับ LangChain บน npm สำหรับตัวแทน LangChain หรือ LangGraph ที่ใช้ TypeScript คุณห่อหุ้มไคลเอนต์ x402 จริงในเครื่องมือ LangChain.js ด้วยตัวคุณเอง มันเป็นไม่กี่บรรทัด และมันคือสิ่งที่ตัวปรับเฉพาะจะทำภายใต้ฝาก.

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() }),
  },
);

ซอร์สโค้ดและตัวอย่าง testnet อยู่ที่ the Python SDK repo; ตารางรองรับของ SDK อยู่ที่ the docs. ตัวอย่าง smoke ของ Python ส่งการโอน USDC จริงจำนวน $0.01 บน Base Sepolia ผ่าน action send-payment เดียวกับที่ LangChain tool ห่อไว้

ข้อผิดพลาดทั่วไป

ห้าสิ่งที่ทำให้เจ็บในการรวมระบบครั้งแรก

สิ่งเหล่านี้มาจากกล่องจดหมายสนับสนุนของเรา ไม่มีรายการใดเป็นอุปสรรคในการทำข้อตกลง แต่การทราบเกี่ยวกับพวกเขาล่วงหน้าช่วยประหยัดเวลาในการคิดมากได้หนึ่งชั่วโมงต่อรายการ

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

ตรวจสอบ webhook กับเนื้อหาดิบ

Webhooks POST ไปยัง URL ของคุณ และใครก็ตามที่เรียนรู้ URL นั้นสามารถ POST ขยะได้ รัน webhooks.verify จาก @blockchain0x/node บนไบต์คำขอ RAW ก่อนที่คุณจะเชื่อเหตุการณ์ แยก 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 หากคุณใช้ core ที่ใหม่กว่าที่ adapter รองรับ ให้ pin คู่เวอร์ชันที่ตรงกันแทนที่จะพยายามไล่ให้ใหม่ที่สุดทั้งสองฝั่ง ตารางรองรับอยู่ใน docs

คำถามที่พบบ่อย

สามคำถามเฉพาะ LangChain.

เอเจนต์ของฉันสามารถรับ USDC ได้หรือไม่ ไม่ใช่แค่ส่ง?

ใช่ สองวิธี แบบพาสซีฟ: เอเจนต์ของคุณมีที่อยู่กระเป๋าเงินและหน้าเว็บสาธารณะ ดังนั้นใครก็สามารถชำระเงินได้และ webhook payment.received จะทำงานเมื่อเครือข่ายตั้งอยู่ แบบแอคทีฟ: blockchain0x_settle_invoice จะตั้งค่าคำขอการชำระเงินที่คุณสร้างในแดชบอร์ดและบันทึกหลักฐานบนเครือข่าย สิ่งที่ไม่มีคือเครื่องมือที่สร้างใบแจ้งหนี้ใหม่หรือลิงก์ที่โฮสต์จากภายในตัวแทน สร้างคำขอในแดชบอร์ดให้เอเจนต์ตั้งค่า มีการตั้งค่ามากมายที่ใช้ทั้งสองอย่าง: หน้าเว็บสาธารณะสำหรับทิป เครื่องมือชำระเงินสำหรับใบแจ้งหนี้เฉพาะ

สิ่งนี้ทำงานกับ LangGraph หรือไม่?

ใช่ create_blockchain0x_toolset ส่งคืนเครื่องมือ LangChain มาตรฐาน ดังนั้นพวกเขาจึงสามารถใส่ลงใน create_react_agent (ที่แสดงข้างต้น), AgentExecutor หรือโหนด LangGraph ใดๆ ที่จัดการข้อความ และพวกเขาจะประกอบด้วยการตรวจสอบจุดและมนุษย์ในลูป นี่คือเรื่องราวของ Python หากเอเจนต์ LangGraph ของคุณเป็น TypeScript จะไม่มีอะแดปเตอร์ npm: ห่อ createX402Client (หรือไคลเอนต์ @blockchain0x/node) ในเครื่องมือ LangChain.js เช่นสูตร TypeScript ข้างต้น

เครือข่ายและโทเค็นใดบ้างที่ได้รับการสนับสนุน?

Base mainnet (sk_live_ keys) และ Base Sepolia testnet (sk_test_ keys), ชำระใน USDC ด้วย 6 ทศนิยม นั่นคือพื้นผิวสดทั้งหมดในวันนี้: ครอบครัวของเครือข่ายหนึ่ง, โทเค็นหนึ่ง อื่น ๆ อยู่ในแผนที่ถนน ยังไม่ได้เปิดใช้งาน ดังนั้นอย่าออกแบบรอบ ๆ พวกเขาในขณะนี้ คีย์พรีฟิกเลือกเครือข่ายให้คุณ และคีย์ sk_test_ ไม่สามารถย้ายเงินใน mainnet ได้ ซึ่งเป็นการป้องกันที่คุณต้องการในขณะที่สร้าง

เชื่อมต่อการชำระเงินเข้ากับตัวแทน LangChain ของคุณ

จากการติดตั้ง pip ถึงการขอครั้งแรกที่ต้องชำระเงินในไม่กี่นาที. เริ่มต้นฟรี.