Skip to main content

Концепция

AutoGPT и аналогичные автономные агенты выполняют задачи в цикле и вызывают инструменты. l402-kit оборачивает любой платный API в вызываемый инструмент — агент платит, повторяет запрос и продолжает работу без участия человека.

Установка

pip install l402kit

L402Client как команда, совместимая с AutoGPT

import os
import asyncio
from l402kit import L402Client
from l402kit.wallets import BlinkWallet

wallet = BlinkWallet(api_key=os.environ["BLINK_API_KEY"])
client = L402Client(wallet=wallet, budget_sats=2000)

# Определение команды в стиле AutoGPT
COMMANDS = {
    "l402_fetch": {
        "description": "Fetch data from a paid API using Bitcoin Lightning micropayment",
        "signature": '("url": "<string>")',
        "example": '("url": "https://api.example.com/data")',
    }
}

def execute_command(command: str, args: dict) -> str:
    if command == "l402_fetch":
        url = args.get("url", "")
        try:
            response = asyncio.run(client.get(url))
            return f"Success: {response.text[:500]}"
        except Exception as e:
            return f"Error: {str(e)}"
    return f"Unknown command: {command}"

Дополнение системного промпта

Добавьте в системный промпт вашего агента AutoGPT:
COMMANDS:
- l402_fetch: Fetch data from a paid API using Bitcoin Lightning
  Args: url (string) — the API endpoint
  Cost: varies per endpoint (typically 1-100 sats)
  Use when: the API returns HTTP 402 Payment Required

BUDGET: {BUDGET_SATS} sats total for this session.
Track spending and stop if budget is exceeded.

Пример полного автономного цикла

import asyncio
from l402kit import L402Client, BudgetExceededError
from l402kit.wallets import BlinkWallet

wallet = BlinkWallet(api_key=os.environ["BLINK_API_KEY"])
client = L402Client(wallet=wallet, budget_sats=1000)

async def autonomous_data_collector(urls: list[str]) -> list[dict]:
    results = []
    for url in urls:
        try:
            response = await client.get(url)
            results.append({
                "url": url,
                "status": "success",
                "data": response.json(),
                "cost_sats": client.last_payment_sats
            })
        except BudgetExceededError:
            results.append({"url": url, "status": "budget_exceeded"})
            break
        except Exception as e:
            results.append({"url": url, "status": "error", "error": str(e)})

    print(f"Total spent: {client.spent_sats} sats")
    return results

# Запуск
results = asyncio.run(autonomous_data_collector([
    "https://l402kit.com/api/demo",
    "https://api.example.com/data",
]))

Отслеживание бюджета

# Проверяйте оставшийся бюджет перед каждым вызовом
if client.spent_sats + 100 > client.budget_sats:
    print("Approaching budget limit, stopping.")
else:
    response = await client.get(url)
См. Контроль бюджета для настройки расширенных лимитов сессии и Быстрый старт с кошельком для подключения кошелька.