Skip to main content
Действие «Выполнение кода» позволяет агентам писать и запускать код на Python для более сложных задач, таких как вычисления, анализ данных и построение визуализаций.

Возможности

  • Вычисления: точное выполнение больших или сложных математических операций
  • Анализ данных: анализ файлов, предоставленных пользователем (например, CSV и таблиц)
  • Создание файлов: создание и возврат файлов, таких как отчёты, изменённые наборы данных или файлы экспорта
  • Визуализации: построение графиков и диаграмм, которые отображаются прямо в интерфейсе чата

Настройка

Настройка не требуется. Выполнение кода — встроенное действие, доступное во всех развёртываниях Yahont сразу. Чтобы включить его для конкретного агента, убедитесь, что действие Выполнение кода включено в настройках агента.

Подключение и отключение сервера выполнения кода

Сервер выполнения кода подключён по умолчанию. Вы можете отключить или снова подключить его в любой момент в панели администратора. На этой странице также отображаются состояние сервера и статус подключения. Выполнение кода

Как это работает

Код выполняется в защищённой изолированной среде Python со следующими свойствами:
  • Предустановленные библиотеки, такие как numpy, pandas, scipy и matplotlib
  • Сетевой доступ отключён, а доступ к файловой системе ограничен в целях безопасности
  • Ограничения ресурсов и тайм-ауты, предотвращающие неконтролируемое выполнение
LLM сама решает, когда вызывать выполнение кода, исходя из запроса пользователя, — явный вызов не нужен.

Выполнение кода в Docker Compose

В docker-compose.yml за выполнение кода отвечает сервис code-interpreter. Сервер API обращается к нему по адресу http://code-interpreter:8000. Этот адрес задаёт переменная CODE_INTERPRETER_BASE_URL. Версию образа задаёт переменная CODE_INTERPRETER_IMAGE_TAG.
Сервис запускается от пользователя root, и в него монтируется сокет Docker (/var/run/docker.sock). Это режим docker-out-of-docker. Доступ к сокету даёт контейнеру доступ к демону Docker на хосте. Разворачивайте сервис только на сервере, где вы доверяете выполняемому коду и его пользователям.
  • Первый запуск. Сервис скачивает образ исполнителя и до окончания загрузки не отвечает на запросы. Проверка состояния ждёт до 120 секунд.
  • Проверка состояния. Она требует доступного демона Docker и образа исполнителя на хосте. Если вы удалите образ (например, командой docker system prune --all), сервис не восстановится, пока вы не перезапустите контейнер.
  • Rootless Docker в Linux. Задайте DOCKER_SOCK_PATH=${XDG_RUNTIME_DIR}/docker.sock.
  • Режим docker-in-docker. В файле есть закомментированный вариант с privileged: true. Чтобы использовать его, раскомментируйте эту строку и закомментируйте монтирование сокета.