AI Agents · Leçon

E2B et services de bacs à sable cloud

SDK E2B, Daytona et API de bacs à sable gérées pour les agents interpréteurs de code.

Leçon 3 sur 413 étapes

E2B et services de bacs à sable cloud est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.

Qu’est-ce qu’E2B ?

E2B (Environnements pour construire) est un service de bacs à sable cloud conçu spécialement pour les agents de code IA. Il fournit des environnements sécurisés et isolés, accessibles via un SDK Python/JS simple, sans que vous ayez à gérer vous-même Docker ou les VM.

Chaque bac à sable est une microVM Firecracker dans le cloud d’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)

Exécuter du code dans un bac à sable

L’objet Sandbox fournit une méthode run_code() qui exécute du code Python et renvoie une sortie structurée comprenant la sortie standard, la sortie d’erreur et des objets d’affichage enrichis (graphiques, 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 error

Gérer les erreurs et les exceptions

Si le code lève une exception, result.error contient la trace de la pile. Le bac à sable lui-même continue de fonctionner : vous pouvez lui envoyer du code supplémentaire pour corriger l’erreur.

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)

Importer des fichiers dans le bac à sable

Utilisez sandbox.files.write() pour importer des fichiers de données (CSV, JSON, images) dans le système de fichiers du bac à sable avant d’exécuter le code d’analyse.

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

Exporter des fichiers depuis le bac à sable

Après le calcul, récupérez les fichiers de sortie (rapports, graphiques, données traitées) avec sandbox.files.read(). Le fichier est renvoyé sous forme d’octets.

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}

Installer des paquets à l’exécution

Les bacs à sable E2B sont fournis avec Python préinstallé. Installez des paquets supplémentaires avec run_code() en exécutant une commande pip, puis utilisez le paquet lors des appels suivants dans la même session du bac à sable.

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)

Bacs à sable persistants ou éphémères

E2B prend en charge deux modes de cycle de vie des bacs à sable :

  • Éphémère : le bac à sable est détruit lorsque le bloc with se termine. À utiliser pour une exécution de code ponctuelle.
  • Persistant : le bac à sable reste actif entre plusieurs requêtes. À utiliser lorsque l’état doit s’accumuler entre les tours de l’agent.
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

Se reconnecter à un bac à sable en cours d’exécution

Si votre processus d’agent redémarre ou si l’identifiant du bac à sable est transmis à un autre service, vous pouvez vous reconnecter à un bac à sable existant à l’aide de son ID sans perdre son état.

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

Modèle tarifaire d’E2B

E2B facture en fonction des secondes de bac à sable — la durée pendant laquelle un bac à sable est actif, et pas seulement la durée d’exécution du code. Principaux facteurs tarifaires :

  • Le temps d’inactivité reste facturé si le bac à sable est persistant
  • Les bacs à sable éphémères sont facturés de leur création à leur destruction
  • La sortie réseau peut être facturée séparément
  • Utilisez timeout pour définir une échéance d’arrêt automatique
# 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

Utiliser E2B dans une boucle d’agent

Dans un agent à plusieurs tours, créez le bac à sable une seule fois et transmettez son ID tout au long de la boucle. Chaque extrait de code généré par le LLM s’exécute dans la même session ; les variables et les paquets installés sont donc conservés entre les tours.

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

Services cloud de bacs à sable alternatifs

E2B n’est pas la seule option. Voici d’autres services cloud de bacs à sable :

  • Modal : bacs à sable GPU/CPU sans serveur, images Docker personnalisées
  • AWS Lambda : isolation de l’exécution à chaque appel (Firecracker en arrière-plan)
  • Code Interpreter API : bac à sable intégré d’OpenAI pour les outils de ChatGPT
  • Daytona : bacs à sable de développement avec intégration Git

Que deviennent les variables lorsqu’un bac à sable E2B éphémère quitte son gestionnaire de contexte ?

Comprendre le cycle de vie du bac à sable est essentiel pour décider quand utiliser des bacs à sable éphémères ou persistants dans des conversations d’agent à plusieurs tours.

Récapitulatif des bacs à sable cloud E2B

E2B fournit un SDK simple pour les bacs à sable cloud basés sur des microVMs Firecracker. Principaux modèles : bacs à sable éphémères pour le code ponctuel, bacs à sable persistants pour les agents à plusieurs tours, importation et exportation de fichiers pour les données entrantes et sortantes, et reconnexion par ID pour les flux de travail entre services.

Arrêtez toujours explicitement les bacs à sable afin d’éviter une facturation inutile.

Gratuit pour commencer

Apprends AI Agents avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
60
Leçons
239

Questions Fréquemment Posées

La leçon « E2B et services de bacs à sable cloud » est-elle gratuite ?

Oui — le texte complet de « E2B et services de bacs à sable cloud » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « E2B et services de bacs à sable cloud » ?

SDK E2B, Daytona et API de bacs à sable gérées pour les agents interpréteurs de code. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer AI Agents ?

Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « E2B et services de bacs à sable cloud » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?

Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Bacs à sable d’agents fondés sur Docker
  2. Isolation par VM pour les agents exécutant du code hautement sécurisé
  3. E2B et services de bacs à sable cloud
  4. Politiques de sécurité pour l’exécution du code
← Retour à AI Agents