Представьте, что вы разрабатываете интеллектуального агента, который должен отвечать на вопросы клиента на основе загруженного CSV-файла. Модель языка (LLM) не может просто «угадать» ответ; ей нужно выполнить вычисления, проанализировать данные и вернуть точный результат. Где именно должен запускаться этот код? Этот вопрос является одним из самых критичных при построении современных AI-агентов, так как от выбора инфраструктуры зависит безопасность, стоимость и скорость работы вашего приложения.
Существует два фундаментальных подхода к решению этой задачи. Первый — запускать код самостоятельно. Это означает использование платформ для песочниц, таких как E2B или Modal, или развертывание собственных контейнеров Docker. Вы берете на себя ответственность за изоляцию от базы данных и интернета, ограничение времени выполнения и постоянное обновление образов. Второй подход — использовать инструменты серверного выполнения кода (server-side code execution). В этом случае вы просто добавляете инструмент в свой API-запрос, модель решает, когда ему нужно что-то выполнить, а провайдер запускает команды в своей собственной песочнице и возвращает результат модели в рамках того же запроса. Песочница здесь — это изолированный Linux-контейнер с собственной файловой системой, лимитом времени и отсутствием сетевого доступа по умолчанию.
В этой статье мы подробно разберем, как работают серверные инструменты выполнения кода, кто из крупных игроков (OpenAI, Anthropic, Google и OpenRouter) предлагает такие решения сегодня, какие компромиссы они несут, и почему в некоторых сценариях вам все же придется управлять инфраструктурой самостоятельно. Мы проанализируем задержки, стоимость, безопасность и технические детали, чтобы вы могли принять взвешенное решение для вашего проекта.

01Что такое серверное выполнение кода и как это работает
Важно сразу прояснить фундаментальный момент: сама языковая модель никогда не выполняет код самостоятельно. Когда модель «вызывает инструмент» (tool call), она генерирует запрос, указывающий название инструмента и аргументы. Задача «выполнить» этот запрос ложится на внешнюю систему. При клиентском инструменте (client-side tool) эту работу выполняет ваш код или фреймворк агента. Ваше приложение получает вызов, запускает его и отправляет результат обратно в следующем запросе к модели. Это создает цикл «запрос-ответ», который увеличивает задержку.
Серверное выполнение кода меняет эту парадигму. Провайдер запускает вызов на своей инфраструктуре и возвращает результат модели в том же самом запросе. Ваше приложение не нуждается в обработчике для этого инструмента. Вы, вероятно, уже используете инструменты, работающие по этому принципу, даже не задумываясь об этом. Например, инструмент Web search позволяет модели искать информацию в интернете, а web fetch — читать содержимое URL. В обоих случаях вы добавляете одну запись в запрос, а провайдер делает всю остальную работу. Выполнение кода применяет тот же паттерн к запуску команд.
Процесс превращения вызова инструмента в выполняемую команду выглядит следующим образом:
- Вы включаете инструмент в массив
toolsвашего запроса. - Модель решает, что ей нужно что-то выполнить, и генерирует вызов, содержащий одну или несколько команд оболочки (shell commands).
- Провайдер выполняет эти команды по порядку внутри изолированного контейнера (песочницы).
- Стандартный вывод (stdout), стандартный вывод ошибок (stderr) и результат выполнения (код выхода или таймаут) каждой команды возвращаются модели.
- Модель читает результаты, либо отвечает вам, либо запускает дополнительные команды в рамках того же запроса.
Шаги со второго по пятый повторяются до тех пор, пока модель не даст окончательный ответ. Именно в этом цикле модель может проверять свою работу против реальных выходных данных, а не гадать. Это ключевое преимущество, делающее инструменты выполнения кода незаменимыми для задач, требующих точности. Однако этот цикл необходимо ограничивать. Поле max_tool_calls устанавливает максимальное количество шагов с серверными инструментами, которые может сделать один запрос. В нашем случае (OpenRouter) как значение по умолчанию, так и максимальное значение составляет 30 вызовов.
02Кто предлагает хостинговое выполнение кода сегодня
На рынке сегодня выделяются четыре основных провайдера, предлагающих встроенные инструменты выполнения кода: OpenAI, Anthropic, Google и OpenRouter. Важно отметить, что SDK для агентов и специализированные платформы песочниц (sandbox platforms) — это отдельные категории, которые мы рассмотрим ниже. Главное различие между этими четырьмя провайдерами заключается в том, для каких моделей они запускают код.
OpenAI: Хостинговая оболочка для своих моделей
Инструмент shell от OpenAI запускает команды в контейнере, управляемом самой OpenAI, и доступен через Responses API. Согласно документации, хостинговая среда работает на базе Debian 12 с рабочей директорией по умолчанию /mnt/data. Команды выполняются без прав sudo, интерактивные сессии TTY не поддерживаются. Среди предустановленных языков: Python 3.11, Node.js 22.16, Java 17, PHP 8.2, Ruby 3.1 и Go 1.23.
Хостинговые контейнеры по умолчанию не имеют исходящего сетевого доступа. Чтобы его включить, администратор организации должен настроить белый список в панели управления OpenAI, а вы должны установить параметр network_policy в среде контейнера в запросе. Контейнер можно использовать повторно в нескольких запросах, передавая его id через container_reference, а срок его жизни устанавливается при создании. Также у OpenAI есть отдельный инструмент code interpreter для Python, который работает по схожему принципу, но имеет свои особенности интеграции.
Anthropic: Python и Bash для моделей Claude
Инструмент code execution от Anthropic запускает Python и Bash в песочнице, управляемой Anthropic, через Messages API. Документированная среда представляет собой Linux x86_64 контейнер с Python 3.11, 5 ГБ оперативной памяти, 5 ГБ хранилища рабочего пространства и одним ядром CPU. Доступ в интернет отключен, и исходящие соединения запрещены. Это означает, что Claude работает только с предустановленными библиотеками и не может устанавливать пакеты во время выполнения.
Существуют три версии инструмента, и каждая поддерживаемая модель принимает все три. Версия code_execution_20250825 поддерживает команды Bash и операции с файлами. Более новая версия code_execution_20260120 добавляет состояние интерпретатора Python, которое сохраняется между запросами, что зависит от программируемого вызова инструментов Anthropic и недоступно для Claude Haiku 4.5. Контейнеры истекают через 30 дней после создания. После примерно 5 минут простоя контейнер сохраняется в чекпоинт, и запрос с его id в течение 30-дневного окна восстанавливает его.
Google: Python для моделей Gemini
Инструмент code execution от Google запускает Python в управляемой Google песочнице, что активируется добавлением записи code_execution в массив инструментов запроса. Документация гласит, что модель может генерировать и выполнять только Python. Среда кода имеет максимальное время выполнения 30 секунд, и вы не можете устанавливать свои собственные библиотеки. Google публикует список библиотек, включенных в среду.

03OpenRouter: Хостинговая оболочка для любой модели
Три инструмента выше работают только с моделями одной компании. Наш инструмент работает с любой моделью на Responses и Messages API, потому что мы запускаем песочницу на уровне маршрутизации, а не внутри одного провайдера моделей. Мы поставляем два инструмента выполнения кода:
- openrouter:shell — зеркалит структуру хостингового инструмента shell от OpenAI и работает как на Responses API, так и на Messages API.
- openrouter:bash — зеркалит структуру инструмента bash от Anthropic и работает только на Messages API.
Оба инструмента находятся в бета-версии, поэтому API может измениться. Песочничное выполнение работает только на глобальном эндпоинте openrouter.ai. Эндпоинты в регионах не предлагают инструмент shell, а Chat Completions отклоняет оба инструмента с ошибкой 400, указывая API, которые их поддерживают.
Установите engine в openrouter для любого из инструментов, и команды будут выполняться в нашей песочнице. Значение по умолчанию engine — auto. Для openrouter:shell значение auto сохраняет нативную хостинговую оболочку провайдера, если она существует, и маршрутизирует в нашу песочницу в противном случае. Для openrouter:bash значение auto возвращает вызов инструмента вашему приложению для выполнения на стороне клиента, и ничего не выполняется на наших серверах.
Пример запуска команды в нашей песочнице
Ниже приведен полный запрос, который запускает две команды и читает результаты обратно.
import os
import requests
response = requests.post(
"https://openrouter.ai/api/v1/responses",
headers={
"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"
},
json={
"model": "anthropic/claude-sonnet-4.5",
"input": "Run `cat /etc/os-release` and `python3 --version`, then tell me the OS and Python version in one sentence.",
"tools": [
{
"type": "openrouter:shell",
"parameters": {
"engine": "openrouter"
}
}
],
},
)
for item in response.json()["output"]:
if item["type"] == "openrouter:shell":
print(item["container_id"], item["action"]["commands"])
for result in item["output"]:
print(result["stdout"], result["outcome"])Мы запустили этот запрос 22 сентября 2026 года. Модель отправила обе команды в одном вызове shell, и каждая команда вернулась со своим собственным результатом. Полный вывод os-release занимает несколько строк, и здесь он обрезан до первых двух строк.
{
"type": "openrouter:shell",
"container_id": "sess_art10-418b8597e044",
"action": {
"commands": [
"cat /etc/os-release",
"python3 --version"
]
},
"output": [
{
"stdout": "PRETTY_NAME=\"Ubuntu 22.04.5 LTS\"\nNAME=\"Ubuntu\"\n",
"stderr": "",
"outcome": {
"type": "exit",
"exit_code": 0
}
},
{
"stdout": "Python 3.11.14",
"stderr": "",
"outcome": {
"type": "exit",
"exit_code": 0
}
}
]
}Песочница сообщила об Ubuntu 22.04.5 LTS с Python 3.11.14 на эту дату. Образ времени выполнения может измениться, поэтому читайте версию из контейнера, а не жестко кодируйте ее. Справочник по серверным инструментам (server tools reference) охватывает остальные параметры.

04SDK для агентов, оборачивающие песочницу
Если вы строите агента на базе SDK, а не вызываете API напрямую, некоторые SDK оборачивают один из этих инструментов. Например, OpenAI Agents SDK поставляется с CodeInterpreterTool, который запускает код в песочнице OpenAI, и ShellTool, который запускает код либо в вашей локальной среде, либо в контейнере, размещенном OpenAI, в зависимости от того, как вы настроили его среду. Проверьте, какой режим вы настроили, прежде чем предполагать, что команда была запущена удаленно.
С нашей стороны, openrouter:shell — это запись в массиве tools, как и любой другой, поэтому он добавляется в цикл OpenRouter Agent SDK так же, как и в сырой запрос. Это обеспечивает унификацию опыта разработки независимо от того, используете ли вы нативные API или высокоуровневые фреймворки.
Что все еще требует собственной песочницы
Хостинговый инструмент подходит для коротких, ограниченных задач, таких как запуск скрипта, преобразование файла или проверка результата. Все, что требует конкретного базового образа или GPU, выходит за рамки всех четырех хостинговых инструментов и требует платформы песочницы, которой вы управляете самостоятельно. Если вам нужно обучать модели, запускать тяжелые вычисления с графикой или использовать специфические зависимости, которые невозможно установить в ограниченной среде, вам придется развертывать собственные серверы.
05Сравнение возможностей и ограничений
Каждая ячейка в таблице сравнения основана на документации вендора, за исключением ячейки времени выполнения OpenRouter, которая показывает, что сообщила песочница при запуске вышеуказанного запроса. Столбец «Self-managed» описывает песочницу, которую вы запускаете сами, а не какую-либо одну платформу.
| Параметр | OpenRouter | OpenAI | Anthropic | Self-managed | |
|---|---|---|---|---|---|
| Кто запускает | Мы | OpenAI | Anthropic | Вы | |
| Модели | Любая модель на Responses и Messages API | Модели OpenAI | Модели Claude | Модели Gemini | Любая модель |
| API | Responses и Messages. openrouter:bash только Messages | Responses | Messages | Gemini API | Любой |
| Языки | Любая команда shell. Ubuntu 22.04.5 с Python 3.11.14 (на 22.09.2026) | Команды shell на Debian 12. Python, Node.js, Java, PHP, Ruby, Go предустановлены | Python и Bash | Только Python | Что угодно, что вы построите |
| Файловая система | Собственная файловая система контейнера, привязанная к вашему аккаунту и рабочей области. Файлы под домашней директорией сохраняются после каждой команды | Собственная файловая система контейнера с рабочей директорией по умолчанию /mnt/data. Данные удаляются при истечении контейнера | Изолированный контейнер с 5 ГБ хранилища рабочего пространства. Контейнеры истекают через 30 дней после создания | Не задокументировано | Зависит от вашего образа и монтирований |
| Исходящая сеть | Отключена по умолчанию. Белый список до 50 хостов на портах 80 и 443 | Отключена по умолчанию. Белый список организации плюс per-request network_policy | Отключена | Не задокументировано | Настраивается вами |
| Установка пакетов во время выполнения | Да, с хостами пакетов в белом списке | Да, с хостами пакетов в белом списке | Нет | Нет | Да |
| Персистентность сессии | Контейнер привязан по id. Спит после 5 минут простоя. Сохраненные файлы хранятся 30 дней после последнего использования | Контейнер используется повторно по id через container_reference. Истечение устанавливается при создании контейнера | Контейнер восстанавливается по id в течение 30 дней после создания. Состояние интерпретатора сохраняется на code_execution_20260120 и новее с программируемым вызовом инструментов | Максимальное время выполнения 30 секунд на выполнение. Персистентность состояния между запросами не задокументирована | До предела каждой платформы |
| Модель стоимости | Токены инференса плюс время песочницы по $0.0001 в секунду, с минимумом 30 секунд для нового или спящего контейнера | Не указано в документации инструмента shell | 1 550 бесплатных часов на организацию в месяц, затем $0.05 в час за контейнер, с минимумом 5 минут на выполнение | Дополнительной платы нет. Сгенерированный код и вывод тарифицируются как токены | Время вычислений, пока работает песочница |

06Что обеспечивает наша песочница: Безопасность и лимиты
Суть песочницы в том, что вам не нужно доверять модели. Команда, которую вы никогда не намеревались запускать, не может получить доступ к сети или к контейнерам других пользователей, и она останавливается по жесткому лимиту времени выполнения и объема вывода. Все в этом разделе описывает нашу песочницу. Таблица выше показывает, где отличаются остальные три.
Лимиты, применяемые к каждой команде
Мы запускаем каждую команду в изолированном контейнере, отдельном от инфраструктуры, обслуживающей ваш запрос, и от вашей машины, и привязанном к вашему аккаунту и рабочей области. Вы устанавливаете свои собственные потолки с помощью timeout_ms для того, как долго команда может выполняться, и max_output_length для того, сколько она может напечатать.
timeout_ms по умолчанию равен 120 000 мс и не может превышать 300 000 мс. max_output_length по умолчанию равен 16 384 символам на поток и не может превышать 65 536. Вызов shell с более чем 100 командами будет отклонен.
Исходящий сетевой доступ отключен, если вы не включите его. Мы проверили это 22 сентября 2026 года, отправив запрос без network_policy и попросив модель получить https://example.com с помощью curl, напечатав только код HTTP и сдавшись после 5 секунд. Команда напечатала 000, что является тем, что печатает curl, когда ответ не приходит, и завершилась с кодом 28, таймаутом curl.
{
"stdout": "000",
"stderr": "curl: (28) Failed to connect to example.com port 443 after 5206 ms: Connection timed out",
"outcome": {
"type": "exit",
"exit_code": 28
}
}Чтобы открыть сеть, установите белый список network_policy до 50 имен хостов или глобальных шаблонов. Доступны только порты 80 и 443, и политика фиксируется при запуске контейнера. Для pip install нужны как pypi.org, так и files.pythonhosted.org в белом списке.
Инъекция промптов и ограничения песочницы
Предоставление модели оболочки подвергает вас риску инъекции промптов. Если ваш агент читает веб-страницу, тикет поддержки или файл, загруженный кем-то другим, злоумышленник может скрыть инструкции в этом тексте, говорящие модели о том, что нужно сделать что-то вредоносное. Песочница ограничивает масштаб ущерба, изолируя выполнение, но не предотвращает саму попытку. Поэтому важно всегда проверять входные данные и использовать принципы наименьших привилегий.
07Что это значит на практике
Выбор между хостинговым и собственным решением зависит от ваших конкретных потребностей. Если вы строите агента для обработки документов, анализа CSV-файлов или выполнения простых скриптов, хостинговые инструменты от OpenRouter, OpenAI, Anthropic или Google предоставляют быстрый и простой путь. Они устраняют необходимость управления инфраструктурой, позволяя вам сосредоточиться на логике агента.
OpenRouter выделяется своей универсальностью, позволяя использовать любую модель на рынке с единым интерфейсом выполнения кода. Это особенно полезно для проектов, где требуется гибкость в выборе LLM или где вы работаете с несколькими провайдерами. Стоимость также остается конкурентной: $0.0001 в секунду с минимальным порогом в 30 секунд делает этот инструмент экономически эффективным для большинства задач.
Однако, если ваши задачи требуют GPU, специфических библиотек, длительного времени выполнения или полного контроля над средой, вам придется развернуть собственную песочницу. Это потребует больше усилий по настройке и поддержке, но даст необходимую свободу для сложных вычислительных задач.
В конечном итоге, серверное выполнение кода — это мощный инструмент, который расширяет возможности AI-агентов, позволяя им взаимодействовать с реальным миром данных. Понимание нюансов каждого провайдера поможет вам выбрать оптимальное решение для вашего проекта, балансируя между удобством, стоимостью и контролем.
08Часто задаваемые вопросы
Можно ли использовать серверное выполнение кода с любой моделью?
Да, если вы используете OpenRouter. Его инструменты openrouter:shell и openrouter:bash работают с любой моделью на Responses и Messages API. Другие провайдеры ограничивают выполнение кода своими собственными моделями.
Как обеспечивается безопасность в хостинговых песочницах?
Песочницы изолированы, не имеют доступа к сети по умолчанию и имеют жесткие лимиты времени выполнения и объема вывода. Однако инъекция промптов остается риском, поэтому входные данные должны проверяться.
Сколько стоит использование серверного выполнения кода?
Стоимость варьируется. OpenRouter берет $0.0001 в секунду с минимумом 30 секунд. Anthropic предлагает 1550 бесплатных часов в месяц, затем $0.05 в час. Google не взимает дополнительной платы, тарифицируя только токены. OpenAI не раскрывает стоимость в документации инструмента shell.
Когда мне нужно использовать собственную песочницу?
Вам нужна собственная песочница, если вам требуются GPU, специфические базовые образы, длительные сессии или полный контроль над средой. Хостинговые инструменты подходят для коротких, ограниченных задач.
09Ссылки
- OpenRouter Server Tools Reference
- OpenAI Shell Tool Documentation
- Anthropic Code Execution Tool Documentation
- Google Code Execution Tool Documentation
Источник: OpenRouter ↗
