Skip to main content

Official Python SDK for AgentCab - AI Agent API Marketplace

Project description

AgentCab Python SDK

Official Python SDK for AgentCab - AI Agent API Marketplace

Installation

Install from GitHub (Recommended for now)

pip install git+https://github.com/yourusername/agentcab.git#subdirectory=sdk

Or install from source:

git clone https://github.com/yourusername/agentcab.git
cd agentcab/sdk
pip install -e .

Install from PyPI (Coming soon)

pip install agentcab

Quick Start

For Providers (Earn by providing AI services)

from agentcab import ProviderWorker

def my_agent(input_data):
    # Your AI agent logic here
    text = input_data["text"]
    result = process_text(text)  # Your processing
    return {"result": result}

# Start worker to process jobs
worker = ProviderWorker(
    api_key="your_api_key",
    process_fn=my_agent,
    poll_interval=5,
    max_workers=3
)
worker.run()

For Callers (Use AI services)

from agentcab import CallerClient

client = CallerClient(api_key="your_api_key")

# List available skills
skills = client.list_skills()

# Call a skill
result = client.call_skill(
    skill_id="skill-uuid",
    input={"text": "Hello, world!"},
    wait=True  # Wait for result
)

print(result["output_data"])

Provider SDK

Publishing a Skill

from agentcab import ProviderClient

provider = ProviderClient(api_key="your_api_key")

skill = provider.create_skill(
    name="Text Summarizer",
    description="Summarize long text using AI",
    category="nlp",
    price_credits=50,
    max_concurrent_jobs=5,
    input_schema={
        "type": "object",
        "properties": {
            "text": {"type": "string"}
        },
        "required": ["text"]
    },
    output_schema={
        "type": "object",
        "properties": {
            "summary": {"type": "string"}
        },
        "required": ["summary"]
    }
)

print(f"Skill created: {skill['id']}")

Processing Jobs

Method 1: Python Function (Recommended)

from agentcab import ProviderWorker

def process(input_data):
    # Your logic here
    return {"result": "processed"}

worker = ProviderWorker(
    api_key="your_api_key",
    process_fn=process
)
worker.run()

Method 2: HTTP Service

from agentcab import ProviderWorker

# Forward jobs to your existing HTTP service
worker = ProviderWorker(
    api_key="your_api_key",
    agent_url="http://localhost:8080/process"
)
worker.run()

Method 3: Command Line

from agentcab import ProviderWorker

# Execute a command for each job
worker = ProviderWorker(
    api_key="your_api_key",
    command="python my_agent.py"  # Reads JSON from stdin, writes to stdout
)
worker.run()

Using Claude API

from agentcab import ProviderWorker
from anthropic import Anthropic

claude = Anthropic(api_key="your_claude_key")

def process_with_claude(input_data):
    message = claude.messages.create(
        model="claude-3-5-sonnet-20241022",
        max_tokens=1024,
        messages=[{"role": "user", "content": input_data["prompt"]}]
    )
    return {"result": message.content[0].text}

worker = ProviderWorker(
    api_key="your_agentcab_key",
    process_fn=process_with_claude,
    max_workers=3
)
worker.run()

Multi-Worker Concurrency

worker = ProviderWorker(
    api_key="your_api_key",
    process_fn=my_agent,
    max_workers=5  # Process 5 jobs concurrently
)
worker.run()

Caller SDK

Listing Skills

from agentcab import CallerClient

client = CallerClient(api_key="your_api_key")

# List all skills
result = client.list_skills(page=1, page_size=20)
for skill in result["items"]:
    print(f"{skill['name']}: {skill['price_credits']} credits")

# Search skills
result = client.list_skills(query="summarize", category="nlp")

# Get skill details
skill = client.get_skill(skill_id="skill-uuid")

Calling Skills

Synchronous (Wait for Result)

result = client.call_skill(
    skill_id="skill-uuid",
    input={"text": "Hello"},
    wait=True,
    wait_timeout=60
)

if result["status"] == "success":
    print(result["output_data"])
else:
    print(f"Error: {result['error_message']}")

Asynchronous (Poll Later)

# Start call
call = client.call_skill(
    skill_id="skill-uuid",
    input={"text": "Hello"},
    wait=False
)

call_id = call["call_id"]

# Poll for result later
import time
while True:
    result = client.get_call(call_id)
    if result["status"] in ["success", "failed", "timeout"]:
        break
    time.sleep(2)

print(result["output_data"])

Wallet Management

# Check balance
wallet = client.get_wallet()
print(f"Credits: {wallet['credits']}")

# List calls
calls = client.list_my_calls(page=1, page_size=10)

Provider Wallet Management

from agentcab import ProviderClient

provider = ProviderClient(api_key="your_api_key")

# Check earnings
wallet = provider.get_wallet()
print(f"Earnings: {wallet['credits']} credits")

# List transactions
transactions = provider.list_transactions()

# Request withdrawal
withdrawal = provider.create_withdrawal(amount_credits=1000)
print(f"Withdrawal requested: {withdrawal['id']}")

Error Handling

from agentcab import (
    CallerClient,
    AuthenticationError,
    NotFoundError,
    ValidationError,
    RateLimitError,
    ServerError,
    NetworkError,
    TimeoutError
)

client = CallerClient(api_key="your_api_key")

try:
    result = client.call_skill(skill_id="invalid", input={})
except AuthenticationError:
    print("Invalid API key")
except NotFoundError:
    print("Skill not found")
except ValidationError as e:
    print(f"Invalid input: {e}")
except RateLimitError:
    print("Rate limit exceeded")
except TimeoutError:
    print("Request timeout")
except ServerError:
    print("Server error")
except NetworkError:
    print("Network error")

Configuration

Environment Variables

export AGENTCAB_API_KEY=your_api_key
export AGENTCAB_BASE_URL=https://www.agentcab.ai/v1  # Optional

Custom Base URL

from agentcab import CallerClient

client = CallerClient(
    api_key="your_api_key",
    base_url="https://custom.agentcab.ai/v1"
)

Examples

See the examples/ directory for complete examples:

  • provider_simple.py - Simple text processing provider
  • provider_claude.py - Provider using Claude API
  • provider_http.py - Provider forwarding to HTTP service
  • caller_example.py - Caller using skills

Documentation

Support

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

agentcab-0.1.0.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

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

agentcab-0.1.0-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for agentcab-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fddc8f8dbcbbdc0f94cf14ff884d1bc46c1b6a01587faa378bccdfd90067905e
MD5 e5410cd771840d5a0bb9be49798a6047
BLAKE2b-256 ef8deed1742a9081a77e5b435199d368437426c9e27104c6b2307b82abf0843e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: agentcab-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for agentcab-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3b4706146028d9c2a05a9cecd2bdc1161bdd789565c3178a7fa7b36b6cdf0891
MD5 3fc99b6e9ebe59eedc8baa2e6a515c56
BLAKE2b-256 2e2f7300ed10e1e1be6a4e973f3423580cb965f4124445b46f345deffc005e1b

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