0Pricing
AI Agents · Lekcja

E2B i chmurowe usługi sandboxów

E2B SDK, Daytona i zarządzane interfejsy API sandboxów dla agentów z interpreterem kodu.

E2B i chmurowe usługi sandboxów to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.

Czym jest E2B?

E2B (Environments to Build) to chmurowa usługa piaskownic zaprojektowana specjalnie dla agentów AI wykonujących kod. Udostępnia bezpieczne, izolowane środowiska dostępne za pośrednictwem prostego pakietu SDK dla Pythona lub JavaScriptu, bez konieczności samodzielnego zarządzania Dockerem lub maszynami wirtualnymi.

Każda piaskownica to mikroVM Firecracker działająca w chmurze 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)

Uruchamianie kodu w piaskownicy

Obiekt Sandbox udostępnia metodę run_code(), która wykonuje kod Pythona i zwraca ustrukturyzowane dane wyjściowe obejmujące stdout, stderr oraz obiekty rozszerzonego wyświetlania (wykresy, ramki danych).

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

Obsługa błędów i wyjątków

Jeśli kod zgłosi wyjątek, w polu result.error zostanie umieszczony ślad stosu. Sama piaskownica nadal działa — mogą Państwo wysłać kolejny fragment kodu, aby naprawić błąd.

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)

Przesyłanie plików do piaskownicy

Należy użyć sandbox.files.write(), aby przed uruchomieniem kodu analitycznego przesłać pliki danych (CSV, JSON, obrazy) do systemu plików piaskownicy.

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

Pobieranie plików z piaskownicy

Po zakończeniu obliczeń należy pobrać pliki wyjściowe (raporty, wykresy, przetworzone dane) za pomocą sandbox.files.read(). Plik jest zwracany w postaci bajtów.

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}

Instalowanie pakietów w czasie działania

Piaskownice E2B mają fabrycznie zainstalowanego Pythona. Dodatkowe pakiety można zainstalować za pomocą run_code(), uruchamiając polecenie pip, a następnie używać ich w kolejnych wywołaniach w ramach tej samej sesji piaskownicy.

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)

Piaskownice trwałe i efemeryczne

E2B obsługuje dwa tryby cyklu życia piaskownicy:

  • Efemeryczna: piaskownica jest niszczona po wyjściu z bloku with. Należy używać jej do jednorazowego wykonywania kodu.
  • Trwała: piaskownica pozostaje aktywna między kolejnymi żądaniami. Należy używać jej, gdy stan musi narastać między kolejnymi turami agenta.
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

Ponowne łączenie z działającą piaskownicą

Jeśli proces agenta zostanie uruchomiony ponownie lub identyfikator sandbox_id zostanie przekazany do innej usługi, można ponownie połączyć się z istniejącą piaskownicą za pomocą jej identyfikatora bez utraty stanu.

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

Model cenowy E2B

E2B nalicza opłaty na podstawie sandbox-seconds — czasu działania piaskownicy, a nie tylko czasu wykonywania kodu. Najważniejsze czynniki wpływające na cenę:

  • Czas bezczynności nadal generuje koszty, jeśli piaskownica jest trwała
  • W przypadku piaskownic efemerycznych opłaty są naliczane od utworzenia do zniszczenia
  • Wychodzący ruch sieciowy może być rozliczany osobno
  • Należy użyć timeout, aby ustawić termin automatycznego zakończenia działania
# 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

Używanie E2B w pętli agenta

W agencie wieloturowym należy utworzyć piaskownicę raz i przekazywać jej identyfikator przez pętlę. Każdy fragment kodu wygenerowany przez LLM jest uruchamiany w tej samej sesji, dzięki czemu zmienne i zainstalowane pakiety zachowują się między kolejnymi turami.

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

Alternatywne usługi piaskownic w chmurze

E2B nie jest jedyną opcją. Inne usługi piaskownic w chmurze:

  • Modal: bezserwerowe piaskownice GPU/CPU, niestandardowe obrazy Docker
  • AWS Lambda: izolacja wykonywania dla każdego wywołania (pod spodem Firecracker)
  • Code Interpreter API: wbudowana piaskownica OpenAI dla narzędzi ChatGPT
  • Daytona: środowiska programistyczne z integracją z Git

Co dzieje się ze zmiennymi po zakończeniu działania efemerycznej piaskownicy w menedżerze kontekstu?

Zrozumienie cyklu życia piaskownicy ma kluczowe znaczenie przy podejmowaniu decyzji, kiedy używać piaskownic efemerycznych, a kiedy trwałych w wieloturowych rozmowach z agentem.

Podsumowanie piaskownic E2B w chmurze

E2B udostępnia prosty pakiet SDK do hostowanych w chmurze piaskownic opartych na mikroVM-ach Firecracker. Najważniejsze wzorce to: piaskownice efemeryczne do jednorazowego wykonywania kodu, piaskownice trwałe dla agentów wieloturowych, przesyłanie i pobieranie plików w celu wymiany danych oraz ponowne łączenie za pomocą identyfikatora w przepływach pracy obejmujących wiele usług.

Należy zawsze jawnie kończyć działanie piaskownic, aby uniknąć niepotrzebnych opłat.

Często zadawane pytania

Czy lekcja „E2B i chmurowe usługi sandboxów” jest bezpłatna?

Tak — pełny tekst „E2B i chmurowe usługi sandboxów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.

Co nauczysz się w „E2B i chmurowe usługi sandboxów”?

E2B SDK, Daytona i zarządzane interfejsy API sandboxów dla agentów z interpreterem kodu. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Agents?

Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „E2B i chmurowe usługi sandboxów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?

Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Sandboxy agentów oparte na Dockerze
  2. Izolacja maszyn wirtualnych dla agentów wykonujących kod o wysokim poziomie bezpieczeństwa
  3. E2B i chmurowe usługi sandboxów
  4. Zasady bezpieczeństwa wykonywania kodu
← Powrót do AI Agents