В последнее время мне приходится активно использовать чат GPT в своей работе, а дома для музыки и управления умным домом я использую колонки Алиса. Алиса очень удобна в использовании и управлении, однако иногда ей не хватает интеллекта и гибкости, присущих последним моделям от OpenAI. Я подключил Yandex GPT Pro с последней версией модели, но это особо не помогло. Поэтому я задумался: можно ли использовать чат GPT на колонке Алиса? Следует отметить, что я не разработчик и хотел реализовать это максимально просто, используя имеющиеся у меня ресурсы.
На первый взгляд, тема кажется заезженной — сейчас чат GPT подключают практически ко всему, разве только не к утюгам. Но, как ни странно, на эту тему я нашёл только одну статью на Хабре. Вооружившись чатом GPT, я решил конвертировать код из данной статьи на Python в PHP (поскольку под PHP проще найти хостинг).
Требования
Чтобы воспользоваться этим скриптом, вам потребуется:
Обычный хостинг для веб-сайтов на PHP с зарубежным IP (API от OpenAI не работает на территории России).
Ключ API OpenAI.
Поддержка PHP 7.4 или выше.
Composer для управления зависимостями.
Расширение cURL для PHP.
Я использовал Timeweb Cloud. Там можно быстро поднять сервер в Нидерландах, установить FASTPANEL и создать сайт. Можно выбрать самую недорогую конфигурацию. Полезные ссылки:
Порядок установки
Шаг 1: Создайте сайт на хостинге
НУстанавливать можно как в корневую папку, так и в любую другую папку на хостинге. Папка, в которой будет происходить установка, должна быть пустой.
Шаг 2: Подключитесь к серверу через консоль
Используйте SSH для подключения к вашему серверу. Пример команды для подключения:
ssh username@your-domain.com
Шаг 3: Клонируйте репозиторий в текущую директорию
Важно: Убедитесь, что текущая директория пуста, чтобы избежать конфликтов файлов.
git clone https://github.com/zabarov/alice-gpt.git .
Шаг 4: Установите зависимости с помощью Composer
Выполните следующую команду в корневой директории вашего сайта:
composer install
Шаг 5: Создайте файл .env на основе .env.example
Выполните команду:
cp .env.example .env
Шаг 6: Откройте файл .env и добавьте ваш OpenAI API ключ
Используйте текстовый редактор, например, nano:
nano .env
Добавьте строку с вашим API ключом:
OPENAI_API_KEY=ваш_openai_api_key
Сохраните и закройте файл.
Настройка навыка для колонки Алиса
Далее необходимо настроить навык для колонки Алиса. Лучше всего создавать навык на том же аккаунте, на котором работает колонка Алиса. В этом случае вам не придётся проходить модерацию, и расходы будут меньше.
Шаг 1: Перейдите в Яндекс.Диалоги и создайте новый диалог
Нажмите на кнопку “Создать диалог”.
В появившемся окне выберите тип навыка “Навык в Алисе”.
Шаг 2: Заполните параметры навыка
Имя навыка:
Выберите любое имя, по которому вы будете вызывать данный навык. Подберите такое имя, которое хорошо распознаётся колонкой, потому что если указать “GPT”, Алиса сообщит, что уже использует GPT. Имя навыка должно состоять минимум из двух слов.
Backend:
Укажите адрес вашего хостинга, где размещён скрипт. Например:
https://your-domain.com/index.php
Голос:
Чтобы не путать при включённом навыке, рекомендуется выбрать голос отличный от Алисы.
Примеры запросов:
Укажите команды, которые вы будете использовать для вызова навыка. Например:
Запусти навык {Название навыка}
Тип доступа:
Выберите “Приватный”.
Шаг 3: Дополнительные настройки
Укажите: Имя разработчика, Категорию, Описание, Иконку
Так как вы создаёте навык только для себя, содержание этих пунктов не так важно.
Шаг 4: Публикация навыка
После заполнения всех настроек нажмите кнопку “Опубликовать” в правом верхнем углу. Публикация занимает некоторое время.
Проверка работоспособности
Перейдите на вкладку «Тестирование» в интерфейсе Яндекс.Диалогов.
Проверьте работу навыка, введя одну из ваших команд. Тестирование можно провести как для черновика, так и для опубликованной версии навыка.
После успешного тестирования и публикации навыка вы можете вызывать его командой (указанной вами) Алисе.
Комментарии (8)
SHAREN
03.12.2024 20:51Он сразу в режиме стриминга отвечает или нужно ждать пока свормируется весь ответ?
zabarov Автор
03.12.2024 20:51Отвечает сразу, но там есть у самой системы навыков технические ограничения. Если ответ не придёт в течении 3-х секунд, то он не ответит. Поэтому лучше использовать более быстрые модели, например gpt-4o-mini
SHAREN
03.12.2024 20:51В API можно включить режим стриминга, чтобы ответ приходил частями как в официальном приложении.
Хотелось бы предложить включить режим стриминга в ответах от ChatGPT. Для этого нужно:
Добавить параметр stream=True в запрос openai.ChatCompletion.create.
Организовать обработку фрагментов ответа (chunks) через цикл for по стриму.
Если Алиса не поддерживает отправку данных частями, можно накапливать ответ в строку и отправлять его целиком после завершения стрима.
Пример обработки:
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=dialog, stream=True )full_response = "" for chunk in response: partial_content = chunk['choices'][0]['delta'].get('content', '') full_response += partial_contentОтправить full_response пользователю
Будет здорово, если удастся это реализовать!
serg8880
03.12.2024 20:51Спасибо за статью, очень интересно.
Подскажите , а какие пользовательские сценарии Вы используете?
Просто голосовой режим не очень удобен в работе как по мне, я даже рецепт блюд не очень люблю голосом слушать, так как тяжело воспринимать.
zabarov Автор
03.12.2024 20:51Именно голосом мне нужно было чтобы по английскому помог (общение, практика). Потому что сама Алиса очень плоха в этом. Но надо учитывать что голоса для навыков заточены под русский язык и у них в английском есть акцент.
iron-zorin
А ГигаЧат не пробовали?
Мне кажется, что он значительно умнее Алисы
FanatPHP
А зачем ему гига чат от сбера, если у него оригинальный ChatGPT?
tkachikov
А зачем в Алису его добавлять, если можно приложение скачать?