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://api.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
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_computer_client-0.3.3.tar.gz.
File metadata
- Download URL: ai_computer_client-0.3.3.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea962a6606073c6e96b4ea57dfe166adbbbf8432c13a035511f0bd382167d591
|
|
| MD5 |
fd27bb882288f784d6144fc69ddb7576
|
|
| BLAKE2b-256 |
41662e7f25dca7a66b1e26715930ae81c8b270cb9c758c2178aca15630aa410d
|
File details
Details for the file ai_computer_client-0.3.3-py3-none-any.whl.
File metadata
- Download URL: ai_computer_client-0.3.3-py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b90024c20a55334c479e1fe539859eb2a37e98f54b9740e86cbbdba782ab692a
|
|
| MD5 |
a0404105f3ab0b7ef100f21af79f0585
|
|
| BLAKE2b-256 |
a6b42a78c04e44cd27ee8c403b3d7800e753f6adc57de597c13c0816120bc108
|