E2B e servizi sandbox cloud
SDK E2B, Daytona e API sandbox gestite per agenti che interpretano codice.
E2B e servizi sandbox cloud è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Che cos'è E2B?
E2B (Environments to Build) è un servizio cloud di sandbox progettato specificamente per gli agenti AI che scrivono codice. Fornisce ambienti sicuri e isolati, accessibili tramite un semplice SDK Python/JS, senza dover gestire direttamente Docker o le VM.
Ogni sandbox è una microVM Firecracker nel cloud di E2B.
# Install the SDK
# pip install e2b-code-interpreter
from e2b_code_interpreter import Sandbox
sandbox = Sandbox() # creates a new cloud sandbox
print('Sandbox ID:', sandbox.sandbox_id)Esecuzione del codice in una sandbox
L'oggetto Sandbox fornisce un metodo run_code() che esegue Python e restituisce un output strutturato, comprensivo di stdout, stderr e oggetti di visualizzazione avanzata (grafici, dataframe).
from e2b_code_interpreter import Sandbox
with Sandbox() as sandbox:
result = sandbox.run_code('print(2 ** 10)')
print(result.logs.stdout) # ['1024']
print(result.error) # None if no errorGestione degli errori e delle eccezioni
Se il codice solleva un'eccezione, result.error viene valorizzato con il traceback. La sandbox continua a funzionare: è possibile inviare altro codice per correggere l'errore.
from e2b_code_interpreter import Sandbox
with Sandbox() as sandbox:
result = sandbox.run_code('1 / 0')
if result.error:
print('Error name:', result.error.name) # ZeroDivisionError
print('Traceback:', result.error.traceback)
else:
print(result.logs.stdout)Caricamento di file nella sandbox
Utilizzi sandbox.files.write() per caricare file di dati (CSV, JSON, immagini) nel file system della sandbox prima di eseguire il codice di analisi.
from e2b_code_interpreter import Sandbox
csv_content = 'name,score\nAlice,95\nBob,87\nCarol,92'
with Sandbox() as sandbox:
sandbox.files.write('/home/user/data.csv', csv_content.encode())
result = sandbox.run_code(
'import csv\n'
'rows = list(csv.DictReader(open("/home/user/data.csv")))\n'
'print([r["name"] for r in rows])'
)
print(result.logs.stdout) # ["['Alice', 'Bob', 'Carol']"]Download di file dalla sandbox
Dopo il calcolo, recuperi i file di output (report, grafici, dati elaborati) con sandbox.files.read(). Il file viene restituito come byte.
from e2b_code_interpreter import Sandbox
import json
with Sandbox() as sandbox:
sandbox.run_code(
'import json\n'
'result = {"mean": 91.3, "max": 95}\n'
'json.dump(result, open("/home/user/output.json", "w"))'
)
data = sandbox.files.read('/home/user/output.json')
parsed = json.loads(data)
print(parsed) # {'mean': 91.3, 'max': 95}Installazione dei pacchetti in fase di esecuzione
Le sandbox E2B includono Python preinstallato. Installi altri pacchetti con run_code() eseguendo un comando pip, quindi utilizzi il pacchetto nelle chiamate successive all'interno della stessa sessione della sandbox.
from e2b_code_interpreter import Sandbox
with Sandbox() as sandbox:
# Install pandas inside the sandbox
sandbox.run_code('import subprocess; subprocess.run(["pip", "install", "pandas", "-q"])')
# Now use pandas
result = sandbox.run_code(
'import pandas as pd\n'
'df = pd.DataFrame({"x": [1,2,3], "y": [4,5,6]})\n'
'print(df.describe())'
)
print(result.logs.stdout)Sandbox effimere e persistenti
E2B supporta due modalità del ciclo di vita della sandbox:
- Effimera: la sandbox viene distrutta all'uscita dal blocco
with. La utilizzi per l'esecuzione di codice una tantum. - Persistente: la sandbox rimane attiva tra più richieste. La utilizzi quando lo stato deve accumularsi tra i turni dell'agente.
from e2b_code_interpreter import Sandbox
# Ephemeral (default context manager)
with Sandbox() as sb:
sb.run_code('x = 42')
# Sandbox destroyed here
# Persistent: keep alive for N seconds
sb = Sandbox(timeout=300) # keep alive 5 minutes
try:
sb.run_code('import numpy as np') # expensive import cached
sb.run_code('arr = np.arange(1000)')
result = sb.run_code('print(arr.mean())')
print(result.logs.stdout)
finally:
sb.kill() # explicit cleanupRiconnessione a una sandbox in esecuzione
Se il processo dell'agente viene riavviato o sandbox_id viene passato a un altro servizio, è possibile riconnettersi a una sandbox esistente utilizzandone l'ID senza perdere lo stato.
from e2b_code_interpreter import Sandbox
# First session
sb1 = Sandbox(timeout=300)
sb1.run_code('accumulated_data = []')
sandbox_id = sb1.sandbox_id
print('Created:', sandbox_id)
# Later — different process, same sandbox
sb2 = Sandbox.connect(sandbox_id)
result = sb2.run_code('accumulated_data.append(1); print(accumulated_data)')
print(result.logs.stdout) # '[1]' — state preserved
sb2.kill()Modello di tariffazione di E2B
E2B applica i costi in base ai secondi di attività della sandbox: il tempo per cui una sandbox rimane attiva, non solo quello durante il quale viene eseguito il codice. Fattori principali della tariffazione:
- Il tempo di inattività continua a essere fatturato se la sandbox è persistente
- Le sandbox effimere vengono fatturate dalla creazione alla distruzione
- Il traffico di rete in uscita potrebbe essere fatturato separatamente
- Utilizzi
timeoutper impostare una scadenza per la terminazione automatica
# Cost-optimization patterns:
# 1. Use short timeouts for one-shot executions
with Sandbox(timeout=60) as sb:
result = sb.run_code('print("done")')
# Auto-kills after 60s if not killed first
# 2. Kill immediately after use
sb = Sandbox()
try:
sb.run_code('process_data()')
finally:
sb.kill() # don't wait for timeout
# 3. Share one sandbox across multiple agent steps
# instead of creating a new one per stepUtilizzo di E2B in un ciclo dell'agente
In un agente con più turni, crei la sandbox una sola volta e ne passi l'ID attraverso il ciclo. Ogni frammento di codice generato dall'LLM viene eseguito nella stessa sessione, quindi le variabili e i pacchetti installati persistono tra i turni.
from e2b_code_interpreter import Sandbox
import openai
client = openai.OpenAI(api_key='YOUR_OPENAI_KEY')
def run_agent(user_question: str):
with Sandbox(timeout=120) as sb:
messages = [{'role': 'user', 'content': user_question}]
for _ in range(5): # max 5 turns
resp = client.chat.completions.create(
model='gpt-4o', messages=messages,
tools=[{'type': 'function', 'function': {
'name': 'run_python',
'description': 'Execute Python in a secure sandbox',
'parameters': {'type': 'object',
'properties': {'code': {'type': 'string'}},
'required': ['code']}
}}]
)
msg = resp.choices[0].message
if msg.tool_calls:
code = eval(msg.tool_calls[0].function.arguments)['code']
result = sb.run_code(code)
messages.append({'role': 'tool',
'tool_call_id': msg.tool_calls[0].id,
'content': str(result.logs.stdout)})
else:
return msg.contentServizi cloud di sandbox alternativi
E2B non è l'unica opzione. Altri servizi cloud di sandbox:
- Modal: sandbox serverless con GPU/CPU, immagini Docker personalizzate
- AWS Lambda: isolamento dell'esecuzione per ogni invocazione (Firecracker internamente)
- Code Interpreter API: sandbox integrata di OpenAI per gli strumenti di ChatGPT
- Daytona: sandbox di sviluppo con integrazione Git
Che cosa accade alle variabili quando una sandbox E2B effimera esce dal proprio context manager?
Comprendere il ciclo di vita della sandbox è fondamentale per decidere quando utilizzare sandbox effimere o persistenti nelle conversazioni con agenti a più turni.
Riepilogo delle sandbox cloud E2B
E2B fornisce un SDK semplice per le sandbox basate su microVM Firecracker ospitate nel cloud. Modelli principali: sandbox effimere per l'esecuzione di codice una tantum, sandbox persistenti per agenti a più turni, caricamento e download di file per lo scambio di dati e riconnessione tramite ID per flussi di lavoro tra servizi.
Termini sempre esplicitamente le sandbox per evitare costi non necessari.
Domande Frequenti
La lezione «E2B e servizi sandbox cloud» è gratuita?
Sì — il testo completo di «E2B e servizi sandbox cloud» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «E2B e servizi sandbox cloud»?
SDK E2B, Daytona e API sandbox gestite per agenti che interpretano codice. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «E2B e servizi sandbox cloud»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Sandbox per agenti basate su Docker
- Isolamento tramite VM per agenti che eseguono codice con elevati requisiti di sicurezza
- E2B e servizi sandbox cloud
- Policy di sicurezza per l’esecuzione del codice