Я хочу попробовать себя в разработке приложений, основанных на LLM, но не знаю, с чего начать. В интернете много разрозненной информации, которую трудно собрать воедино. Поделитесь, какой стек технологий лучше всего использовать и как настроить взаимодействие между компонентами? Существуют ли какие-либо ссылки на практические курсы? Я предпочел бы настроить все локально. Для конкретизации, рассмотрим такую задачу: Есть отдел продаж, который совершает телефонные звонки и имеет записи этих звонков. Мне нужно анализировать их в (полу)автоматическом режиме и выставлять оценку менеджеру, добавляя комментарии о плюсах и минусах проведенной беседы. Для оценки можно использовать базу часто задаваемых вопросов, скрипт звонка и список тем, которые менеджер должен был проработать. Сейчас я смог распознавать записи локально с разбиением на спикеров с помощью Faster-Whisper-XXL. Также я локально настроил Ollama и экспериментирую с LM Studio, AnythingLLM, тестируя различные модели, доступные на Hugging Face. У меня не получилось реализовать поддержку RAG, оценка звонков была выполнена, но результаты оказались неудовлетворительными, и все еще происходит в ручном режиме. Как интегрировать все это в готовое локальное решение? Я вижу следующие шаги: - Передача в систему записи звонка - Вызов внешнего процесса для распознавания речи - Передача распознанной речи в модель для оценки - Вывод результата распознавания и результата оценки Каковы направления, в которые мне стоит двигаться, какие инструменты использовать, и какие курсы помогут мне в реализации такого проекта?
Отлично, что вы хотите погрузиться в разработку приложений на основе LLM! Давайте разберем ваше конкретное задание и предложим последовательные шаги к реализации, а также стек технологий, которые могли бы подойти для вашего проекта. ### 1. Определение архитектуры системы Ваши шаги для интеграции системы верны. Давайте структурируем это более формально: 1. **Запись звонка** – это ваш входной сигнал. 2. **Распознавание речи** – вызов процесса (например, Faster-Whisper-XXL) для преобразования речи в текст. 3. **Обработка текста** – передача распознанного текста в LLM для анализа. 4. **Оценка разговора** – использование модели для выдачи оценки и комментариев. 5. **Вывод результатов** – вывод оценок и комментариев пользователю. ### 2. Стек технологий - **Распознавание речи:** Вы уже используете Faster-Whisper, и это отличный выбор для локального распознавания. - **Модель для анализа:** - Используйте Hugging Face для загрузки и работы с LLM, таких как GPT-3, GPT-2, и модели для оценки (например, модели для анализа текста). - Если необходимо, можно создать собственные Fine-Tuned модели для вашей конкретной задачи (например, классификации разговоров по скриптам). - **Фреймворк для оркестрации:** Используйте Python с Flask или FastAPI, чтобы создать REST API для вашего решения. - **Хранение и обработка данных:** SQLite или PostgreSQL для хранения записей и результатов. - **Интерфейс:** Если вам нужен графический интерфейс, можно использовать Streamlit или Dash для визуализации результатов. ### 3. Интеграция компонентов #### Примерный алгоритм: 1. **Расшифровка звонка:** Передайте запись звонка в компонент распознавания. Можно обернуть функциональность в Python-скрипт, который будет вызываться через REST-запрос от вашего API. 2. **Анализ текста:** После распознавания выгрузите текст в следующий компонент — LLM. Используйте заданные вами критерии (Скрипт, FAQ) для подготовки и передачи контекста в модель. 3. **Оценка и комментарии:** Создайте функцию в API, которая будет возвращать оценку и комментарии, используя, например, модель на основе Fine-Tuning или заранее подготовленные правила/параметры. 4. **Фронтенд:** Выведите результаты на экран и предоставьте возможность визуально представлять данные, например, в виде таблицы или графика. ### 4. Ресурсы для обучения Вот несколько полезных курсов и ресурсов, которые помогут вам: - **Coursera / edX / Udacity:** Есть курсы по Machine Learning и Natural Language Processing. - **Hugging Face Course:** [Hugging Face Course](https://huggingface.co/course/chapter1) — отличный ресурс для изучения использования Transformer-моделей. - **FastAPI Documentation:** [FastAPI](https://fastapi.tiangolo.com/) для создания API. - **Medium и блоги:** Ищите статьи по темам RAG (Retrieval-Augmented Generation), LLM и другим связанным темам. ### 5. Направления для развития - **Изучение RAG:** Погрузитесь в темы, как RAG работает в контексте LLM и как его можно интегрировать в вашу систему. - **Fine-Tuning моделей:** Изучите, как вы можете адаптировать модели под свои нужды, используя собственные данные для обучения и валидации. - **Тестирование и отладка:** Обеспечьте, чтобы ваша система была способна обрабатывать различные сценарии и реагировать на них адекватно. Соблюдая предложенные шаги и используя указанные ресурсы, вы сможете создать эффективный локальный инструмент для анализа телефонных звонков в вашем отделе продаж. Успехов вам!
Разве эта задача решается легко? а как ее решали до сегодняшнего дня? что является критерием оценки качества беседы?
У тебя вроде все указано нужное - whisper получает текст, может с временными метками (хз что такое faster-whisper-xxl есть есть официальная утилита на python - pip install whisper в консоли задаешь модель и кучу параметров и получаешь текстовый файл).
Результат слабоват, потому что инструменты такие. Выбирай по умнее. И не забывай, что с русским языком локальные ИИ работают значительно хуже чем с английским (или если это qwen еще и китайский).
Не пытайся решать задачу одним промптом. Набрасывай на проверяемые данные несколько промптов, по очереди (не одним чатом, а каждый раз заново). Кстати есть замечание, разные сети по разному реагируют на размещение вопроса перед данными и после (есть соблазн размещать данные в начале, потому что тогда работает кеширование и входной текст не обрабатывается заново), т.е. можно данные+вопрос и вопрос+данные
а еще бывает вопрос+данные+фразы_помощники типа 'глубоко вдохни и подумай шаг за шагом', 'ты уверен, а если подумать еще раз', 'и какой будет твой окончательный ответ' а так же извлечение строгого ответа из ответа в свободной форме, ведь если сразу ограничить формат ответа, то качество будет хуже..
еще есть совет, делать несколько прогонов одной и той же задачи и смотреть, как будут отличаться результаты, если гулять сильно, значит повод задуматься об изменении подхода или алгоритма.
Добавь сюда ручную проверку человеком (например случайные результаты проверки) и сохраняй в табличку для анализа, как часто ИИ ошибается и в каких случаях, поможет тюнить промпт и вообще следить за тем бардаком, что вытворяет ИИ.
upd. настоятельно рекомендую использовать 70b модели (та же qwen или llama3.5 например). При использовании младших моделей, старайся не использовать квантизацию, она их ломает сильнее чем для старших версий... используй 8bit.
Мне нравятся модели deepseek distilled qwen 14b или 32b? 14b с полным контекстом можно запустить на 2x16gb nvidia 4060ti, при этом рекомендую использовать vllm а не llama.cpp (каждая стоит 50т.р. дешевле ну просто некуда) на скоростях с батчингом до тысячи tps (16 параллельных запросов мне давали 800tps ну а vllm при запуске обещал 31k tps)... внимание, промпты и ответ только на английском, но русский вроде понимает