Ana içeriğe atla
LANGCHAIN ENTEGRASYONU

LangChain ödeme entegrasyonu.

Herhangi bir LangChain ajanına USDC ödemeleri ekleyin. Gerçek Python paketi, cüzdan araçlarını - gönder, yerleşim yap ve oku - birkaç satırda sağlar.

KISA CEVAP

Blockchain0x, bir LangChain ajanına yerel cüzdan araçları sağlayan gerçek bir Python paketi, , sunar: Base üzerinde USDC gönderin, zincir üstü kanıtla bir faturayı kapatın ve cüzdanlar ile işlemleri okuyun. Kurun, ayarlayın, çağırın ve araçları ajanınıza verin. TypeScript'te mi? Bir npm adapter yok - x402 client'ı bir LangChain.js tool içine sarın.

NEDEN SARICI MEVCUT

Blockchain0x HTTP API'sinin üzerinde ince bir katman.

blockchain0x-langchain'deki her araç, resmi blockchain0x çekirdek SDK'sının ince bir sarmalayıcısıdır. Yeniden uygulanmış REST veya x402 mantığı yok, anahtar saklama yok: adaptör, API anahtarınızı arka uca iletir ve kendi sırrını tutmaz. create_blockchain0x_toolset(client) LangChain'e beş araç sunar - bir ödeme gönder, bir faturayı kapat, bir cüzdan oku, cüzdanları listele, bir işlemi oku - her biri zaten türlendirilmiş ve kapsamlandırılmıştır.

İsterseniz raw API'yi veya core SDK'yı doğrudan da çağırabilirsiniz. Adapter en kolay yoldur; contract ise API'dir. blockchain0x-langchain'i, her ikisinin en yenisini kovalamak yerine desteklediği langchain-core aralığına sabitleyin.

KURULUM

Bir kurulum. Bir ortam değişkeni. Hazır.

Paketin Python 3.9 veya daha yenisi gereklidir. Temel blockchain0x SDK'sını ve langchain-core'u bağımlılık olarak çeker; ekleyecek başka bir şey yoktur.

KUR
pip install blockchain0x-langchain
ORTAM DEĞİŞKENLERİ
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

BLOCKCHAIN0X_API_KEY, Blockchain0x dashboard'unuzdan alınan bir sk_test_ testnet veya sk_live_ mainnet anahtarıdır. Adapter'ın ihtiyaç duyduğu tek değişken budur; anahtarı backend'e iletir ve kendi içinde hiçbir sır tutmaz. Aşağıda gösterilen webhook handler için ayrıca BLOCKCHAIN0X_WEBHOOK_SECRET ayarlarsınız; bu değer, bir webhook oluşturduğunuzda veya rotate ettiğinizde dashboard tarafından bir kez gösterilir.

TAM AJAN ÖRNEĞİ

Ödeme desteği olan çalışır bir LangChain ajanı.

Aşağıda, Python'da tam bir LangChain ajanı bulunmaktadır. create_blockchain0x_toolset cüzdan araçlarını döndürür, create_react_agent bunları bir ReAct döngüsüne bağlar ve model, istemden doğru aracı seçer. BLOCKCHAIN0X_API_KEY'i ayarlayın, çalıştırın ve ajan Base'de USDC'yi taşıyabilir ve okuyabilir.

AJAN.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.

WEBHOOK İŞLEME

Kullanıcı ödendikten sonra ne olur.

Agent'ınızın webhook URL'si (Blockchain0x dashboard'da ayarlanır), bir ödeme settle olduğunda bir POST alır. Webhook verify helper Node SDK içindedir, bu yüzden agent'ınız Python olsa da bu handler TypeScript'tir. Aşağıda signature'ı kontrol eden ve ücretli işi çalıştıran bir Express handler'ı var. Aynı pattern'i herhangi bir HTTP framework'ünde kullanın.

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, sabit zamanda HMAC-SHA256 yapar ve ayrıştırılmış bir birleşim döndürür, bu nedenle result.ok üzerinde try/catch olmadan dallanırsınız ve result.eventType'ı okursunuz. Ham gövdeyi okuyun, ayrıştırılmış bir kopyayı değil: ayrıştırma ve ardından yeniden serileştirme imzayı bozar. Gönderilen olaylar payment.received, payment.sent, wallet.deployed ve webhook.test'tir; ajana gelen bir ücret payment.received'dır.

TYPESCRIPT? X402 İSTEMCİSİNİ SARIN

npm LangChain adaptörü yok. İşte dürüst tarif.

Gönderilen LangChain adaptörü yalnızca Python içindir. npm'de LangChain adaptörü yoktur. TypeScript LangChain veya LangGraph ajansı için, gerçek x402 istemcisini kendiniz LangChain.js aracına sararsınız. Bu birkaç satırdır ve özel bir adaptörün arka planda yapacağı şeydir.

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

Source ve testnet örnekleri the Python SDK repo içinde bulunur; SDK support matrix the docs içindedir. Python smoke örneği, Base Sepolia üzerinde gerçek bir $0.01 USDC transferini LangChain tool'unun sarmaladığı aynı send-payment action üzerinden gönderir.

YAYGIN TUZAKLAR

İlk entegrasyonda sorun çıkaran beş şey.

Bunlar destek gelen kutumuzdan gelmektedir. Hiçbiri anlaşma bozucu değildir, ancak önceden bilmek, her birinde bir saat kafa karışıklığı tasarrufu sağlar.

PITFALL 1

Tutarlar, dize olarak USDC temel birimleridir

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

Fatura aracı yerleşir, oluşturmaz.

blockchain0x_settle_invoice, MEVCUT bir payment request'i on-chain proof ile settle eder. Yeni bir invoice veya hosted checkout link üreten bir tool yoktur: payment request'ler dashboard'da oluşturulur ve core SDK yalnızca settlement sunar. Agent'ın anında ödenebilir bir link üretmesini bekliyorsanız, yapı bu değildir. Request'i dışarıda oluşturun, sonra agent'ın onu settle etmesine izin verin.

PITFALL 3

Webhook'ları ham gövdeye karşı doğrula

Webhook'lar URL'nize POST yapar ve bu URL'yi öğrenen herkes çöp POST edebilir. Bir olaya güvenmeden önce RAW istek baytları üzerinde @blockchain0x/node'dan webhooks.verify çalıştırın. Önce JSON'u ayrıştırın ve HMAC eşleşmeyecektir, çünkü imza gelen tam baytları kapsar. Bu, 300 saniyelik bir tekrar penceresi ile HMAC-SHA256'dır. Atlamak, en yaygın üretim hatasıdır.

PITFALL 4

send_payment, erken bir 503 dönebilir.

payments.create, blockchain0x_send_payment'in sarmaladığı, varsayılan olarak yeniden deneme yapmaz ve zincir adaptörü ağınıza bağlanana kadar 503 dönebilir. LLM'nin bir hatada aracı bir yeniden deneme döngüsünde zorlamasına izin vermeyin: bu, tokenleri yakar ve niyet günlüğünüzü bulanıklaştırır. Yerleşik idempotency anahtarına güvenin, hatayı yüzeye çıkarın, devam edin.

PITFALL 5

langchain-core sürümünü eşleştirin

blockchain0x-langchain 0.1.x, langchain-core >=0.2,<0.4 hedefler. Adapter'ın desteklediğinden daha yeni bir core kullanıyorsanız, ikisinin en yenisini kovalamak yerine uyumlu olan çifti sabitleyin. Destek matrisi docs'ta yer alır.

SIKÇA SORULAN

Üç LangChain'e özgü soru.

Ajanım sadece göndermekle kalmayıp USDC alabilir mi?

Evet, iki yol var. Pasif olarak: agent'ınızın bir wallet address'i ve public page'i vardır, bu yüzden herkes ona ödeme yapabilir ve zincir settle olduğunda payment.received webhook'u tetiklenir. Aktif olarak: blockchain0x_settle_invoice, dashboard'da oluşturduğunuz bir payment request'i settle eder ve on-chain proof'u kaydeder. Agent içinde yeni bir invoice veya hosted link oluşturan bir tool YOKTUR. Request'i dashboard'da oluşturun, agent'ın onu settle etmesine izin verin. Pek çok kurulum ikisini birden kullanır: bahşişler için public page, spesifik invoice'lar için settle tool.

Bu, LangGraph ile çalışıyor mu?

Evet. create_blockchain0x_toolset standart LangChain tool'ları döndürür, bu yüzden create_react_agent (yukarıda gösterildiği gibi), AgentExecutor veya mesajları işleyen herhangi bir LangGraph node'una kolayca girer ve checkpointing ile human-in-the-loop ile birlikte çalışır. Python tarafı budur. LangGraph agent'ınız TypeScript ise bir npm adapter yoktur: createX402Client'i (veya @blockchain0x/node client'ını) yukarıdaki TypeScript recipe'sindeki gibi bir LangChain.js tool'una sarın.

Hangi zincirler ve token'lar destekleniyor?

Base ana ağı (sk_live_ anahtarları) ve Base Sepolia test ağı (sk_test_ anahtarları), 6 ondalık ile USDC'de yerleşiyor. Bugün tüm canlı yüzey bu: bir zincir ailesi, bir token. Diğer zincirler yol haritasında, henüz açılmadı, bu yüzden etrafında tasarım yapmayın. Anahtar ön eki, sizin için ağı seçer ve sk_test_ anahtarı ana ağ fonlarını taşıyamaz, bu da inşa ederken istediğiniz koruma sağlar.

Ödemeleri LangChain ajanınıza entegre edin.

Pip yüklemeden ilk ücretli isteğinize dakikalar içinde. Başlamak ücretsiz.