Выполнение кода
🈷️

Выполнение кода

ФКТ ИИ предлагает мощные возможности для выполнения кода прямо в интерфейсе чата, что позволяет воплощать идеи в жизнь, не покидая платформу.

Ключевые возможности

  • Возможность интерпретатора кода: позволяет моделям самостоятельно писать и выполнять код Python в рамках своих ответов. Запускается с помощью инструмента execute_code в нативном (агентном) режиме — это единственный поддерживаемый режим вызова инструмента. Для устаревшего режима по умолчанию существует интеграция на основе XML, но она не поддерживается. При новых развертываниях следует использовать нативный режим.
  • Выполнение кода на Python: запускайте скрипты Python прямо в браузере с помощью Pyodide или на сервере с помощью Jupyter. Поддерживает популярные библиотеки, такие как pandas и matplotlib, без необходимости установки.
  • Рендеринг MermaidJS: создавайте и визуализируйте блок-схемы, диаграммы и другие наглядные изображения с помощью синтаксиса MermaidJS, который автоматически отображается в вашем чате.
  • Интерактивные артефакты: создавайте и используйте в своих разговорах разнообразный контент, например веб-сайты в формате HTML, графику в формате SVG и визуализации на JavaScript.
  • Открыть терминал: подключите API для удаленного выполнения команд в оболочке в качестве инструмента для полного доступа на уровне операционной системы — запускайте любые команды, устанавливайте пакеты и управляйте файлами внутри изолированного контейнера Docker.

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

Выбор серверной части для выполнения кода

ФКТ ИИ поддерживает несколько бэкендов для выполнения кода, каждый из которых подходит для разных сценариев использования. Выбор зависит от того, что вам нужно: облегченная браузерная среда, полноценная среда Python или неограниченный доступ к командной строке.

Pyodide (по умолчанию)

Pyodide запускает Python в браузере через WebAssembly. Он изолирован и безопасен для многопользовательских сред, но имеет некоторые ограничения:

  • Постоянное хранилище файлов — виртуальная файловая система в /mnt/uploads/ основана на IndexedDB (IDBFS). Файлы сохраняются при выполнении кода в рамках одного сеанса и не удаляются при перезагрузке страницы.
  • Встроенный файловый браузер — при включенном интерпретаторе кода на боковой панели управления чатом появляется панель файлового браузера. Вы можете просматривать, предварительно просматривать, загружать, скачивать и удалять файлы в файловой системе Pyodide — терминал не нужен.
  • Доступ к пользовательским файлам — файлы, прикрепленные к сообщениям, автоматически помещаются в /mnt/uploads/ перед выполнением кода, поэтому модель (и ваш код) могут считывать их напрямую.
  • Ограниченная поддержка библиотек — доступна лишь часть пакетов Python. Библиотеки, использующие расширения на языке C или системные вызовы, могут не работать.
  • Нет доступа к оболочке — нельзя запускать команды оболочки, устанавливать пакеты или взаимодействовать с операционной системой.

подсказка

Pyodide хорошо подходит для анализа текста, вычисления хэшей, создания диаграмм, обработки файлов и других автономных задач. Библиотеки для создания диаграмм, такие как matplotlib, генерируют изображения в кодировке base64, которые Open WebUI автоматически сохраняет, загружает в виде файлов и встраивает прямые ссылки на изображения в вывод, чтобы модели могли отображать диаграммы прямо в чате без дополнительной настройки.

Лучше всего подходит только для базового анализа

Pyodide запускает Python через WebAssembly в браузере. ИИ не может устанавливать дополнительные библиотеки помимо небольшого фиксированного набора, перечисленного ниже, — любой код, импортирующий неподдерживаемый пакет, будет работать некорректно. Кроме того, выполнение кода значительно медленнее, чем нативного Python, а большие наборы данных или ресурсоемкие задачи могут привести к превышению лимита памяти в браузере. Pyodide лучше всего подходит для базового анализа файлов, простых вычислений, обработки текста и создания диаграмм. Для более ресурсоемких задач используйте Open Terminal, который обеспечивает полную нативную производительность и неограниченный доступ к пакетам внутри контейнера Docker.

Доступные библиотеки: micropip, requests, beautifulsoup4, numpy, pandas, matplotlib, seaborn, scikit-learn, scipy, regex, sympy, tiktoken, pytz и стандартная библиотека Python. Больше ничего нельзя установить во время выполнения.

Не сочетается с открытым терминалом

Переключатель «Интерпретатор кода» и переключатель «Открыть терминал» не могут быть активны одновременно. При активации одного из них другой деактивируется — они служат для схожих целей, но используют разные серверные части.

Юпитер (Наследие)

Устаревший Движок

Jupyter теперь считается устаревшим механизмом выполнения кода. Для большинства случаев рекомендуется использовать движок Pyodide, а для случаев, когда требуется полноценное выполнение кода на стороне сервера, — Open Terminal. Поддержка Jupyter может быть прекращена в одном из будущих релизов.

Jupyter предоставляет полноценную среду Python и может справиться практически с любой задачей — от создания файлов и установки пакетов до использования сложных библиотек. Однако у него есть существенные недостатки при совместном использовании.

  • Общая среда — все пользователи используют одну и ту же среду выполнения Python и файловую систему.
  • По умолчанию не изолирована — без тщательной настройки пользователи могут получать доступ к системным ресурсам или читать данные других пользователей.
  • Не предназначена для мультиарендности — Jupyter создавался для работы с одним пользователем.

предупреждение

Если вы используете многопользовательское или корпоративное развертывание, Jupyter не рекомендуется в качестве серверной части для выполнения кода. Интеграция Jupyter с Open WebUI подключается к одному общему экземпляру без изоляции по пользователям. Jupyter лучше всего подходит только для однопользовательских систем, систем для разработки или систем с доверенными пользователями.

Открытый терминал

Open Terminal — это легковесный API для удаленного выполнения команд оболочки внутри Docker-контейнера. Он обеспечивает полный доступ на уровне операционной системы — к любому языку, любому инструменту, любой команде оболочки — с изоляцией на уровне контейнера.

  • Полный доступ к оболочке — модели могут устанавливать пакеты, запускать скрипты на любом языке, использовать системные инструменты, такие как ffmpeg, git, curl и т. д.
  • Изоляция в контейнере — работает в собственном Docker-контейнере, отдельно от Open WebUI и других сервисов.
  • Богатый предустановленный набор инструментов — образ Docker содержит Python 3.12, библиотеки для анализа данных, инструменты для сборки, сетевые утилиты и многое другое.
  • Встроенный файловый браузер — просмотр, предварительный просмотр, создание, удаление, загрузка и выгрузка файлов прямо с панели управления в чате.
  • Встроенный многопользовательский режим — один контейнер может обслуживать нескольких пользователей с изолированными учетными записями Linux для каждого из них (подходит для небольших команд, но не для масштабных развертываний).