Examples
Explore practical examples and common use cases for AI Computer. Each example includes complete code and explanations to help you get started quickly.
Quick Example
Here's a simple example showing both basic execution and streaming using the submodule-based API:
1import asyncio
2from ai_computer import SandboxClient
3
4async def main():
5 # Initialize the client
6 client = SandboxClient()
7
8 # Setup the client (gets token and creates sandbox)
9 setup_response = await client.setup()
10 if not setup_response.success:
11 print(f"Setup failed: {setup_response.error}")
12 return
13
14 try:
15 # Example 1: Simple code execution
16 code = """x = 10
17y = 20
18result = x + y
19print(f"The sum is: {result}")"""
20
21 print("\nExample 1: Simple execution")
22 print("-" * 50)
23 response = await client.code.execute(code)
24 if response.success:
25 print("Execution result:", response.data)
26 else:
27 print("Execution failed:", response.error)
28
29 # Example 2: Streaming execution
30 code = """import time
31
32for i in range(5):
33 print(f"Processing step {i + 1}")
34 time.sleep(1) # Simulate work
35
36result = "Calculation complete!"
37print(result)"""
38
39 print("\nExample 2: Streaming execution")
40 print("-" * 50)
41 async for event in client.code.execute_stream(code):
42 if event.type == 'stdout':
43 print(f"Output: {event.data}")
44 elif event.type == 'stderr':
45 print(f"Error: {event.data}")
46 elif event.type == 'error':
47 print(f"Execution error: {event.data}")
48 break
49 elif event.type == 'completed':
50 print("Execution completed")
51 break
52
53 finally:
54 # Clean up
55 await client.cleanup()
56
57if __name__ == "__main__":
58 asyncio.run(main())
Example Categories
Basic Usage
Learn the fundamentals of using AI Computer with simple examples.
- Client initialization
- Simple code execution
- Response handling
- Cleanup patterns
Streaming Output
Examples of real-time output streaming and event handling.
- Real-time output handling
- Event types and processing
- Long-running processes
- Error handling in streams
File Operations
Working with files in the sandbox environment.
- Reading and writing files
- Uploading and downloading files
- Working with binary data
- File operation responses
Error Handling
Learn how to handle errors and edge cases effectively.
- Setup errors
- Execution errors
- Network timeouts
- Graceful recovery
Submodule Usage
Learn how to use the submodule-based API organization.
- FileSystemModule (fs)
- ShellModule (shell)
- CodeModule (code)
- Submodule best practices
Advanced Submodule Examples
Comprehensive examples for using submodules effectively.
- Advanced file operations
- Complex shell commands
- Code execution with environment variables
- Error handling strategies
Migration Guide
Transition from the old API to the new submodule-based API.
- API changes overview
- Code migration examples
- Response object updates
- Migration checklist
Common Patterns
Proper Setup and Cleanup
Always initialize the client and clean up resources:
1async def safe_execution():
2 client = SandboxClient()
3
4 # Setup and check for errors
5 setup_response = await client.setup()
6 if not setup_response.success:
7 print(f"Setup failed: {setup_response.error}")
8 return
9
10 try:
11 # Your code here
12 response = await client.code.execute("print('Hello')")
13 return response
14 finally:
15 # Always clean up
16 await client.cleanup()
Error Handling
Implement comprehensive error handling:
1async def robust_execution(code: str):
2 client = SandboxClient()
3
4 try:
5 # Handle setup errors
6 setup_response = await client.setup()
7 if not setup_response.success:
8 return f"Setup failed: {setup_response.error}"
9
10 # Handle execution errors
11 response = await client.code.execute(code)
12 if not response.success:
13 return f"Execution failed: {response.error}"
14
15 return response.data
16
17 except Exception as e:
18 return f"Unexpected error: {str(e)}"
19
20 finally:
21 await client.cleanup()
Next Steps
Choose an example category above to explore detailed examples and code samples. Each section includes complete, runnable code and explanations of key concepts.
For more information, you can also check:
- API Reference for detailed documentation
- Submodules API Reference for information on the submodule organization
- Migration Guide for transitioning to the new API