Слонова Анна отчёт
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