parent
efe293df9e
commit
1729112a0d
@ -0,0 +1,166 @@
|
||||
# X402 Payment Integration with Swarms Agents
|
||||
|
||||
X402 is a protocol that enables seamless cryptocurrency payments for API endpoints. This guide demonstrates how to monetize your Swarms agents by integrating X402 payment requirements into your FastAPI applications.
|
||||
|
||||
With X402, you can:
|
||||
|
||||
| Feature | Description |
|
||||
|-----------------------------------------------------|----------------------------------------------|
|
||||
| Charge per API request | Monetize your agents on a per-call basis |
|
||||
| Accept cryptocurrency payments | e.g., Base, Base Sepolia, and more |
|
||||
| Payment gate protection for agent endpoints | Secure endpoints with pay-to-access gates |
|
||||
| Create pay-per-use AI services | Offer AI agents as on-demand paid services |
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before you begin, ensure you have:
|
||||
|
||||
- Python 3.10 or higher
|
||||
- A cryptocurrency wallet address (for receiving payments)
|
||||
- API keys for your AI model provider (e.g., OpenAI)
|
||||
- An Exa API key (if using web search functionality)
|
||||
|
||||
## Installation
|
||||
|
||||
Install the required dependencies:
|
||||
|
||||
```bash
|
||||
pip install swarms x402 fastapi uvicorn python-dotenv swarms-tools
|
||||
```
|
||||
|
||||
## Environment Setup
|
||||
|
||||
Create a `.env` file in your project root:
|
||||
|
||||
```bash
|
||||
# OpenAI API Key
|
||||
OPENAI_API_KEY=your_openai_api_key_here
|
||||
|
||||
# Exa API Key (for web search)
|
||||
EXA_API_KEY=your_exa_api_key_here
|
||||
|
||||
# Your wallet address (where you'll receive payments)
|
||||
WALLET_ADDRESS=0xYourWalletAddressHere
|
||||
```
|
||||
|
||||
## Basic X402 Integration Example
|
||||
|
||||
Here's a complete example of a research agent with X402 payment integration:
|
||||
|
||||
```python
|
||||
from dotenv import load_dotenv
|
||||
from fastapi import FastAPI
|
||||
from swarms_tools import exa_search
|
||||
|
||||
from swarms import Agent
|
||||
from x402.fastapi.middleware import require_payment
|
||||
|
||||
# Load environment variables
|
||||
load_dotenv()
|
||||
|
||||
app = FastAPI(title="Research Agent API")
|
||||
|
||||
# Initialize the research agent
|
||||
research_agent = Agent(
|
||||
agent_name="Research-Agent",
|
||||
system_prompt="You are an expert research analyst. Conduct thorough research on the given topic and provide comprehensive, well-structured insights with citations.",
|
||||
model_name="gpt-4o-mini",
|
||||
max_loops=1,
|
||||
tools=[exa_search],
|
||||
)
|
||||
|
||||
|
||||
# Apply x402 payment middleware to the research endpoint
|
||||
app.middleware("http")(
|
||||
require_payment(
|
||||
path="/research",
|
||||
price="$0.01",
|
||||
pay_to_address="0xYourWalletAddressHere",
|
||||
network_id="base-sepolia",
|
||||
description="AI-powered research agent that conducts comprehensive research on any topic",
|
||||
input_schema={
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"query": {
|
||||
"type": "string",
|
||||
"description": "Research topic or question",
|
||||
}
|
||||
},
|
||||
"required": ["query"],
|
||||
},
|
||||
output_schema={
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"research": {
|
||||
"type": "string",
|
||||
"description": "Comprehensive research results",
|
||||
}
|
||||
},
|
||||
},
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@app.get("/research")
|
||||
async def conduct_research(query: str):
|
||||
"""
|
||||
Conduct research on a given topic using the research agent.
|
||||
|
||||
Args:
|
||||
query: The research topic or question
|
||||
|
||||
Returns:
|
||||
Research results from the agent
|
||||
"""
|
||||
result = research_agent.run(query)
|
||||
return {"research": result}
|
||||
|
||||
|
||||
@app.get("/")
|
||||
async def root():
|
||||
"""Health check endpoint (free, no payment required)"""
|
||||
return {
|
||||
"message": "Research Agent API with x402 payments",
|
||||
"endpoints": {
|
||||
"/research": "Paid endpoint - $0.01 per request",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
|
||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
||||
```
|
||||
|
||||
|
||||
## Running Your Service
|
||||
|
||||
Start the server:
|
||||
|
||||
```bash
|
||||
python research_agent_x402_example.py
|
||||
```
|
||||
|
||||
Or with uvicorn directly:
|
||||
|
||||
```bash
|
||||
uvicorn research_agent_x402_example:app --host 0.0.0.0 --port 8000 --reload
|
||||
```
|
||||
|
||||
Your API will be available at:
|
||||
|
||||
- Main endpoint: `http://localhost:8000/`
|
||||
|
||||
- Research endpoint: `http://localhost:8000/research`
|
||||
|
||||
- API docs: `http://localhost:8000/docs`
|
||||
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Experiment with different pricing models
|
||||
2. Add multiple agents with specialized capabilities
|
||||
3. Implement analytics to track usage and revenue
|
||||
4. Deploy to production (see [Deployment Solutions](../deployment_solutions/overview.md))
|
||||
5. Integrate with your existing payment processing
|
||||
Loading…
Reference in new issue