Skip to main content

コンセプト

AutoGPTおよび同様の自律エージェントは、タスクをループしてツールを呼び出します。l402-kitは有料APIを呼び出し可能なツールとしてラップします — エージェントは支払い、リトライし、人間の介入なしに処理を継続します。

インストール

pip install l402kit

AutoGPT互換コマンドとしてのL402Client

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)
高度なセッション制限については予算管理を、ウォレットの取得についてはウォレットクイックスタートを参照してください。