Тут я расскажу, как заставить нейросети типа ChatGPT или аналог типа Mistral или Qwen, могут управлять умным домом. При условии, что мы знаем, что эти модели не могут совершать действия, а только генерируют текст.
Эта статья – ценнейшее руководство к действию, сделаете так же, получите реального джарвиса дома, я не шучу!
Простой план
Чтобы рассказать о том, как заставить эти языковые нейросети управлять домом, нужно определить план всей системы умного дома, он безумно простой. Сначала определим, что вся система у нас будет на Python, это хоть и очевидно, но не лишним было повториться. Далее полный алгоритм работы нашей системы.
1. Так как мы будем разговаривать с нашим умным домом, значит нам первым делом нужно сделать, чтобы наша система нас услышала. Для этого нужно установить библиотеку записи голоса.
2. Теперь нам нужно распознать наш голос в текст. Для этого тоже есть библиотека или нейросети. Сейчас это не важно.
3. Готовый текст нужно положить в заготовку для нашей нейросети, которая пойдет к ней на вход.
4. Заготовку отправить в нейросеть и получить от нее ответ.
5. Ответ от нейросети использовать как одну из команд, которые наша система исполнит.
6. После исполнения команды попросить нейросеть отчитаться о результате.
7. Результат озвучить для пользователя, для этого тоже есть простые библиотеки.
Это примерный план всей системы голосового ассистента для умного дома, которая будет понимать любой контекст, исполнять любые из готовых действий, а за тем давать осмысленный ответ.
Как заставить нейросеть исполнить команду?
Чтобы заставить нейросеть выполнить действие, нужно… А ничего не нужно, не сможет она выполнить действие. Но она может вернуть нам экшен! Например “MUSIC_ON”. То есть мы ему говорим:
- Братан, включи свет.
А он нам в ответ:
- "LIGHT_ON"
А дальше у нас просто куча условий в когда, типа:
Если “LIGHT_ON”, то подать питание на свет.
Но как нам сделать, чтобы нейронка отвечала нужным экшеном на нужный запрос?
Легко! При каждом запросе мы должны посылать в нее полноценную заготовку такого вида, например для открытия ворот:
Пользователь сказал: {Открой ворота}. К какому классу из представленных ты отнесешь этот запрос? [LIGHT_ON, LIGHT_OFF, OPEN_GATE, CLOSE_GATE]
Ответ дай в таком виде, например:
"EXAMPLE_ACTION"
Вот и все! Теперь наша нейросеть на обычный наш текст с просьбой будет отвечать чем то типа:
“LIGHT_OFF”
А если нам нужно, чтобы она сказала, что ворот успешно открылись, то при выполнении действия по открытию ворот просто попросите ее прокомментировать успешный статус открытия ворот. Бинго!
Вывод
Таким образом мы можем сделать любую систему которая исполнит наши действия. Я когда это сделал, был счастлив до невозможного, это ведь так просто, а работает безотказно!
Если вы хотите, чтобы я сделал статью с реализацией этого процесса в коде – подпишитесь на мой паблик и напишите в сообщения сообщества. Если увижу, что это нужно, статье быть!