运行代码

更新时间:
复制 MD 格式

Code Interpreter 通过 run_code() / runCode() 在 Sandbox 内执行代码。Python 是默认语言,其他语言通过 language 参数选择。

创建 Sandbox

使用 code-interpreter-v1 模板创建 Sandbox:

import os

from e2b_code_interpreter import Sandbox

sandbox = Sandbox.create(
    template="code-interpreter-v1",
    api_key=os.environ["E2B_API_KEY"],
    api_url=os.environ["E2B_API_URL"],
    domain=os.environ["E2B_DOMAIN"],
)

TypeScript 示例:

import { Sandbox } from "@e2b/code-interpreter";

const sandbox = await Sandbox.create("code-interpreter-v1", {
  apiKey: process.env.E2B_API_KEY,
  apiUrl: process.env.E2B_API_URL,
  domain: process.env.E2B_DOMAIN,
});

执行 Python 代码

execution = sandbox.run_code("""
import pandas as pd

df = pd.DataFrame({"value": [1, 2, 3]})
print(df)
df["value"].sum()
""")

stdout = "".join(execution.logs.stdout or [])
print(stdout.strip())
print(execution.text)

TypeScript 示例:

const execution = await sandbox.runCode(`
import pandas as pd

df = pd.DataFrame({"value": [1, 2, 3]})
print(df)
df["value"].sum()
`);

const stdout = execution.logs.stdout.join("");
console.log(stdout.trim());
console.log(execution.text);

print() 写入 stdout;最后一个裸表达式写入 execution.text,并可能在 execution.results 中生成结构化结果。

设置超时

长时间任务应显式设置执行超时和请求超时:

execution = sandbox.run_code(
    "import time; time.sleep(5); 42",
    timeout=30,
    request_timeout=60,
)

TypeScript 示例:

const execution = await sandbox.runCode(
  "import time; time.sleep(5); 42",
  {
    timeoutMs: 30_000,
    requestTimeoutMs: 60_000,
  },
);

timeout 限制 Sandbox 内代码执行时长;request_timeout 限制 SDK 请求等待时长。具体参数名以当前语言 SDK 为准。

执行其他语言

云沙箱 Code Interpreter 支持通过 language 参数执行 JavaScript、TypeScript 和 Bash;不支持 Java 和 R。生产接入前建议先用最小代码验证目标语言。

execution = sandbox.run_code(
    'console.log("hello from js")',
    language="javascript",
)

TypeScript 示例:

const execution = await sandbox.runCode('console.log("hello from js")', {
  language: "javascript",
});

更多语言示例参见支持语言

输出行为

  • execution.logs.stdout / execution.logs.stderr 返回标准输出和标准错误。

  • stdout/stderr 片段包含时间戳。

  • execution.execution_count / execution.executionCount 表示当前上下文内的执行序号。

  • execution.text 返回最后一个裸表达式的文本展示。

  • execution.results 返回富结果,例如文本和表格。图表请写入文件后通过 Filesystem 取回。

  • execution.error 返回运行时报错。