Character.AI совершила значительный скачок в области проектирования подсказок, осознав свою важную роль в своей деятельности. Подход компании к построению подсказок является исключительно всеобъемлющим, принимая во внимание множество факторов, таких как модальности разговора, текущие эксперименты, профили персонажей, типы чатов, атрибуты пользователей, закрепленные воспоминания, персоны пользователей и целые истории разговоров. Этот уровень детализации обусловлен огромным объемом подсказок, которые они генерируют ежедневно — миллиарды — и необходимостью максимизировать потенциал расширения окон контекста LLM. Столкнувшись с разнообразными вариантами использования, Character.AI выступила за смену парадигмы от традиционной «проектирования подсказок» к «дизайну подсказок». Эта эволюция направлена на выход за рамки обыденных манипуляций со строками к созданию точных и увлекательных подсказок. Для достижения этой цели они разработали инновационную библиотеку под названием Проворный поэт.
Инновационный подход Character.AI к проектированию подсказок воплощен в их недавно разработанном инструменте Prompt Poet. Хотя f-строки Python стали отраслевым стандартом для инженеров Prompt, начиная от простых вставок запросов до сложных манипуляций со строками, этот метод часто требует навыков кодирования, что ограничивает доступность для нетехнических пользователей. Prompt Poet решает эту проблему, предоставляя более интуитивно понятное и эффективное решение как для разработчиков, так и для нетехнических лиц для проектирования и управления производственными подсказками. Этот инструмент значительно сокращает время, затрачиваемое на инженерные манипуляции со строками, позволяя пользователям сосредоточиться на создании оптимальных подсказок. Черпая вдохновение из принципов проектирования пользовательского интерфейса, Prompt Poet концептуализирует подсказку как функцию состояния среды выполнения, охватывая такие элементы, как шаблон подсказки, данные, ограничение токенов и другие соответствующие факторы. Этот подход знаменует собой значительный шаг к тому, чтобы сделать проектирование подсказок более доступным и эффективным для более широкого круга пользователей.
Подсказка = F(состояние)
Prompt Poet производит революцию в процессе создания подсказок, смещая фокус с проектирования на дизайн. Этот инновационный инструмент использует комбинацию YAML и Jinja2 для шаблонов, предлагая как гибкость, так и простоту комбинирования. Обработка шаблонов в Prompt Poet происходит в два ключевых этапа: рендеринг и загрузка. На этапе рендеринга Jinja2 обрабатывает входные данные, выполняя логику потока управления, проверяя и привязывая данные к переменным и оценивая функции шаблона. На этапе загрузки преобразованный вывод преобразуется в структурированный файл YAML, который затем преобразуется в структуры данных Python. Каждая часть приглашения характеризуется определенными атрибутами: человекочитаемым имяНастоящий строка содержимогоа необязательная роль спецификатор для различения пользователей или компонентов системы, а также необязательный приоритет усеченияЭтот структурированный подход обеспечивает более эффективное управление подсказками и позволяет как технически подготовленным, так и нетехническим пользователям создавать и повторять подсказки с большей легкостью и точностью.
Сочетание Jinja2 и YAML в Prompt Poet создает мощную и гибкую систему шаблонов. Jinja2 привносит динамические возможности в шаблоны, позволяя выполнять прямые привязки данных, произвольные вызовы функций и базовые структуры потока управления. Эта гибкость позволяет пользователям создавать сложные контекстно-зависимые подсказки, которые могут адаптироваться к различным сценариям. Между тем, YAML предоставляет структурированный формат для шаблонов с глубиной в один уровень, что имеет решающее значение для реализации сложных стратегий усечения при достижении лимитов токенов. Этот структурированный подход гарантирует, что подсказки останутся согласованными и эффективными, даже если их необходимо сократить.
Приверженность Character.AI к постоянному совершенствованию очевидна в подходе к согласованию моделей с предпочтениями пользователей. Используя Prompt Poet, они создали систему, которая позволяет бесшовно реконструировать производственные подсказки в автономных процессах, таких как оценка и пост-обучающие рабочие нагрузки. Такая шаблонизация подсказок дает значительные преимущества их рабочему процессу. Она позволяет легко обмениваться файлами шаблонов между различными командами в организации, устраняя необходимость собирать воедино различные части их постоянно развивающейся кодовой базы. Этот оптимизированный подход не только улучшает сотрудничество, но и обеспечивает согласованность в дизайне подсказок на разных этапах разработки и развертывания.
Способность Jinja2 вызывать произвольные функции Python в шаблонах во время выполнения является ключевой особенностью Prompt Poet. Эта функциональность позволяет извлекать, обрабатывать и проверять данные «на лету», упрощая построение подсказок. Например, функция `extract_user_query_topic` может обрабатывать запрос пользователя для использования в потоке управления шаблоном, потенциально включая круговой обход классификатора тем. Эта функция значительно расширяет динамические возможности проектирования подсказок.
Prompt Poet по умолчанию использует токенизатор TikToken «o200k_base», но допускает альтернативные имена кодировок через параметр `tiktoken_encoding_name`. Пользователи также могут указать свою функцию кодировки с помощью параметра `encode_func`, который должен быть вызываемым, принимающим строку и возвращающим список целых чисел. Такая гибкость позволяет настраивать процесс токенизации в соответствии с конкретными потребностями.
Для поставщиков LLM, поддерживающих GPU affinity и префиксный кэш, алгоритм усечения Character.AI может максимизировать скорость префиксного кэша. Эта скорость представляет собой долю токенов подсказок, извлеченных из кэша, в общем количестве токенов подсказок. Пользователи должны найти оптимальные значения для шага усечения и лимита токенов для своего варианта использования. Увеличение шага усечения повышает скорость префиксного кэша, но приводит к тому, что больше токенов усекается из приглашения.
Стратегия усечения Character.AI достигает замечательной скорости кэширования в 95% за счет оптимизации усечения сообщений. Стратегия включает усечение до фиксированной точки, перемещая эту точку в среднем каждые k ходов. Этот подход максимизирует использование префиксного кэша GPU, как описано в разделе «Оптимизация вывода». Хотя этот метод часто усекает больше, чем строго необходимо, он значительно превосходит простое усечение на основе лимита токенов с точки зрения использования кэша.
В типичном сценарии чата с сообщениями M1–M10 наивное усечение до уровня чуть ниже предела токенов приводит к смещению точки усечения на каждом ходу. Это оставляет только небольшую часть префикса, доступную для извлечения из кэша, что приводит к значительным затратам на перерасчет. Такой подход не позволяет в полной мере использовать кэш префиксов GPU.
Алгоритм усечения с учетом кэша Character.AI поддерживает фиксированную точку усечения для каждых k ходов. Такой подход сохраняет непрерывную последовательность токенов вплоть до самого последнего сообщения, позволяя повторно использовать вычисления из предыдущего хода, сохраненные в префиксном кэше GPU. Значение k определяется шагом усечения и средним числом токенов на усеченное сообщение.
Prompt Poet производит революцию в разработке подсказок, смещая фокус с ручных манипуляций строками на интуитивно понятный дизайн. Он упрощает создание сложных подсказок, улучшая взаимодействие ИИ и пользователя. Предоставляя как техническим, так и нетехническим пользователям возможность отдавать приоритет дизайну над разработкой, Prompt Poet имеет потенциал для преобразования взаимодействия ИИ, делая его более эффективным и ориентированным на пользователя. Поскольку большие языковые модели продолжают развиваться, такие инструменты, как Prompt Poet, будут иметь решающее значение для максимизации их потенциала удобными для пользователя способами.
Проверьте Подробности и GitHub. Все заслуги в этом исследовании принадлежат исследователям этого проекта. Также не забудьте подписаться на нас Твиттер и присоединяйтесь к нашему Телеграм-канал и LinkedIn Грууп. Если вам нравится наша работа, вам понравится и наше Новостная рассылка..
Не забудьте присоединиться к нашему 47 тыс.+ ML SubReddit
Найдите предстоящие вебинары по ИИ здесь

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