Skip to main content

LangChain integration for X402 payment protocol

Project description

openlibx402-langchain

LangChain integration for the X402 payment protocol - enables AI agents to autonomously pay for API access.

Overview

The openlibx402-langchain package provides LangChain tools and utilities that enable AI agents to autonomously make payments to access paid APIs using the X402 protocol. Agents can detect payment requirements, process payments, and retry requests automatically.

Features

  • Autonomous payment capability for LangChain agents
  • X402 payment tool for LangChain agent workflows
  • Helper functions for quick agent creation
  • Configurable payment limits for safety
  • Seamless integration with existing LangChain applications

Installation

pip install openlibx402-langchain

Quick Start

Simple Agent with Autonomous Payment

The easiest way to create an X402-enabled agent:

from openlibx402_langchain import create_x402_agent
from langchain_openai import ChatOpenAI
from solders.keypair import Keypair
import json

# Load wallet
with open("wallet.json") as f:
    wallet_data = json.load(f)
    keypair = Keypair.from_bytes(bytes(wallet_data))

# Create agent with X402 support in one function call
agent = create_x402_agent(
    wallet_keypair=keypair,
    llm=ChatOpenAI(temperature=0),
    max_payment="5.0",  # Safety limit
    debug=True,
)

# Agent can now autonomously pay for API access
inputs = {
    "messages": [
        {
            "role": "user",
            "content": "Get the premium data from http://localhost:8000/premium-data"
        }
    ]
}

for chunk in agent.stream(inputs, stream_mode="updates"):
    if "agent" in chunk:
        result = chunk["agent"]

if result and "messages" in result:
    final_message = result["messages"][-1]
    print(f"Agent response: {final_message.content}")

Usage Patterns

Pattern 1: Quick Agent Creation (Recommended)

Best for most use cases - creates a fully configured agent:

from openlibx402_langchain import create_x402_agent
from langchain_openai import ChatOpenAI
from solders.keypair import Keypair

keypair = Keypair()  # Your wallet

agent = create_x402_agent(
    wallet_keypair=keypair,
    llm=ChatOpenAI(temperature=0),
    max_payment="10.0",
    debug=True,
)

# Use the agent
result = agent.invoke({
    "messages": [
        {"role": "user", "content": "Access paid APIs"}
    ]
})

Pattern 2: Custom Agent with Payment Tool

For custom agent configurations:

from openlibx402_langchain import X402PaymentTool
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI
from solders.keypair import Keypair

keypair = Keypair()

# Create X402 payment tool
payment_tool = X402PaymentTool(
    wallet_keypair=keypair,
    max_payment="5.0",
    name="pay_for_api",
    description="Make payment to access premium API data"
)

# Create custom agent with your tools
agent = create_agent(
    model=ChatOpenAI(temperature=0),
    tools=[payment_tool, *other_tools],
    system_prompt="Your custom system prompt",
)

Pattern 3: Multi-API Access

Agent accessing multiple paid APIs:

from openlibx402_langchain import create_x402_agent
from langchain_openai import ChatOpenAI
from solders.keypair import Keypair

keypair = Keypair()

agent = create_x402_agent(
    wallet_keypair=keypair,
    llm=ChatOpenAI(temperature=0),
    max_payment="10.0",  # Higher limit for multiple payments
    debug=True,
)

inputs = {
    "messages": [
        {
            "role": "user",
            "content": "Get data from both /premium-data and /expensive-data APIs, then compare them"
        }
    ]
}

result = agent.invoke(inputs)

Complete Example

from openlibx402_langchain import (
    create_x402_agent,
    X402PaymentTool,
)
from langchain_openai import ChatOpenAI
from solders.keypair import Keypair
import json
import os

# Load wallet keypair
with open("wallet.json") as f:
    wallet_data = json.load(f)
    keypair = Keypair.from_bytes(bytes(wallet_data))

# Create X402-enabled agent
agent = create_x402_agent(
    wallet_keypair=keypair,
    llm=ChatOpenAI(
        temperature=0,
        api_key=os.getenv("OPENAI_API_KEY")
    ),
    max_payment="5.0",
    debug=True,
)

# Run agent
inputs = {
    "messages": [
        {
            "role": "user",
            "content": "Get premium market data from http://localhost:8000/premium-data and summarize it"
        }
    ]
}

for chunk in agent.stream(inputs, stream_mode="updates"):
    if "agent" in chunk:
        result = chunk["agent"]
        if "messages" in result:
            print(result["messages"][-1].content)

Configuration

create_x402_agent Parameters

  • wallet_keypair: Your Solana wallet keypair for payments (required)
  • llm: LangChain LLM instance (required)
  • max_payment: Maximum payment amount - safety limit (required)
  • debug: Enable debug logging (optional)

X402PaymentTool Parameters

  • wallet_keypair: Your Solana wallet keypair
  • max_payment: Maximum payment limit
  • name: Tool name for agent (default: "x402_payment")
  • description: Tool description for agent

Wallet Setup

import json
from solders.keypair import Keypair

# Create new wallet
keypair = Keypair()
wallet_data = list(bytes(keypair))
with open("wallet.json", "w") as f:
    json.dump(wallet_data, f)

print(f"Wallet address: {keypair.pubkey()}")
print("Fund this wallet with SOL and USDC on devnet!")

Documentation

For complete API reference and guides, see:

Testing

pytest tests/

License

MIT License - See LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openlibx402_langchain-0.1.0.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openlibx402_langchain-0.1.0-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file openlibx402_langchain-0.1.0.tar.gz.

File metadata

  • Download URL: openlibx402_langchain-0.1.0.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for openlibx402_langchain-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f63ac741e08ac8703d5005ab0c8c38b0098d1d69d429cea88cc4bf11755b58a9
MD5 bed529071e24ff86b5ffd1de8a0fb3db
BLAKE2b-256 05dd70ed7c7507d67e480a39c3508c62220ab75ab253a215bb9a7df6e120a016

See more details on using hashes here.

File details

Details for the file openlibx402_langchain-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for openlibx402_langchain-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6e1f33fa67f81d4ecc7540598f00e1a8cfa169a376d5a1fa0987bfba21e0bb1a
MD5 b6c84ab7348aedf36ef4c1fc91a52f21
BLAKE2b-256 c81ce912207442d92edd0334642b6f13452ca90ffc9650ccb2996ffc0c327953

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page