Skip to main content

Python client for interacting with the AI Computer service

Project description

AI Computer Python Client

A Python client for interacting with the AI Computer service. This client provides a simple interface for executing Python code in an isolated sandbox environment.

Installation

pip install ai-computer-client

Quick Start

import asyncio
from ai_computer import SandboxClient

async def main():
    # Initialize the client
    client = SandboxClient()
    
    # Setup the client (gets token and creates sandbox)
    setup_response = await client.setup()
    if not setup_response.success:
        print(f"Setup failed: {setup_response.error}")
        return
    
    try:
        # Example 1: Simple code execution
        code = """x = 10
y = 20
result = x + y
print(f"The sum is: {result}")"""
        
        print("\nExample 1: Simple execution")
        print("-" * 50)
        response = await client.execute_code(code)
        if response.success:
            print("Execution result:", response.data)
        else:
            print("Execution failed:", response.error)

        # Example 2: Streaming execution
        code = """import time

for i in range(5):
    print(f"Processing step {i + 1}")
    time.sleep(1)  # Simulate work
    
result = "Calculation complete!"
print(result)"""
        
        print("\nExample 2: Streaming execution")
        print("-" * 50)
        async for event in client.execute_code_stream(code):
            if event.type == 'stdout':
                print(f"Output: {event.data}")
            elif event.type == 'stderr':
                print(f"Error: {event.data}")
            elif event.type == 'error':
                print(f"Execution error: {event.data}")
                break
            elif event.type == 'completed':
                print("Execution completed")
                break
    
    finally:
        # Clean up
        await client.cleanup()

if __name__ == "__main__":
    asyncio.run(main())

Example output:

Example 1: Simple execution
--------------------------------------------------
Execution result: {'output': 'The sum is: 30\n', 'sandbox_id': '06a30496-b535-47b0-9fe7-34f7ec483cd7'}

Example 2: Streaming execution
--------------------------------------------------
Output: Processing step 1
Output: Processing step 2
Output: Processing step 3
Output: Processing step 4
Output: Processing step 5
Output: Calculation complete!
Execution completed

Features

  • Asynchronous API for efficient execution
  • Real-time streaming of code output
  • Automatic sandbox management
  • Error handling and timeouts
  • Type hints for better IDE support

API Reference

SandboxClient

The main client class for interacting with the AI Computer service.

client = SandboxClient(base_url="http://aicomputer.dev")

Methods

async setup() -> SandboxResponse

Initialize the client and create a sandbox. This must be called before executing any code.

response = await client.setup()
if response.success:
    print("Sandbox ready")
async execute_code(code: str, timeout: int = 30) -> SandboxResponse

Execute Python code and return the combined output.

code = """
x = 10
y = 20
result = x + y
print(f"The sum is: {result}")
"""

response = await client.execute_code(code)
if response.success:
    print("Output:", response.data['output'])
async execute_code_stream(code: str, timeout: int = 30) -> AsyncGenerator[StreamEvent, None]

Execute Python code and stream the output in real-time.

async for event in client.execute_code_stream(code):
    if event.type == 'stdout':
        print("Output:", event.data)
    elif event.type == 'stderr':
        print("Error:", event.data)
async cleanup() -> SandboxResponse

Delete the sandbox and clean up resources.

await client.cleanup()

Response Types

SandboxResponse

@dataclass
class SandboxResponse:
    success: bool
    data: Optional[Dict] = None
    error: Optional[str] = None

StreamEvent

@dataclass
class StreamEvent:
    type: str  # 'stdout', 'stderr', 'error', 'completed'
    data: str

Development

Running Tests

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

MIT License

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

ai_computer_client-0.3.0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

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

ai_computer_client-0.3.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file ai_computer_client-0.3.0.tar.gz.

File metadata

  • Download URL: ai_computer_client-0.3.0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for ai_computer_client-0.3.0.tar.gz
Algorithm Hash digest
SHA256 cb29075983d4fa4c17adf3433d6a65a8265b879012552ffa3bf339952e2e796e
MD5 b3ac69cd447d4143788a1c2c1000a6af
BLAKE2b-256 2d64f896f090db3c92244fc5f83aa2cee21bc258e1c09efcd664dd9304ea2d53

See more details on using hashes here.

File details

Details for the file ai_computer_client-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ai_computer_client-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6fe81699fb725e4f92a9267798675defc382b005c1bc04a6c17a762fbdef00ef
MD5 157f007669fcd606b4724c84268294bc
BLAKE2b-256 f42741d475359a665a58984ac801c4359c2ed3c2550648128dda28f9deeb1e28

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