В последнее время мне приходится активно использовать чат 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: Перейдите в Яндекс.Диалоги и создайте новый диалог

  1. Нажмите на кнопку “Создать диалог”.

  2. В появившемся окне выберите тип навыка “Навык в Алисе”.

Шаг 2: Заполните параметры навыка

  • Имя навыка:

Выберите любое имя, по которому вы будете вызывать данный навык. Подберите такое имя, которое хорошо распознаётся колонкой, потому что если указать “GPT”, Алиса сообщит, что уже использует GPT. Имя навыка должно состоять минимум из двух слов.

  • Backend:

Укажите адрес вашего хостинга, где размещён скрипт. Например:

https://your-domain.com/index.php
  • Голос:

Чтобы не путать при включённом навыке, рекомендуется выбрать голос отличный от Алисы.

  • Примеры запросов:

Укажите команды, которые вы будете использовать для вызова навыка. Например:

Запусти навык {Название навыка}
  • Тип доступа:

Выберите “Приватный”.

Шаг 3: Дополнительные настройки

Укажите: Имя разработчика, Категорию, Описание, Иконку

Так как вы создаёте навык только для себя, содержание этих пунктов не так важно.

Шаг 4: Публикация навыка

После заполнения всех настроек нажмите кнопку “Опубликовать” в правом верхнем углу. Публикация занимает некоторое время.

Проверка работоспособности

  1. Перейдите на вкладку «Тестирование» в интерфейсе Яндекс.Диалогов.

  2. Проверьте работу навыка, введя одну из ваших команд. Тестирование можно провести как для черновика, так и для опубликованной версии навыка.

После успешного тестирования и публикации навыка вы можете вызывать его командой (указанной вами) Алисе.

Ссылка на репозиторий

Комментарии (8)


  1. iron-zorin
    03.12.2024 20:51

    А ГигаЧат не пробовали?
    Мне кажется, что он значительно умнее Алисы


    1. FanatPHP
      03.12.2024 20:51

      А зачем ему гига чат от сбера, если у него оригинальный ChatGPT?


      1. tkachikov
        03.12.2024 20:51

        А зачем в Алису его добавлять, если можно приложение скачать?


  1. SHAREN
    03.12.2024 20:51

    Он сразу в режиме стриминга отвечает или нужно ждать пока свормируется весь ответ?


    1. zabarov Автор
      03.12.2024 20:51

      Отвечает сразу, но там есть у самой системы навыков технические ограничения. Если ответ не придёт в течении 3-х секунд, то он не ответит. Поэтому лучше использовать более быстрые модели, например gpt-4o-mini


      1. SHAREN
        03.12.2024 20:51

        В API можно включить режим стриминга, чтобы ответ приходил частями как в официальном приложении.

        Хотелось бы предложить включить режим стриминга в ответах от ChatGPT. Для этого нужно:

        1. Добавить параметр stream=True в запрос openai.ChatCompletion.create.

        2. Организовать обработку фрагментов ответа (chunks) через цикл for по стриму.

        3. Если Алиса не поддерживает отправку данных частями, можно накапливать ответ в строку и отправлять его целиком после завершения стрима.

        Пример обработки:

        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 пользователю

        Будет здорово, если удастся это реализовать!


  1. serg8880
    03.12.2024 20:51

    Спасибо за статью, очень интересно.

    Подскажите , а какие пользовательские сценарии Вы используете?

    Просто голосовой режим не очень удобен в работе как по мне, я даже рецепт блюд не очень люблю голосом слушать, так как тяжело воспринимать.


    1. zabarov Автор
      03.12.2024 20:51

      Именно голосом мне нужно было чтобы по английскому помог (общение, практика). Потому что сама Алиса очень плоха в этом. Но надо учитывать что голоса для навыков заточены под русский язык и у них в английском есть акцент.