E2B e serviços de ambientes isolados na nuvem
SDK E2B, Daytona e APIs gerenciadas de ambientes isolados para agentes intérpretes de código.
E2B e serviços de ambientes isolados na nuvem é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.
O que é o E2B?
E2B (Environments to Build) é um serviço de ambientes isolados na nuvem projetado especificamente para agentes de código de IA. Ele fornece ambientes seguros e isolados acessíveis por meio de um SDK simples para Python/JS, sem que você precise gerenciar Docker ou VMs.
Cada ambiente isolado é uma microVM do Firecracker na nuvem da 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)Execução de código em um ambiente isolado
O objeto Sandbox fornece um método run_code() que executa Python e retorna uma saída estruturada, incluindo saída padrão, saída de erro e objetos de exibição avançada (gráficos, quadros de dados).
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 errorTratamento de erros e exceções
Se o código levantar uma exceção, result.error será preenchido com o rastreamento da pilha. O próprio ambiente isolado continua em execução — você pode enviar código adicional para corrigir o erro.
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)Envio de arquivos para o ambiente isolado
Use sandbox.files.write() para enviar arquivos de dados (CSV, JSON, imagens) ao sistema de arquivos do ambiente isolado antes de executar o código de análise.
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']"]Download de arquivos do ambiente isolado
Depois da computação, recupere os arquivos de saída (relatórios, gráficos, dados processados) com sandbox.files.read(). O arquivo é retornado 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}Instalação de pacotes em tempo de execução
Os ambientes isolados da E2B vêm com Python pré-instalado. Instale pacotes adicionais com run_code() executando um comando pip e, em seguida, use o pacote em chamadas posteriores dentro da mesma sessão do ambiente isolado.
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)Ambientes isolados persistentes e efêmeros
A E2B oferece dois modos de ciclo de vida para ambientes isolados:
- Efêmero: o ambiente isolado é destruído quando o bloco
withtermina. Use para execução de código única. - Persistente: o ambiente isolado permanece ativo entre várias solicitações. Use quando o estado precisar se acumular entre os turnos do 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 cleanupReconexão a um ambiente isolado em execução
Se o processo do agente for reiniciado ou o identificador do ambiente isolado for passado a outro serviço, você poderá se reconectar a um ambiente isolado existente usando seu ID, sem perder o 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 preços da E2B
A E2B cobra com base nos segundos de ambiente isolado — o tempo em que um ambiente isolado permanece ativo, não apenas o período em que o código está em execução. Principais fatores de preço:
- O tempo ocioso ainda gera custos se o ambiente isolado for persistente
- Ambientes isolados efêmeros são cobrados desde a criação até a destruição
- A saída de dados pela rede pode ser cobrada separadamente
- Use
timeoutpara definir um prazo de encerramento automático
# 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 stepUso da E2B em um loop de agente
Em um agente com várias interações, crie o ambiente isolado uma vez e passe seu ID pelo loop. Cada fragmento de código gerado pelo LLM é executado na mesma sessão, portanto as variáveis e os pacotes instalados persistem entre os 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.contentServiços alternativos de ambientes isolados na nuvem
A E2B não é a única opção. Outros serviços de ambientes isolados na nuvem:
- Modal: ambientes isolados sem servidor para GPU/CPU, com imagens Docker personalizadas
- AWS Lambda: isolamento da execução por chamada (Firecracker nos bastidores)
- Code Interpreter API: ambiente isolado integrado da OpenAI para ferramentas do ChatGPT
- Daytona: ambientes isolados de desenvolvimento com integração ao Git
O que acontece com as variáveis quando um ambiente isolado efêmero da E2B sai do seu gerenciador de contexto?
Compreender o ciclo de vida do ambiente isolado é fundamental para decidir quando usar ambientes isolados efêmeros ou persistentes em conversas de agente com várias interações.
Recapitulação dos ambientes isolados da E2B na nuvem
A E2B fornece um SDK simples para ambientes isolados de microVMs do Firecracker hospedados na nuvem. Padrões importantes: ambientes isolados efêmeros para código executado uma única vez, ambientes isolados persistentes para agentes com várias interações, envio/download de arquivos para entrada e saída de dados e reconexão por ID para fluxos de trabalho entre serviços.
Sempre encerre explicitamente os ambientes isolados para evitar cobranças desnecessárias.
Perguntas Frequentes
A aula “E2B e serviços de ambientes isolados na nuvem” é grátis?
Sim — o texto completo de “E2B e serviços de ambientes isolados na nuvem” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.
O que vou aprender em “E2B e serviços de ambientes isolados na nuvem”?
SDK E2B, Daytona e APIs gerenciadas de ambientes isolados para agentes intérpretes de código. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Agents?
Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “E2B e serviços de ambientes isolados na nuvem”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Agents?
Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Ambientes isolados para agentes baseados em Docker
- Isolamento por VM para agentes de código de alta segurança
- E2B e serviços de ambientes isolados na nuvem
- Políticas de segurança para execução de código