Перейти к содержимому

Ошибка port 49999 not open

Эта ошибка не означает, что нужно открыть порт песочницы для внешнего доступа. На 49999 внутри песочницы работает сервис Code Interpreter. Методы runCode и run_code обращаются к нему для выполнения кода.

Ошибка возникает, когда пользовательский шаблон создан из обычного образа: в нём нет сервиса Code Interpreter или команды, которая запускает этот сервис. Публикация порта эту проблему не решит.

Как исправить

Создавайте пользовательский шаблон на основе управляемого шаблона code-interpreter. Он уже содержит сервис выполнения, команду запуска и проверку готовности.

В примере ниже ключевая строка — fromTemplate("code-interpreter"). Остальные вызовы показывают, что поверх базового шаблона можно установить пакет, собрать собственный шаблон и по-прежнему выполнять код:

mjs
const templateName = process.env.TEMPLATE_NAME ?? "custom-code-interpreter";
const template = Template()
  .fromTemplate("code-interpreter")
  .pipInstall("humanize==4.13.0");

await Template.build(template, templateName);

const sandbox = await Sandbox.create(templateName);
try {
  const execution = await sandbox.runCode(
    "import humanize; humanize.intcomma(1234567)",
  );
  console.log(execution.text);
} finally {
  await sandbox.kill();
}

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