Утренние дайджесты с YandexGPT

Утренние дайджесты с YandexGPT
Rene Böhmer / Unsplash

Вот такие дайджесты я открываю каждое утро в своей читалке новостей:

Пример утренних дайджестов в RSS читалке

При чём тут YandexGPT? Без нейросетей подобные дайджесты были бы шаблонными и скучными:

Время суток: утро.

Погода: Облачно, 10.4 °C. Ветер 4.61 м/с.

Список задач на сегодня:
- Написать статью про утренние дайджесты

Биржевые котировки на данный момент:
- IMOEX: 2660.36 (-2.14%)
- S&P500: 5808.12 (-0.03%)
- USD_RUB: 96.6657 (-0.08%)

Подписчики man smart-home:
- Telegram: 175
- YouTube: 692

И если в виде текста подобное еще можно терпеть, то в озвучке от колонки шаблонный текст вообще плохо воспринимается. А в пересказе от нейросетей получается как-то человечнее что ли 🙂

0:00
/0:14

В примере выше колонкой управляет Home Assistant, он же собирает всю информацию, генерирует шаблонный текст и пересказывает его через YandexGPT.

Кстати, идея использовать LLM и Home Assistant для создания дайджестов приходила в голову не только мне:

Интеграции Home Assistant с LLM
Автор: Ktibr

Поэтому если у нас мысли сходятся и вам захотелось повторить что-то похожее, то сейчас расскажу, как можно сделать такие же дайджесты, как у меня 🙂. Единственное, вряд ли вам нужно прям точь-в-точь то же самое, поэтому я расскажу про упрощенный вариант, который легче адаптировать под себя.

Что за упрощенный вариант?

  • Для примера я буду отправлять дайджесты в Telegram, хотя сам использую RSS-читалку для потребления новостей. Всё-таки генерация своей ленты выходит за рамки этой статьи, да и RSS уже давно никому не нужон.
  • Также вряд ли вам нужны биржевые котировки и статистика по подписчикам на моем канале — эту часть я выкину.
  • Я использую Sleep as Android для отслеживания сна, поэтому дайджесты генерируются сразу после моего пробуждения. Но для примера я буду использовать фиксированное время.

Интеграция Home Assistant и YandexGPT

Первым делом нужно установить вот эту интеграцию:

GitHub - black-roland/homeassistant-yandexgpt: YandexGPT integration for Home Assistant
YandexGPT integration for Home Assistant. Contribute to black-roland/homeassistant-yandexgpt development by creating an account on GitHub.

На вкладке Wiki подробно расписан процесс установки и добавления YandexGPT в Home Assistant, поэтому надеюсь здесь проблем не возникнет.

После добавления YandexGPT уже можно взаимодействовать с нейронкой через conversation.process:

conversation.process в Home Assistant

Но для наших дайджестов стандартный системный промпт не подойдет и его нужно заменить в настройках интеграции:

Диалоговое окно настроек YandexGPT.

Можете взять инструкции ниже в качестве образца и адаптировать под свои нужды:

Ты — ведущий утреннего шоу на ТВ, я твой зритель.
Поприветствуй зрителя с учетом времени суток.
В ответе кратко расскажи о погоде и перечисли запланированные встречи (не упоминай встречи, если их нет). Перескажи список задач на сегодня.
Сформулируй ответ так, чтобы получился новостной репортаж на утреннем ТВ.
Отвечай простым текстом, без Markdown, без вводных фраз и объяснений.

Дальше необходимо добавить автоматизацию, которая будет запускаться каждое утро и отправлять готовый дайджест в Telegram:

automation:
  - alias: "Compose morning digests and send them to Telegram"
    mode: single
    triggers:
      - trigger: time
        at: "07:30:00" # в 7:30 утра
    actions:
      - action: conversation.process
        data:
          agent_id: conversation.yandexgpt
          text: |
            Время суток: утро.

            Погода: {{ state_translated('weather.saint_petersburg') }}, {{ state_attr('weather.saint_petersburg', 'temperature') }} °C. Ветер {{ state_attr('weather.saint_petersburg', 'wind_speed') }} м/c.

            {% if (state_attr('calendar.calendar', 'location') | d(boolean=true) | length > 0) -%}
            У зрителя на сегодня запланирована встреча по адресу: {{ state_attr('calendar.calendar', 'location') }}.

            {% endif -%}

            Список задач зрителя на сегодня:
            {% if not is_state('todo.dom_roland', '0') -%}
              - {{ state_attr('todo.dom_roland', 'all_todos') | map(attribute='subject') | join('\n- ') }}
            {%- endif %}
        response_variable: gpt_response
      - service: notify.telegram_me
        data:
          message: "{{ gpt_response.response.speech.plain.speech }}"

Автоматизация генерирует шаблонный текст, отправляет его в YandexGPT и записывает ответ от нейронки в переменную gpt_response. А на следующем шаге текст ответа отправляется в Telegram.

Настройка интеграции с Telegram описана в документации — здесь дополнительные пояснения от меня вряд ли нужны. А вот по шаблону, думаю, нужно дать пару комментариев:

  • weather.saint_petersburg — это погодный сенсор, не забудьте подставить свое значение.
  • Я активно пользуюсь календарем и заношу в него события, чтобы не продолбаться и не забыть, что мне надо сходить на стрижку на следующей неделе, например. При этом сам календарь (calendar.calendar) синхронизируется с Home Assistant через CalDAV.
  • Для ведения задач я использую Microsoft ToDo. Home Assistant обновляет список задач (todo.dom_roland) с помощью вот этой интеграции.
  • Предварительно шаблон можно отладить в панели разработчика, чтобы лишний раз не слать запросы в облако.

Результат

В итоге вот такие дайджесты будут приходить каждое утро:

Пример дайджестов в Telegram

И если раньше вы смотрели на скучный список дел на день и вам не хотелось ими заниматься, то теперь нейросеть будет присылать список задач, которые вам захочется все переделать 😄

Собственно это все, что я хотел рассказать про нейросетевые дайджесты. Это всего лишь один из примеров того, как можно использовать большие языковые модели. Если у вас есть какие-то интересные идеи по использованию нейросеток, то буду рад почитать в комментариях.

man smart-home
Telegram про умный дом: идеи, девайсы, Home Assistant.

Комменты можно оставлять под статьей или в Telegram.

Бонус: Иллюстрации с использованием YandexART

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

Санкт-Петербург, утро, зима, {{ state_translated('weather.saint_petersburg') }}, пейзаж

Другими словами, это пейзаж Санкт-Петербурга, который меняется в зависимости от погоды за окном.

Сгенерировать такую картинку с одной стороны не сложно, а с другой стороны в Home Assistant этот процесс сделан не очень удобно. Поэтому предварительно нужно будет сделать 2 вещи:

  1. В настройках Home Assistant нужно будет добавить директорию /tmp в белый список;
  2. А так же понадобится получить идентификатор интеграции в инструментах разработчика.

Предварительные шаги

Чтобы Home Assistant смог прочитать сгенерированную картинку, нужно отредактировать configuration.yaml и добавить /tmp в белый список:

homeassistant:
  allowlist_external_dirs:
    - /tmp

Затем нужно перейти в инструменты разработчика и «вытащить» идентификатор установленной интеграции. Для этого на вкладке с действиями нужно выбрать yandexgpt_conversation.generate_image, а так же нужную интеграцию с YandexGPT:

yandexgpt_conversation.generate_image в Home Assistant

Затем идентификатор можно будет скопировать, перейдя в режим YAML:

config_entry

Добавляем иллюстрации в дайджест

Наконец можем перейти непосредственно к генерации иллюстраций. Для этого нужно добавить вызов сервиса yandexgpt_conversation.generate_image и немного отредактировать отправку сообщений в Telegram:

...

      - action: yandexgpt_conversation.generate_image
        data:
          config_entry: 01JA39HX1W9EYXM68NZMJ0N0PG # идентификатор установленной интеграции
          seed: "{{ now().strftime('%Y%m%d') }}"
          file_name: "/tmp/scenery.jpg"
          prompt: "Санкт-Петербург, утро, зима, {{ state_translated('weather.saint_petersburg') }}, пейзаж"
        response_variable: art_response
      - service: notify.telegram_me
        data:
          message: ""
          data:
            photo:
              - file: "{{ art_response.file_name }}"
                caption: "{{ gpt_response.response.speech.plain.speech }}"
Зачем YandexGPT в Home Assistant?
Примеры использования нейросети YandexGPT и текущий статус интеграции с Home Assistant.

Была ли статья полезна?

Хотите сказать спасибо? Кофе автору — ваша благодарность.

На кофе
Подписка на новые статьи

Уведомления, как только в блоге появится что-нибудь интересненькое.

Подписываясь, вы даете согласие на обработку персональных данных.