Слонова Анна отчёт
This commit is contained in:
parent
1fff8123c0
commit
aadd142e26
2 changed files with 204 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
.idea
|
||||||
203
b2b/slonova_anna.md
Normal file
203
b2b/slonova_anna.md
Normal file
|
|
@ -0,0 +1,203 @@
|
||||||
|
## Слонова Анна
|
||||||
|
|
||||||
|
### Индивидуальное задание
|
||||||
|
|
||||||
|
Разработка инструментов для автоматического написания с использованием искусственного интеллекта отчёта по встрече на
|
||||||
|
основе аудиозаписи.
|
||||||
|
|
||||||
|
### План выполнения
|
||||||
|
|
||||||
|
| № п/п | Место проведения | Тема | Период выполнения |
|
||||||
|
|-------|--------------------------------|---------------------------------------------------------------|-----------------------|
|
||||||
|
| 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-файл с отчётом по встрече на
|
||||||
|
основе одной или нескольких аудиозаписей, причём весь процесс от считывания аудио до создания результирующего файла
|
||||||
|
происходит полностью автоматически за счёт использования написанных скриптов и большой языковой модели, являющейся
|
||||||
|
частью ассистента.
|
||||||
|
|
||||||
|
Обобщая всё вышесказанное, в процессе прохождения ознакомительной практики были получены навыки реализации различных
|
||||||
|
способов решений применимых в жизни задач с использованием искусственного интеллекта: ИИ-агент, взаимодействующий с
|
||||||
|
пользователем посредством чат-бота, и навык для уже готовых ИИ-ассистентов - а также проведён анализ каждого из
|
||||||
|
подходов; изучены различные ИИ-ассистенты, сделано их сравнение; разработаны два решения для бизнес-задачи
|
||||||
|
автоматической генерации отчётов по проведённой встрече на основе аудиозаписи, в которых применялись разнообразные
|
||||||
|
подходы к процессу транскрибации и форматы взаимодействия с пользователем, и каждое из которых работает успешно.
|
||||||
|
Прохождение ознакомительной практики позволило обучающемуся получить новые знания и расширить свой опыт работы в
|
||||||
|
предметной области искусственного интеллекта, что значительно повысило его квалификацию и компетентность, развило
|
||||||
|
профессиональные навыки и дало базу знаний для дальнейшей работы в этой сфере.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue