0Pricing
AI Agents · Урок

E2B и облачные сервисы песочниц

SDK E2B, Daytona и управляемые API песочниц для агентов — интерпретаторов кода.

«E2B и облачные сервисы песочниц» — бесплатный урок AI Agents на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Что такое E2B?

E2B (Environments to Build — «среды для создания») — облачный сервис песочниц, специально разработанный для агентов ИИ, работающих с кодом. Он предоставляет безопасные изолированные среды, доступные через простой SDK для Python/JS, без необходимости самостоятельно управлять Docker или VM.

Каждая песочница — это MicroVM Firecracker в облаке 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)

Запуск кода в песочнице

Объект Sandbox предоставляет метод run_code(), который выполняет код Python и возвращает структурированный результат, включая стандартный вывод, стандартный поток ошибок и объекты расширенного отображения (графики, таблицы данных).

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

Обработка ошибок и исключений

Если код вызывает исключение, result.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)

Загрузка файлов в песочницу

Используйте sandbox.files.write(), чтобы загрузить файлы данных (CSV, JSON, изображения) в файловую систему песочницы перед запуском кода анализа.

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

Скачивание файлов из песочницы

После вычислений получите выходные файлы (отчеты, диаграммы, обработанные данные) с помощью sandbox.files.read(). Файл возвращается в виде байтов.

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}

Установка пакетов во время выполнения

Песочницы E2B поставляются с предварительно установленным Python. Устанавливайте дополнительные пакеты с помощью run_code(), выполняя команду pip, а затем используйте пакет в последующих вызовах в рамках той же сессии песочницы.

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)

Постоянные и эфемерные песочницы

E2B поддерживает два режима жизненного цикла песочницы:

  • Эфемерная: песочница уничтожается после выхода из блока with. Используйте этот режим для однократного выполнения кода.
  • Постоянная: песочница продолжает работать между несколькими запросами. Используйте этот режим, когда состояние должно накапливаться между ходами агента.
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

Повторное подключение к работающей песочнице

Если процесс агента перезапускается или идентификатор песочницы передается другой службе, можно повторно подключиться к существующей песочнице по ее идентификатору без потери состояния.

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

Модель ценообразования E2B

E2B взимает плату за секунды работы песочницы — время, в течение которого песочница существует, а не только время выполнения кода. Основные факторы ценообразования:

  • Время простоя также оплачивается, если песочница постоянная
  • Эфемерные песочницы оплачиваются с момента создания до уничтожения
  • Исходящий сетевой трафик может оплачиваться отдельно
  • Используйте timeout, чтобы задать срок автоматического завершения
# 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

Использование E2B в цикле агента

В многошаговом агенте создайте песочницу один раз и передавайте ее идентификатор через цикл. Каждый фрагмент кода, сгенерированный LLM, выполняется в той же сессии, поэтому переменные и установленные пакеты сохраняются между ходами.

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

Альтернативные облачные сервисы песочниц

E2B — не единственный вариант. Другие облачные сервисы песочниц:

  • Modal: бессерверные песочницы с GPU/CPU и пользовательские образы Docker
  • AWS Lambda: изоляция выполнения при каждом вызове (в основе используется Firecracker)
  • Code Interpreter API: встроенная песочница OpenAI для инструментов ChatGPT
  • Daytona: среды разработки с интеграцией Git

Что происходит с переменными, когда эфемерная песочница E2B выходит из контекстного менеджера?

Понимание жизненного цикла песочницы крайне важно для выбора между эфемерными и постоянными песочницами в многошаговых диалогах с агентом.

Итоги по облачным песочницам E2B

E2B предоставляет простой SDK для облачных песочниц на основе MicroVM Firecracker. Основные подходы: эфемерные песочницы для однократного выполнения кода, постоянные песочницы для многошаговых агентов, загрузка и скачивание файлов для передачи данных в песочницу и из нее, а также повторное подключение по идентификатору для рабочих процессов между службами.

Всегда явно завершайте работу песочниц, чтобы избежать ненужных расходов.

Часто задаваемые вопросы

Урок «E2B и облачные сервисы песочниц» бесплатный?

Да — полный текст урока «E2B и облачные сервисы песочниц» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «E2B и облачные сервисы песочниц»?

SDK E2B, Daytona и управляемые API песочниц для агентов — интерпретаторов кода. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «E2B и облачные сервисы песочниц»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Песочницы агентов на основе Docker
  2. Изоляция в VM для защищённых агентов, работающих с кодом
  3. E2B и облачные сервисы песочниц
  4. Политики безопасности для выполнения кода
← Назад к AI Agents