Все мы время от времени сталкиваемся с необходимостью сделать презентацию, даже если наша работа, казалось бы, этого не предполагает. Часто это трудоёмкая задача, которая досадно надолго отвлекает от просмотра мемов действительно важных дел вроде написания кода и обучения моделей.
Мы решили проверить, насколько современные LLM и модели генерации изображений могут тут облегчить нам жизнь, учитывая, насколько мощно они продвинулись в последние годы. Для этого мы собрали MVP на базе GigaChat-Max и Kandinsky 3.1, принимающий на вход текстовый запрос и количество слайдов и генерирующий файл презентации в формате .pptx.
Для первого подхода к снаряду мы сформировали относительно простой базовый конвейер, который включает в себя генерацию заголовков и текстов слайдов с помощью GigaChat с последующей генерацией изображений с помощью Kandinsky. В итоге весь синтезированный контент наполняет слайды презентации по несложным шаблонам. Далее мы расскажем обо всех шагах подробно и покажем, что получилось. Но если вам не очень хочется читать и уже хочется что-нибудь сгенерировать, то мы подняли space на Hugging Face.
Он на ZeroGPU, так что индивидуальной квоты хватит только на генерацию 1 презентации из 5-7 слайдов, потом придётся ждать. Впрочем, если открыть space в режиме инкогнито, не логинясь, и поменять IP, то будет новая квота ;)Скрытый текст
Или, если не хочется ждать, то вот несколько интересных и забавных примеров работы: захват мира ИИ, ИТ баги и кофеин, тайная жизнь принтера, первобытный код, кот не главный в доме, cat behavior, procrastination.
Что происходит под капотом
Чтобы сгенерировать презентацию, мы:
-
Получаем текстовый запрос от пользователя. На этом этапе пользователь вводит описание презентации, задающее её тематику и содержание
-
Генерируем заголовки слайдов с помощью GigaChat. Модель анализирует описание и генерирует краткие заголовки для каждого слайда
-
Создаём текстовое содержание слайдов. GigaChat генерирует текст для каждого слайда на основе заголовков, созданных на предыдущем этапе, и описания, введённого пользователем
-
Генерируем запросы для визуализации. Чтобы обогатить презентацию визуальным содержанием, GigaChat создаёт детализированные запросы для генерации изображений, учитывая контекст всей презентации и заголовок каждого слайда. Эти текстовые запросы далее подаются в модель Kandinsky для генерации изображений или фона
-
Собираем презентацию с помощью python-pptx. Наконец, все сгенерированные элементы помещаются в шаблон презентации
Рассмотрим подробнее каждый из шагов.
Генерируем заголовки слайдов с помощью GigaChat
Мы генерируем заголовки слайдов, отправляя следующий промт в GigaChat (здесь user_query
— это запрос пользователя, например, «Презентация про слонов»):
Тебе дано описание презентации: "{user_query}".На основе данного описания и примеров сгенерируй заголовки слайдов презентации.Заголовок должен быть коротким, не более 4 слов.Представь ответ в виде нумерованного списка.
Примеры
Запрос |
Заголовки слайдов на выходе модели |
Презентация о стратегии маркетинга для нового продукта. |
1. Введение |
Достижения компании за прошлый год. |
1. Приветствие |
Презентация о новых технологиях в производстве. |
1. Введение в тему |
Результатом выполнения этого шага является сформированная структура презентации.
Создаём текстовое содержание слайдов
После того как мы сформировали структуру и заголовки, нам необходимо наполнить слайды содержанием. В первую очередь это будет текст, который мы создаём, используя следующую инструкцию к GigaChat:
Тебе дано описание презентации: "{user_query}".Напиши одно предложение не более 20 слов для слайда с заголовком "{title}".Напиши только итоговый текст, начинай с "Текст: ".
Примеры
Запрос |
Заголовок слайда |
Текст на слайде |
Базовые понятия экономики |
Потребности и ресурсы |
Основные понятия экономики включают спрос, предложение, цену и конкуренцию |
Экономические агенты |
Потребности человека определяют необходимость использования ограниченных ресурсов |
|
Рынок и спрос |
Экономические агенты включают домохозяйства, фирмы и государство, взаимодействующие в экономике |
|
Предложение и цена |
Рынок и спрос определяют взаимодействие между покупателями и продавцами |
|
Равновесие |
Предложение и цена определяют взаимодействие между спросом и предложением на рынке |
|
Роль государства |
Равновесие достигается, когда спрос равен предложению при данной цене |
GigaChat создаёт неплохой текст для презентаций в определённой стилистике, например, по фундаментальным темам.
Генерируем запросы для визуализации
Итак, текст готов. Давайте теперь посмотрим, как мы можем оформить нашу презентацию с визуальной точки зрения. Мы хотели бы использовать изображения как в качестве иллюстраций, так и в качестве фона для слайдов. Для этого нам нужно сформировать промты, которые будут подаваться на вход модели Kandinsky. С этой целью мы используем следующие текстовые запросы к GigaChat.
Для иллюстрации на слайде
Для генерации описаний изображений используется следующий текстовый запрос к GigaChat с учётом общей тематики презентации и заголовка слайда:
Тебе дано описание презентации: "{user_query}".Придумай детализированное описание эстетичной картинки для слайда с заголовком: "{title}".Описание должно быть длинным и супер детализированным, включающим все аспекты визуальной составляющей.Исключи цифровые значения, текст, графики, названия компаний и тому подобное.Избегай использования текста на изображении.Сделай его визуально приятным и подходящим контексту.Начни со слова "описание: ".
Примеры
Запрос |
Заголовок слайда |
Описание изображения |
Базовые понятия экономики |
Потребности и ресурсы |
В центре композиции находится большой зеленый круг, символизирующий потребности. Внутри круга изображены различные человеческие фигуры, каждая из которых представляет разные типы потребностей: физиологические (например, еда и вода), социальные (общение и принадлежность к группе), духовные (познание и саморазвитие) и другие. Эти фигуры плавно переходят друг в друга, создавая ощущение единства и взаимосвязанности. |
Экономические агенты |
В центре композиции находится большая цветная диаграмма, состоящая из нескольких секторов разных размеров и цветов. Каждый сектор символизирует определенный тип экономического агента: домохозяйства, фирмы, государство и международные организации. Диаграмма выполнена в ярких, но не кричащих цветах, чтобы подчеркнуть важность каждого элемента. |
|
Рынок и спрос |
В центре композиции находится рынок – это может быть оживленная городская площадь или просторный торговый зал. По краям площади расположены прилавки с разнообразными товарами: фруктами, овощами, одеждой, электроникой и другими предметами первой необходимости. На заднем плане виднеются здания. |
|
Предложение и цена |
В центре слайда находится изображение большого, красивого цветка, символизирующего предложение. Лепестки цветка выполнены в разных оттенках синего цвета, что создает ощущение глубины и объема. Каждый лепесток имеет свой уникальный узор, подчеркивающий разнообразие и сложность предложения на рынке. В центре цветка расположен желтый бутон, который символизирует цену. |
|
Равновесие |
На слайде изображена спокойная водная гладь озера, окруженная зелеными холмами и лесами. В центре озера находится небольшой островок, покрытый густой растительностью. На острове можно заметить небольшое дерево, ветви которого тянутся к небу, создавая ощущение гармонии и равновесия. Вокруг острова плавают несколько белых лебедей, их плавные движения символизируют стабильность и баланс. |
|
Роль государства |
Центральное место занимает изображение здания парламента или правительства, выполненное в классическом стиле с колоннами и куполом. Здание окружено зелеными насаждениями и аккуратными дорожками, что символизирует стабильность и порядок. |
Для фона слайда
Для генерации описания фона всех слайдов презентации мы случайным образом выбираем один из 14 стилей фона (background_style). Вот некоторые из возможных стилей:
-
Gradient: без текста, векторный стиль, плавные переходы цветов.
-
Abstract: чистые линии, современный вид, минимализм, мягкие цвета, элегантный вид.
-
Nature-inspired: узоры листьев, мягкие зелёные тона, природные текстуры.
-
Technology: футуристический дизайн, синие тона, узоры схем.
-
Corporate: профессиональный вид, тонкие градиенты, нейтральные цвета, бизнес-ориентированный стиль.
Для генерации описания фона слайда мы применяем набор ключевых слов (keywords), задающих общую абстрактную стилистику. Чтобы их выделить мы используем следующий текстовый запрос для GigaChat:
На основании описания презентации: "{user_query}" и заголовка текущего слайда: "{title}" сгенерируй 4 ключевых слова. Напиши их через запятую.
Примеры
Запрос |
Заголовок слайда |
Ключевые слова |
Базовые понятия экономики |
Потребности и ресурсы |
потребности, ресурсы, экономика, базовые |
Экономические агенты |
экономические агенты, субъекты, рынки, взаимодействие |
|
Рынок и спрос |
рынок, спрос, предложение, цена |
|
Предложение и цена |
предложение, цена, спрос, рынок |
|
Равновесие |
равновесие, спрос, предложение, рынок |
|
Роль государства |
роль государства, регулирование, бюджет, социальная политика |
Совместив набор ключевых слов для каждого слайда со стилями, описанными выше, мы подаём в Kandinsky промт вида: "{keywords}, {background_style}"
(уже в переведённом на английский язык виде, как этого требует входной формат модели Kandinsky). Например:
The role of the state, regulation, budget, social policy, Corporate, Professional look, Subtle gradients, Clean and polished, Neutral colors, Business-oriented.
Таким образом, мы получаем возможность генерировать для каждого слайда уникальный и уместный фон.
Собираем презентацию с помощью python-pptx
Разумеется, просто сгенерировать текст и изображения недостаточно. Необходимо адекватно расположить это всё на слайде. Мы подготовили три шаблона: один для титульного слайда и два для остальных.
Титульный слайд
Имеет сгенерированный фон и расположенную по центру тему презентации на полупрозрачной подложке.
Остальные слайды
Другие слайды предполагают случайный выбор одного из двух форматов расположения текста и изображений:
-
Белый слайд с прямоугольным (например, квадратным) изображением, дополняющим текст
-
Сгенерированный фон и добавление текста поверх него на полупрозрачной подложке
Заключение
В этой статье мы рассказали о том, какой прототип генератора презентаций нам удалось собрать с помощью GigaСhat и Kandinsky. Конечно, текущие результаты еще далеки от идеала, но даже сейчас можно сэкономить немного времени, собрав себе за пару минут основу для дальнейшей доработки, причём с уникальными визуализациями и стилем. Вот несколько интересных и забавных примеров, которые у нас получилось сгенерировать: захват мира ИИ, ИТ баги и кофеин, тайная жизнь принтера, первобытный код, кот не главный в доме, cat behavior, procrastination.
Авторы и их вклад
Описанный в статье инструмент для создания презентаций создан в команде Sber AI на основе большой языковой модели GigaChat, разработанной командой SberDevices, и модели генерации изображений по тексту Kandinsky, разработанной в команде Sber AI при участии исследователей из института искусственного интеллекта AIRI.
Коллектив авторов: Саид Азизов, Николай Герасименко, Анна Аверченкова, Вячеслав Васильев, Эвелина Миронова, Андрей Кузнецов и Денис Димитров.
Контакты для коммуникации
По всем возникающим вопросам и предложениям по развитию модели, добавлению новых возможностей и сотрудничеству в части использования наших разработок можно писать Денису или Андрею.
Полезные ссылки
Автор: nikgerasimenko