Skip to content

Код-блоки

Ворнинг

Хеви ворк ин прогресс.

Без знания JS даже не лезь.

Код-блоки позволяют модифицировать поведение бизнес логики через функции-хуки на js.

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

  • Каждый код-блок представляет собой файл с кодом, в котором должны быть определены глобальные функции с определенными именами
  • Код запускается в изолированном воркере, так что не имеет доступа к контексту страницы
  • Помимо предзаданных имен, в блоке могут быть объявлены любые глобальные переменные и функции
  • Если у промпта несколько код-блоков с одинаковыми хуками, то они будут выполняться последовательно. Каждый следующий хук будет принимать на вход результат выполнения предыдущего
  • Посмотреть какие аргументы принимает на вход каждый хук можно в исходном коде, либо по подсказкам в редакторе
  • Хук должен возвращать тот же объект, которые принимает на вход. Внутри объекта все данные должны быть сериализуемы

На данный момент реализовано 2 хука:

НазваниеОписание
preHistoryМодифицирует историю перед отправкой в LLM. Срабатывает 1 раз на каждый {{history}} в запросе. Принимает на вход полный массив сообщений.
onMessageНа лету модифицирует сообщение которое приходит от LLM. Если включен стримминг - срабатывает на каждый полученный чанк. Принимает на вход целое сообщение, а не только полученный чанк

Пример

На скриншоте выше представлен код-блок, который реализует один из подходов для обхода внешнего фильтра для Gemini. Как он работает:

  • Перед отправкой запроса в LLM через хук preHistory во всех сообщениях все пробелы заменяются на U+2800
  • При получении ответа, все U+2800 меняются обратно на нормальные пробелы

Released under the GNU License.