203 lines
No EOL
32 KiB
Markdown
203 lines
No EOL
32 KiB
Markdown
## Слонова Анна
|
||
|
||
### Индивидуальное задание
|
||
|
||
Разработка инструментов для автоматического написания с использованием искусственного интеллекта отчёта по встрече на
|
||
основе аудиозаписи.
|
||
|
||
### План выполнения
|
||
|
||
| № п/п | Место проведения | Тема | Период выполнения |
|
||
|-------|--------------------------------|---------------------------------------------------------------|-----------------------|
|
||
| 1 | ООО “Группа компаний “Иннотех” | Инструктаж. | 09.02.2026-09.02.2026 |
|
||
| 2 | ООО “Группа компаний “Иннотех” | Изучение ИИ-ассистентов. Анализ возможностей и рисков. | 10.02.2026-06.03.2026 |
|
||
| 3 | ООО “Группа компаний “Иннотех” | Разработка чат-бота. | 07.03.2026-16.04.2026 |
|
||
| 4 | ООО “Группа компаний “Иннотех” | Изучение структуры навыков и написания скриптов. | 17.04.2026-29.04.2026 |
|
||
| 5 | ООО “Группа компаний “Иннотех” | Разработка навыка для Hermes. | 30.04.2026-25.05.2026 |
|
||
| 6 | ООО “Группа компаний “Иннотех” | Тестирование и сравнение решений. Анализ перспектив развития. | 26.05.2026-06.06.2026 |
|
||
| 7 | ООО “Группа компаний “Иннотех” | Оформление отчета. Подведение итогов. | 07.06.2026-07.06.2026 |
|
||
|
||
### Отзыв руководителя
|
||
|
||
Обучающаяся группы М8О-101БВ-25 Слонова Анна Дмитриевна проходила ознакомительную практику в ООО “Группа компаний
|
||
“Иннотех”. За время практики студент изучил принципы работы современных ИИ-ассистентов с открытым исходным кодом, провёл
|
||
их сравнительный анализ, выявил сильные стороны и потенциальные риски. В соответствии с индивидуальным заданием
|
||
разработаны два решения для автоматической генерации отчётов по аудиозаписям встреч: чат-бот для мессенджера Element с
|
||
асинхронной обработкой запросов и навык для ИИ-ассистента Hermes, включающий набор shell-скриптов для транскрибации,
|
||
объединения записей и нескольких источников и генерации итогового PDF-отчёта через LLM.
|
||
|
||
За время прохождения практики практикант проявил высокий уровень самостоятельности, аналитическое мышление, умение
|
||
аргументированно выбирать технологические решения; продемонстрировал ответственное отношение к работе, способность
|
||
системно описывать результаты и предлагать пути дальнейшего развития проектов. В ходе практики были показаны уверенные
|
||
навыки программирования на Python, асинхронной разработки, работы с LLM, аудио-транскрибацией, создания ботов в Matrix и
|
||
написания shell-скриптов, а также понимание вопросов безопасности ИИ-агентов.
|
||
|
||
Рекомендуемая оценка «Отлично». Материалы, изложенные в отчёте обучающегося, полностью соответствуют индивидуальному
|
||
заданию.
|
||
|
||
### Отчёт обучающегося по практике
|
||
|
||
В современном мире активно развиваются и обретают всё новые возможности разнообразные ИИ-агенты и ассистенты. Это -
|
||
полезный и эффективный инструмент, способный оптимизировать различные задачи. Понимание принципов работы ИИ-агентов и
|
||
ассистентов, навык их создания и реализации новых инструментов для уже существующих агентов становятся важными навыками
|
||
в профессиональной деятельности.
|
||
|
||
Основной целью и задачей практики, общей для проектной команды, было изучение ИИ-агентов и ассистентов и разработка на
|
||
их основе различных средств оптимизации бизнес-процессов. Индивидуальное задание обучающегося состояло в разработке
|
||
средств для автоматической генерации отчёта по проведённой встрече на основе аудиозаписи.
|
||
|
||
В любой компании ежедневно проводится множество встреч, созвонов и совещаний. Выделить ключевые моменты встречи,
|
||
принятые решения, важные озвученные аспекты, итоги встречи бывает сложно. Нередко созвоны не фиксируются
|
||
систематизировано, и если никто из участников не отметил самостоятельно нужную информацию в ходе встречи, она может
|
||
оказаться потерянной. Ручное написание полноценного отчёта по каждой встрече же требует значительного времени и
|
||
человеческих ресурсов, что с учётом количества проводимых совещаний оказывается неэффективным.
|
||
|
||
Все эти проблемы и сложности позволяет решить ИИ-ассистент, имеющий инструментарий для автоматического написания отчёта.
|
||
Необходимо лишь передать на вход агенту аудиозапись проведённой встречи, чтобы получить отчёт с описанием хода
|
||
совещания, принятых решений, поставленных задач и назначенных ответственных за эти задачи, суммаризацией итогов
|
||
совещания.
|
||
|
||
Первым этапом выполнения ознакомительной практики было изучение принципов работы современных ИИ-ассистентов на примере
|
||
проектов с открытым исходным кодом OpenClaw, Hermes и иных подобных. Особенность и уникальность данных ассистентов
|
||
заключается в высокой степени их универсальности, достигаемой за счёт возможности выполнения shell-команд, доступа к
|
||
файловой системе и т.п. инструментарию, с мыслительным процессом посредством большой языковой модели. Также большой
|
||
потенциал данных систем заключается в расширении их функционала посредством написания навыков - совокупности скриптов и
|
||
инструкций для LLM, как их запускать, зачем они нужны, в каких случаях стоит это делать.
|
||
|
||
Однако наличие столь обширных возможностей вкупе с минимальными ограничениями приводит к рискам для безопасности, а
|
||
отсутствие предустановленных навыков для распространённых задач снижает эффективность ассистента - с каждым новым
|
||
пользователем агент проходит один и тот же путь, чтобы научиться выполнять задачу. При этом процесс установки и
|
||
настройки ассистентов часто бывает достаточно трудозатратен и требует специальных навыков и знаний в сфере
|
||
информационных технологий, что делает их использование сложным и недоступным для людей, не обладающих необходимой
|
||
специализацией. Понимание этих недостатков и их изучение также является важным для нахождения возможных путей развития и
|
||
улучшения.
|
||
|
||
На данном этапе суть работы состояла в изучении принципов работы OpenClaw, Hermes и аналогов, тестировании ассистентов,
|
||
поиске их недостатков и перспектив развития, сравнении различных реализаций систем. Также проводилось изучение структуры
|
||
навыка для OpenClaw, Hermes и иных ассистентов, принципов написания скриптов и инструкций для агента по их
|
||
использованию. В целом работа на данном этапе была направлена на исследовательскую и учебную деятельность, позволив
|
||
разобраться в основах работы ИИ-ассистентов и их зон риска. В результате дальнейшая разработка велась с использованием
|
||
Hermes, однако является универсальной для всех ассистентов с аналогичной структурой навыков. Hermes был выбран за счёт
|
||
качественного управления контекстом диалога и способности к самообучению.
|
||
|
||
Следующим шагом стала разработка простого ИИ-агента, реализующего функционал чат-бота для автоматической генерации
|
||
отчётов в мессенджере Element, использующем протокол Matrix. Данный мессенджер был выбран по причине простоты создания в
|
||
нём ботов и взаимодействия с ними, что является удобным для разработки решения, которое потом можно перенести в любой
|
||
другой мессенджер по желанию.
|
||
|
||
Разработка велась на языке Python с использованием библиотеки matrixnio, позволяющей реализовать взаимодействие с
|
||
мессенджером. Первым делом чат-бот считывает отправленные пользователем сообщения и группирует их. Так как возможности
|
||
отправки нескольких вложений в одном сообщении или текстовой подписи к медиа-вложениям выбранный мессенджер не имеет,
|
||
группировка велась исходя из времени отправки, чтобы отправленные за небольшой промежуток времени сообщения
|
||
рассматривались в совокупности. Подобная группировка позволила реализовать генерацию отчётов на основе сразу нескольких
|
||
аудиозаписей, а также текстовых комментариев к ним, воспринимаемых как единое целое, несмотря на изначальную
|
||
недостаточность возможностей мессенджера. Далее полученные аудиозаписи транскрибируются, переводясь в текст для
|
||
возможности дальнейшей обработки посредством большой языковой модели.
|
||
|
||
Транскрибация ведётся с использованием библиотеки faster-whisper, позволяющей локально развернуть на устройстве модель
|
||
машинного обучения для автоматического распознавания речи. Данная библиотека предоставляет несколько вариантов моделей,
|
||
различающихся по весу, времени и качеству работы. В ходе разработки были опробованы различные варианты модели с целью
|
||
поиска оптимального варианта, дающего баланс между скоростью и качеством работы - транскрибация должна быть на уровне,
|
||
достаточном для последующей генерации на её основе отчёта, однако высококачественное распознавание речи занимает
|
||
длительное время, а модель имеет большой вес; при этом определённая доля ошибок в транскрибации критичной являться не
|
||
будет благодаря возможностям большой языковой модели, которая сможет уловить смысл содержания исходя из общего контекста
|
||
транскрибации, даже если некоторые из слов окажутся распознаны неправильно. Исходя из этого была выбрана модель small,
|
||
обеспечивающая достаточное качество распознавания для верной транскрибации большей части речи и при этом являющейся
|
||
более легковесной и быстрой, чем иные модели. Также были установлены настройки модели, позволяющие повысить качество
|
||
распознавания речи на русском языке, так как созданный продукт нацелен на отечественный рынок, и основным языком на
|
||
совещаниях и встречах будет являться русский.
|
||
|
||
Далее на основе текстовых сообщений и транскрипций аудиозаписей формируется единый запрос, предоставляемый большой
|
||
языковой модели вместе с указанными инструкциями для написания отчёта, содержащего в себе ключевые моменты, итоги и ход
|
||
встречи, а также перечень принятых решений. LLM генерирует отчёт исходя из данной ей информации, оформляя его в виде
|
||
html-страницы для возможности дальнейшего перевода в pdf-формат. Созданный отчёт конвертируется в pdf-файл, после чего
|
||
отправляется пользователю. Агент написан с использованием принципов асинхронного программирования, что позволяет ему
|
||
выполнять несколько задач одновременно, благодаря чему пользователь не вынужден ждать, когда будет готов один отчёт,
|
||
прежде чем отправить сообщения с данными для генерации другого.
|
||
|
||
Разработанный агент представляет из себя эффективный инструмент для автоматического написания отчётов с интуитивно
|
||
понятным интерфейсом в виде чат-бота в мессенджере. Всё, что требуется от пользователя - отправить аудиозапись встречи,
|
||
остальной процесс происходит автоматически, что позволяет максимально упростить взаимодействие пользователя с агентом и
|
||
тем самым делает использование агента понятным и доступным даже для человека, лишённого какой-либо технической
|
||
подготовки, что значительно расширяет потенциальную аудиторию продукта.
|
||
|
||
Возможными перспективами развития агента являются адаптация чат-бота под иные мессенджеры для охвата большего числа
|
||
пользователей, добавление различных типов отчётов и их оформления на выбор пользователя, работа с распознаванием и
|
||
генерацией изображений: схемы, диаграммы, графики и т.д.
|
||
|
||
Следующим этапом стала разработка навыка с аналогичным функционалом, пригодного для ИИ-ассистентов, подобных OpenClaw и
|
||
Hermes. Навык позволяет дополнить функционал различных ИИ-ассистентов, расширить возможности применения созданного
|
||
инструмента с одной лишь автоматической генерации отчётов на иные родственные задачи, такие как, например, написание
|
||
конспектов по аудиозаписи лекции - при качественном описании функционала скриптов ассистент сам сможет понять, в каких
|
||
ситуациях их нужно вызывать. Это позволяет применять один и тот же код к целому ряду задач, а не лишь к одной
|
||
специфической, что расширяет функционал и увеличивает потенциальную пользу продукта.
|
||
|
||
Структура навыка включает в себя файлы-скрипты, пригодные для запуска в shell, программно реализующие функционал и
|
||
логику навыка, а также описание с инструкциями для ИИ-ассистента, позволяющие большой языковой модели понять, что делает
|
||
навык, в каких случаях его применять и руководство по запуску скриптов. Скрипты навыка включают в себя скрипт
|
||
транскрибации, создающий транскрипцию аудиофайла посредством запроса к удалённому серверу; скрипт для более быстрой
|
||
транскрибации больших файлов с использованием разбиения файла на части - чанки; скрипт для объединения нескольких .wav
|
||
файлов в один .mp3 файл; скрипт для объединения полученных распознаваний чанков в единую транскрипцию; скрипт,
|
||
включающий в себя запуск вышеперечисленных скриптов в нужном порядке и с определёнными условиями, что реализует полный
|
||
пайплайн транскрипции. Также присутствует файл с ключевыми словами, что позволяет улучшить качество автоматического
|
||
распознавания речи без значимых затрат памяти. Описание навыка содержит примеры фраз пользователя, при которых должен
|
||
вызываться навык, руководство по запуску скриптов и инструкции по генерации отчёта.
|
||
|
||
Когда LLM видит в запросе пользователя фразу, схожую по семантике с примерами, указанными в описании, в соответствии с
|
||
инструкциями запускаются скрипты, в результате работы которых создаётся текстовый файл с полной транскрипцией
|
||
аудиозаписи. Далее полученная транскрипция передаётся большой языковой модели, которая в соответствии с предоставленными
|
||
ей инструкциями и требованиями автоматически генерирует на основании переданной транскрипции отчёт о прошедшей встрече.
|
||
|
||
Полный процесс генерации отчёта реализован в скрипте generate_report.sh, внутри которого реализована правильная
|
||
последовательность вызовов других скриптов, нацеленных на выполнение одной подзадачи, в соответствии со входными
|
||
условиями. Скрипт проверяет существование в указанной пользователем директории .wav файлов - исходных аудиозаписей
|
||
встречи. Далее вызывается скрипт transcribe.sh, автоматически создающий транскрипции на основе всех обнаруженных в
|
||
директории аудиофайлов. После этого вызывается скрипт merge_transcriptions.py, объединяющий все транскрипции вместе на
|
||
основе кодов времени.
|
||
|
||
Скрипт transcribe.sh при его вызове обнаруживает все .wav файлы в исходной директории, разделяя их на источники:
|
||
стерео-записи и записи с петличного микрофона - на основе названий. Каждый из обнаруженных файлов-источников
|
||
конвертируется в .mp3 формат для уменьшения их веса, что влияет на скорость и эффективность работы скрипта в дальнейшем.
|
||
Аудиозаписи, относящиеся к одному и тому же источнику, объединяются в один файл. После этого для каждого из файлов
|
||
происходит транскрибация посредством отправки запроса на удалённый сервер, где развёрнута модель whisper для
|
||
автоматического распознавания речи. Для навыка был выбран данный способ, а не локальное развёртывание модели, как в
|
||
случае с чат-ботом, так как клиент устанавливает ИИ-ассистент на собственном компьютере, в отличие от чат-бота,
|
||
разворачиваемого на сервере. Тогда локальная установка модели позволяла произвести более тонкую настройку. Однако такой
|
||
способ транскрибации является затратным по производительности, сильно зависит от характеристик устройства, наличия GPU.
|
||
Для использования в ИИ-ассистенте, работающем на персональном устройстве клиента, лучше подходит способ с использованием
|
||
обращения к удалённому серверу посредством URL запроса, так как он гарантирует высокую скорость транскрибации вне
|
||
зависимости от характеристик устройства клиента и не требует высокой производительности. Ответ сервера сохраняется, и на
|
||
его основе формируются два файла : один с метками времени, другой без них.
|
||
|
||
Скрипт merge_transcriptions.py позволяет объединить все полученные транскрипции в один файл в случае, когда используется
|
||
несколько источников. При этом записи с петличного микрофона считаются основными, комнатная запись же помечается
|
||
отдельной меткой в итоговой транскрипции. Скрипт проходит по различным расшифровкам текста, оценивает смещение по
|
||
времени, корректирует временные метки по необходимости и на их основе объединяет транскрипции в одну, сохраняя её в
|
||
файл.
|
||
|
||
Однако удалённый сервер может иметь ограничения на максимальную длительность обрабатываемого аудио, из-за чего длинные
|
||
записи не получится обработать уже описанными скриптами. Для этого случая предусмотрен скрипт transcribe_chunked.sh,
|
||
требующий отдельного вызова, что указано в инструкции для ИИ-ассистента. Суть подхода заключается в разбиении длинной
|
||
записи на более короткие части - чанки. Скрипт определяет длительность исходного файла и находит паузы тишины
|
||
длительностью не менее 0.5 секунд, чтобы избежать в дальнейшем проблем с транскрибацией в моменте разделения. С учётом
|
||
выявленных пауз определяются точки разреза аудиозаписи на чанки. Продолжительность одного чанка около 10 минут: среди
|
||
найденных пауз ищутся такие, чтобы максимально приблизиться к указанной длине записи. После разделения каждый чанк
|
||
транскрибируется отдельно, принцип работы аналогичен описанному для transcribe.sh. Далее полученные транскрипции чанков
|
||
объединяются в один итоговый файл.
|
||
|
||
После получения транскрипции аудиозаписей LLM передаётся содержимое итогового файла, на его основе большая языковая
|
||
модель составляет отчёт в формате Markdown и сохраняет в файл. Далее файл .md, в котором сохранён сгенерированный отчёт,
|
||
конвертируется в формат pdf. Итого в результате работы навыка ИИ-ассистент создаёт pdf-файл с отчётом по встрече на
|
||
основе одной или нескольких аудиозаписей, причём весь процесс от считывания аудио до создания результирующего файла
|
||
происходит полностью автоматически за счёт использования написанных скриптов и большой языковой модели, являющейся
|
||
частью ассистента.
|
||
|
||
Обобщая всё вышесказанное, в процессе прохождения ознакомительной практики были получены навыки реализации различных
|
||
способов решений применимых в жизни задач с использованием искусственного интеллекта: ИИ-агент, взаимодействующий с
|
||
пользователем посредством чат-бота, и навык для уже готовых ИИ-ассистентов - а также проведён анализ каждого из
|
||
подходов; изучены различные ИИ-ассистенты, сделано их сравнение; разработаны два решения для бизнес-задачи
|
||
автоматической генерации отчётов по проведённой встрече на основе аудиозаписи, в которых применялись разнообразные
|
||
подходы к процессу транскрибации и форматы взаимодействия с пользователем, и каждое из которых работает успешно.
|
||
Прохождение ознакомительной практики позволило обучающемуся получить новые знания и расширить свой опыт работы в
|
||
предметной области искусственного интеллекта, что значительно повысило его квалификацию и компетентность, развило
|
||
профессиональные навыки и дало базу знаний для дальнейшей работы в этой сфере. |