0Pricing
AI Agents · Lección

E2B y servicios de sandbox en la nube

SDK de E2B, Daytona y API de sandbox gestionadas para agentes intérpretes de código.

E2B y servicios de sandbox en la nube es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.

¿Qué es E2B?

E2B (Environments to Build) es un servicio de sandbox en la nube diseñado específicamente para agentes de código de IA. Proporciona entornos seguros y aislados accesibles mediante un SDK sencillo de Python/JS, sin que tenga que gestionar Docker ni máquinas virtuales.

Cada sandbox es una microVM de Firecracker en la nube de 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)

Ejecución de código en un sandbox

El objeto Sandbox proporciona un método run_code() que ejecuta Python y devuelve una salida estructurada que incluye stdout, stderr y objetos de visualización enriquecidos (gráficos, dataframes).

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 error

Gestión de errores y excepciones

Si el código genera una excepción, result.error se rellena con el traceback. El sandbox continúa ejecutándose; puede enviar código adicional para corregir el error.

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)

Carga de archivos al sandbox

Use sandbox.files.write() para cargar archivos de datos (CSV, JSON, imágenes) en el sistema de archivos del sandbox antes de ejecutar el código de análisis.

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']"]

Descarga de archivos del sandbox

Después del cálculo, recupere los archivos de salida (informes, gráficos y datos procesados) con sandbox.files.read(). El archivo se devuelve como bytes.

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}

Instalación de paquetes en tiempo de ejecución

Los sandboxes de E2B incluyen Python preinstalado. Instale paquetes adicionales con run_code() ejecutando un comando pip y, después, utilice el paquete en las llamadas posteriores dentro de la misma sesión del 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)

Sandboxes persistentes frente a efímeros

E2B admite dos modos de ciclo de vida del sandbox:

  • Efímero: el sandbox se destruye cuando termina el bloque with. Úselo para ejecuciones puntuales de código.
  • Persistente: el sandbox permanece activo entre varias solicitudes. Úselo cuando el estado deba acumularse entre los turnos del 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 cleanup

Reconexión a un sandbox en ejecución

Si el proceso del agente se reinicia o sandbox_id se pasa a otro servicio, puede volver a conectarse a un sandbox existente mediante su ID sin perder el estado.

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()

Modelo de precios de E2B

E2B cobra en función de los sandbox-seconds: el tiempo durante el que el sandbox está activo, no solo el tiempo durante el que se ejecuta el código. Factores clave de los precios:

  • El tiempo inactivo también tiene un coste si el sandbox es persistente
  • Los sandboxes efímeros se facturan desde su creación hasta su destrucción
  • La salida de red puede facturarse por separado
  • Use timeout para establecer un límite de finalización automática
# 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 step

Uso de E2B en un bucle de agente

En un agente de varios turnos, cree el sandbox una sola vez y pase su ID a través del bucle. Cada fragmento de código generado por el LLM se ejecuta en la misma sesión, por lo que las variables y los paquetes instalados persisten entre los turnos.

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.content

Servicios de sandbox en la nube alternativos

E2B no es la única opción. Otros servicios de sandbox en la nube:

  • Modal: sandboxes de GPU/CPU sin servidor e imágenes de Docker personalizadas
  • AWS Lambda: aislamiento de la ejecución en cada invocación (utiliza Firecracker internamente)
  • Code Interpreter API: sandbox integrado de OpenAI para las herramientas de ChatGPT
  • Daytona: sandboxes de desarrollo con integración con Git

¿Qué ocurre con las variables cuando un sandbox efímero de E2B sale de su gestor de contexto?

Comprender el ciclo de vida del sandbox es fundamental para decidir cuándo utilizar sandboxes efímeros o persistentes en conversaciones de agentes de varios turnos.

Resumen de los sandboxes en la nube de E2B

E2B proporciona un SDK sencillo para sandboxes basados en microVM de Firecracker alojados en la nube. Patrones clave: sandboxes efímeros para ejecuciones puntuales de código, sandboxes persistentes para agentes de varios turnos, carga y descarga de archivos para transferir datos y reconexión mediante ID para flujos de trabajo entre servicios.

Finalice siempre los sandboxes explícitamente para evitar costes innecesarios.

Preguntas frecuentes

¿La lección «E2B y servicios de sandbox en la nube» es gratis?

Sí — el texto completo de «E2B y servicios de sandbox en la nube» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.

¿Qué aprenderé en «E2B y servicios de sandbox en la nube»?

SDK de E2B, Daytona y API de sandbox gestionadas para agentes intérpretes de código. Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar AI Agents?

No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «E2B y servicios de sandbox en la nube»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de AI Agents?

Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Sandboxes de agentes basados en Docker
  2. Aislamiento mediante máquinas virtuales para agentes de código de alta seguridad
  3. E2B y servicios de sandbox en la nube
  4. Políticas de seguridad para la ejecución de código
← Volver a AI Agents