Как быстро разобраться в теме разработки ChatGPT, LLM агентов и подобной технологии?

Я хочу попробовать себя в разработке приложений, основанных на LLM, но не знаю, с чего начать. В интернете много разрозненной информации, которую трудно собрать воедино. Поделитесь, какой стек технологий лучше всего использовать и как настроить взаимодействие между компонентами? Существуют ли какие-либо ссылки на практические курсы? Я предпочел бы настроить все локально.

Для конкретизации, рассмотрим такую задачу:
Есть отдел продаж, который совершает телефонные звонки и имеет записи этих звонков. Мне нужно анализировать их в (полу)автоматическом режиме и выставлять оценку менеджеру, добавляя комментарии о плюсах и минусах проведенной беседы. Для оценки можно использовать базу часто задаваемых вопросов, скрипт звонка и список тем, которые менеджер должен был проработать.

Сейчас я смог распознавать записи локально с разбиением на спикеров с помощью Faster-Whisper-XXL. Также я локально настроил Ollama и экспериментирую с LM Studio, AnythingLLM, тестируя различные модели, доступные на Hugging Face. У меня не получилось реализовать поддержку RAG, оценка звонков была выполнена, но результаты оказались неудовлетворительными, и все еще происходит в ручном режиме.

Как интегрировать все это в готовое локальное решение? Я вижу следующие шаги:
- Передача в систему записи звонка
- Вызов внешнего процесса для распознавания речи
- Передача распознанной речи в модель для оценки
- Вывод результата распознавания и результата оценки

Каковы направления, в которые мне стоит двигаться, какие инструменты использовать, и какие курсы помогут мне в реализации такого проекта?
  • 15 февраля 2025 г. 14:24
Ответы на вопрос 2
Отлично, что вы хотите погрузиться в разработку приложений на основе 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 моделей:** Изучите, как вы можете адаптировать модели под свои нужды, используя собственные данные для обучения и валидации.
- **Тестирование и отладка:** Обеспечьте, чтобы ваша система была способна обрабатывать различные сценарии и реагировать на них адекватно.

Соблюдая предложенные шаги и используя указанные ресурсы, вы сможете создать эффективный локальный инструмент для анализа телефонных звонков в вашем отделе продаж. Успехов вам!
Разве эта задача решается легко? а как ее решали до сегодняшнего дня? что является критерием оценки качества беседы? <br/> <br/> У тебя вроде все указано нужное - whisper получает текст, может с временными метками (хз что такое faster-whisper-xxl есть есть официальная утилита на python - pip install whisper в консоли задаешь модель и кучу параметров и получаешь текстовый файл). <br/> <br/> Результат слабоват, потому что инструменты такие. Выбирай по умнее. И не забывай, что с русским языком локальные ИИ работают значительно хуже чем с английским (или если это qwen еще и китайский). <br/> <br/> Не пытайся решать задачу одним промптом. Набрасывай на проверяемые данные несколько промптов, по очереди (не одним чатом, а каждый раз заново). Кстати есть замечание, разные сети по разному реагируют на размещение вопроса перед  данными и после (есть соблазн размещать данные в начале, потому что тогда работает кеширование и входной текст не обрабатывается заново), т.е. можно данные+вопрос и вопрос+данные <br/> <br/> а еще бывает вопрос+данные+фразы_помощники типа 'глубоко вдохни и подумай шаг за шагом', 'ты уверен, а если подумать еще раз', 'и какой будет твой окончательный ответ' а так же извлечение строгого ответа из ответа в свободной форме, ведь если сразу ограничить формат ответа, то качество будет хуже.. <br/> <br/> еще есть совет, делать несколько прогонов одной и той же задачи и смотреть, как будут отличаться результаты, если гулять сильно, значит повод задуматься об изменении подхода или алгоритма. <br/> <br/> Добавь сюда ручную проверку человеком (например случайные результаты проверки) и сохраняй в табличку для анализа, как часто ИИ ошибается и в каких случаях, поможет тюнить промпт и вообще следить за тем бардаком, что вытворяет ИИ. <br/> <br/> upd. настоятельно рекомендую использовать 70b модели (та же qwen или llama3.5 например). При использовании младших моделей, старайся не использовать квантизацию, она их ломает сильнее чем для старших версий... используй 8bit. <br/> <br/> Мне нравятся модели deepseek distilled qwen 14b или 32b? 14b с полным контекстом можно запустить на 2x16gb nvidia 4060ti, при этом рекомендую использовать vllm а не llama.cpp (каждая стоит 50т.р. дешевле ну просто некуда) на скоростях с батчингом до тысячи tps (16 параллельных запросов мне давали 800tps ну а vllm при запуске обещал 31k tps)... внимание, промпты и ответ только на английском, но русский вроде понимает
Похожие вопросы