Zator: Язык для генеративных AI-пайплайнов

Философия и концепция

Zator представляет собой доменно-ориентированный язык программирования, созданный специально для построения генеративных пайплайнов с использованием больших языковых моделей и моделей генерации изображений. Его философия основана на принципе специализации: вместо универсальных возможностей язык фокусируется на одной задаче — упрощении создания последовательностей генерации контента через интеграцию с KoboldCpp и Stable Diffusion.

Язык позиционируется как «язык описания пайплайнов», который абстрагирует сложность работы с API генеративных моделей. Вместо написания кода для сетевых запросов, парсинга JSON и обработки файлов, разработчик использует высокоуровневые функции вроде generate_text() и generate_img(), позволяющие сосредоточиться на логике генерации контента. Это делает Zator особенно привлекательным для новичков, дизайнеров и создателей контента, которые хотят быстро экспериментировать с ИИ без глубоких знаний в программировании.

Главный компромисс языка — его узкая специализация. Zator не предназначен для веб-разработки, системного программирования или решения алгоритмических задач вне контекста генеративного ИИ. Его ценность заключается не в универсальности, а в способности решать конкретную задачу с минимальным количеством кода.

Архитектура и интеграция

Клиент-серверная модель

Архитектура Zator построена вокруг глубокой интеграции с сервером KoboldCpp, который выступает в роли бэкенда для генерации. Интерпретатор Zator (обычно zator.exe) не содержит моделей машинного обучения — он работает как легковесный клиент, преобразующий команды языка в HTTP-запросы к API KoboldCpp. Исходный код интерпретатора и примеры использования можно найти в открытом репозитории (https://github.com/4ds-dev/zator).

При вызове generate_text() интерпретатор отправляет запрос на эндпоинт /api/v1/generate, а при вызове generate_img() — на /sdapi/v1/txt2img. Это позволяет пользователю получать доступ ко всей мощи настроек KoboldCpp (температура, коэффициент повторения, top_p и другие параметры) через простой синтаксис без работы с низкоуровневыми деталями.

Кроссплатформенность и зависимости

Начиная с версии 0.0.2, Zator поддерживает кроссплатформенную работу на Windows 10/11, Linux и macOS. Для работы необходимы следующие зависимости:

  • Запущенный экземпляр KoboldCpp с включенными API.
  • Системные библиотеки: libpng, zlib, curl (для обработки изображений и HTTP-запросов).
  • Доступ к GPU рекомендуется для генерации изображений.

По умолчанию интерпретатор подключается к локальному серверу http://localhost:5001, но адрес может быть изменен в настройках.

Синтаксис и структура

Типизация и переменные

Синтаксис Zator спроектирован для максимальной простоты и читаемости. Все переменные объявляются через ключевое слово var. Поддерживаются три основных типа данных:

  • Текст (VAR_STRING): для промптов, сообщений и путей.
  • Целое число (VAR_INT): для счетчиков, размеров изображений и токенов.
  • Изображение (VAR_IMAGE): для ссылок на сгенерированные или обработанные изображения.

Управляющие конструкции

Управление потоком выполнения реализовано через условные операторы if/else if/else и циклы repeat.

  • Условия: Поддерживают операторы сравнения (==, !=, >, <, >=, <=) и логическое связывание and. Блоки кода могут содержать несколько команд при использовании фигурных скобок {}.
  • Циклы: Ключевое слово repeat позволяет создавать циклы, внутри которых доступно команду break для досрочного прерывания.
  • Ограничения: Вложенные циклы repeat не поддерживаются.

Уникальные особенности

F-строки для динамического контента

Главной особенностью Zator является повсеместная поддержка F-строк — форматированных строк с интерполяцией переменных через фигурные скобки {имя_переменной}. В версии 0.0.2 поддержка улучшена: F-строки работают везде, где используется строковый литерал, включая аргументы функций, пути к файлам, контекст генерации и параметры пользовательских функций. Для вывода литеральных фигурных скобок используется экранирование \{.

Модульность и функции

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

  • Объявление: def function_name(param1, param2, ...)
    {
    ...
    }
  • Вызов: call function_name(arg1, arg2, ...)
  • Параметры: До 10 параметров, передаются по значению, поддерживают F-строки.
  • Импорт: Команда #import "file.zator" позволяет включать код из других файлов, обеспечивая модульную организацию проектов.
  • Безопасность: Рекурсия обнаруживается и блокируется для защиты от бесконечных циклов.

Формат файлов .zator

Используется расширение .zator для исходных файлов. Это простой текстовый файл в кодировке UTF-8. Расширение служит маркером принадлежности файла к языку и помогает поддерживать порядок в проектах, где скрипты генерируют множество выходных файлов.

Встроенные функции

Генерация контента

Zator предоставляет набор функций для работы с генеративными моделями:

  • generate_text(prompt, context, max_tokens) — создает текст на основе промпта с поддержкой контекста.
  • generate_img(prompt, context, width, height) — генерирует изображения через Stable Diffusion. Рекомендуется использовать размеры, кратные 64 пикселям (например, 512x512).

Постобработка изображений

Язык включает встроенные функции для обработки изображений без необходимости внешних инструментов:

  • chroma_key_crop(source_image, x, y, tolerance) — выполняет эффект «зеленого экрана», удаляя фон по цветовому ключу.
  • scale_to(source_image, width, height) — изменяет размер изображения с использованием алгоритма ближайшего соседа для сохранения четкости.

Ввод-вывод и системные команды

Для управления результатами и взаимодействия с ОС доступны:

  • save_img() и save_txt() — сохранение изображений (PNG) и текста в файлы относительно директории скрипта.
  • print() — вывод сообщений в консоль.
  • input() — получение данных от пользователя во время выполнения.
  • exec_cmd("command") — функция для выполнения команд командной строки (например, ls, cat, pwd). Позволяет интегрировать скрипты Zator с системными утилитами.
    ⚠ Требует осторожности во избежание инъекций команд.

Сетевые взаимодействия

  • request(url, method, response, body) — функция для выполнения HTTP-запросов (GET, POST, PUT, DELETE). Позволяет взаимодействовать с внешними API (например, отправка уведомлений в Telegram или Discord) напрямую из скрипта.

Пример использования

Для новичка работа с Zator начинается с настройки локального сервера KoboldCpp. Затем необходимо скачать интерпретатор с официального сайта (https://zapor.2bd.net/) или из репозитория на GitHub.

Пример скрипта на версии 0.0.2 с использованием функций и системных команд:

# Импорт утилит #import "utils.zator" # Определение функции def create_character(name, char_class) { var prompt = "Портрет персонажа: {name}, класс: {char_class}, цифровое искусство" var img = generate_img(prompt, context, 512, 512) save_img(img, "characters/{name}.png") print("Персонаж {name} создан!\n") } context = "Вы — дизайнер игровых персонажей." # Основной код call create_character("Гаррет", "Вор") call create_character("Элеонора", "Маг") # Системная команда var current_dir = exec_cmd("pwd") print("Рабочая директория: {current_dir}")

Этот подход позволяет создавать модульные и мощные пайплайны, сохраняя минимализм синтаксиса.

Ограничения и рекомендации

Ограничения версии 0.0.2:

  • Вложенные циклы repeat не поддерживаются.
  • Все пути к файлам относительные (базовая директория — папка скрипта).
  • Для генерации изображений обязательно наличие работающего SD API в KoboldCpp.
  • Функция request требует установленного curl.
  • При использовании exec_cmd необходимо проверять пользовательский ввод.

Рекомендации: * Используйте умеренные значения `max_tokens` (до 500) для стабильности. * Для `chroma_key_crop` выбирайте пиксели в углах изображения для определения цвета фона. * Используйте функции с параметрами для переиспользования кода.

Заключение

Zator версии 0.0.2 — это зрелый специализированный инструмент для быстрого создания генеративных пайплайнов. Его сила — в радикальном упрощении доступа к мощным технологиям ИИ через минималистичный синтаксис, дополненный теперь возможностями модульности (функции, импорт), сетевого взаимодействия и системной интеграции.

Для новичков, желающих экспериментировать с генерацией текста и изображений без погружения в сложности веб-разработки, Zator предлагает беспрецедентно низкий порог входа. Для опытных разработчиков он служит инструментом быстрого прототипирования. Следить за развитием проекта можно в репозитории на GitHub, а обсудить идеи или задать вопросы — в Telegram-канале автора (https://t.me/test4ds).