E2B- und Cloud-Sandbox-Dienste
E2B SDK, Daytona und verwaltete Sandbox-APIs für Code-Interpreter-Agenten.
E2B- und Cloud-Sandbox-Dienste ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Was ist E2B?
E2B (Environments to Build) ist ein cloudbasierter Sandbox-Dienst, der speziell für KI-Code-Agenten entwickelt wurde. Er bietet sichere, isolierte Umgebungen, die über ein einfaches Python/JS-SDK zugänglich sind, ohne dass Sie Docker oder VMs selbst verwalten müssen.
Jede Sandbox ist eine Firecracker-MicroVM in der E2B-Cloud.
# 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)Code in einer Sandbox ausführen
Das Objekt Sandbox stellt eine Methode run_code() bereit, die Python ausführt und strukturierte Ausgaben einschließlich stdout, stderr und umfangreicher Anzeigeobjekte (Diagramme, DataFrames) zurückgibt.
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 errorFehler und Ausnahmen behandeln
Wenn der Code eine Ausnahme auslöst, enthält result.error den Traceback. Die Sandbox selbst läuft weiter – Sie können Folgecode senden, um den Fehler zu beheben.
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)Dateien in die Sandbox hochladen
Verwenden Sie sandbox.files.write(), um Datendateien (CSV, JSON, Bilder) vor der Ausführung des Analyse-Codes in das Dateisystem der Sandbox hochzuladen.
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']"]Dateien aus der Sandbox herunterladen
Rufen Sie nach der Berechnung Ausgabedateien (Berichte, Diagramme, verarbeitete Daten) mit sandbox.files.read() ab. Die Datei wird als Bytes zurückgegeben.
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}Pakete zur Laufzeit installieren
E2B-Sandboxes enthalten eine vorinstallierte Python-Umgebung. Installieren Sie zusätzliche Pakete mit run_code(), indem Sie einen pip-Befehl ausführen, und verwenden Sie das Paket anschließend in weiteren Aufrufen innerhalb derselben Sandbox-Sitzung.
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)Ephemere und persistente Sandboxes
E2B unterstützt zwei Lebenszyklusmodi für Sandboxes:
- Ephemer: Die Sandbox wird zerstört, wenn der
with-Block verlassen wird. Verwenden Sie diesen Modus für einmalige Codeausführung. - Persistent: Die Sandbox bleibt über mehrere Anfragen hinweg aktiv. Verwenden Sie diesen Modus, wenn sich der Zustand über mehrere Agent-Runden hinweg ansammeln soll.
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 cleanupVerbindung zu einer laufenden Sandbox wiederherstellen
Wenn Ihr Agent-Prozess neu gestartet wird oder die sandbox_id an einen anderen Dienst übergeben wird, können Sie über die ID eine Verbindung zu einer vorhandenen Sandbox herstellen, ohne den Zustand zu verlieren.
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()Preismodell von E2B
E2B rechnet auf Grundlage von Sandbox-Sekunden ab – also der Zeit, während der eine Sandbox aktiv ist, nicht nur der Zeit, in der Code ausgeführt wird. Wichtige Preisfaktoren:
- Leerlaufzeit verursacht weiterhin Kosten, wenn die Sandbox persistent ist
- Ephemere Sandboxes werden vom Erstellen bis zum Zerstören abgerechnet
- Ausgehender Netzwerkverkehr kann separat berechnet werden
- Verwenden Sie
timeout, um eine Frist für die automatische Beendigung festzulegen
# 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 stepE2B in einer Agent-Schleife verwenden
Erstellen Sie in einem Agenten mit mehreren Gesprächsrunden die Sandbox einmal und übergeben Sie ihre ID durch die Schleife. Jedes vom LLM erzeugte Codefragment wird in derselben Sitzung ausgeführt, sodass Variablen und installierte Pakete über die Runden hinweg erhalten bleiben.
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.contentAlternative Cloud-Sandbox-Dienste
E2B ist nicht die einzige Option. Weitere Cloud-Sandbox-Dienste:
- Modal: serverlose GPU-/CPU-Sandboxes, benutzerdefinierte Docker-Images
- AWS Lambda: Isolierung der Ausführung pro Aufruf (im Hintergrund Firecracker)
- Code Interpreter API: integrierte Sandbox von OpenAI für ChatGPT-Tools
- Daytona: Entwicklungs-Sandboxes mit Git-Integration
Was geschieht mit Variablen, wenn eine ephemere E2B-Sandbox ihren Kontextmanager-Block verlässt?
Das Verständnis des Lebenszyklus einer Sandbox ist entscheidend für die Entscheidung, wann Sie in mehrstufigen Agent-Gesprächen ephemere oder persistente Sandboxes verwenden.
Zusammenfassung zu E2B-Cloud-Sandboxes
E2B bietet ein einfaches SDK für cloudbasierte Firecracker-MicroVM-Sandboxes. Wichtige Muster sind: ephemere Sandboxes für einmalige Codeausführung, persistente Sandboxes für Agenten mit mehreren Gesprächsrunden, Datei-Upload und -Download für Daten hinein und heraus sowie Wiederverbinden per ID für dienstübergreifende Workflows.
Beenden Sie Sandboxes immer explizit, um unnötige Kosten zu vermeiden.
Häufig gestellte Fragen
Ist die Lektion „E2B- und Cloud-Sandbox-Dienste“ kostenlos?
Ja — der vollständige Text von „E2B- und Cloud-Sandbox-Dienste“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „E2B- und Cloud-Sandbox-Dienste“?
E2B SDK, Daytona und verwaltete Sandbox-APIs für Code-Interpreter-Agenten. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Agents zu starten?
Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „E2B- und Cloud-Sandbox-Dienste“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?
Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Docker-basierte Agent-Sandboxes
- VM-Isolierung für hochsichere Code-Agenten
- E2B- und Cloud-Sandbox-Dienste
- Sicherheitsrichtlinien für die Codeausführung