Запускаем личный АИ-инфоконвейер: как я строю систему смыслового мониторинга с YAML и GPT. ai.. ai. automation.. ai. automation. Big Data.. ai. automation. Big Data. cli.. ai. automation. Big Data. cli. Data Engineering.. ai. automation. Big Data. cli. Data Engineering. documents.. ai. automation. Big Data. cli. Data Engineering. documents. gpt4all.. ai. automation. Big Data. cli. Data Engineering. documents. gpt4all. llm.. ai. automation. Big Data. cli. Data Engineering. documents. gpt4all. llm. python.. ai. automation. Big Data. cli. Data Engineering. documents. gpt4all. llm. python. self-hosted.. ai. automation. Big Data. cli. Data Engineering. documents. gpt4all. llm. python. self-hosted. yaml.. ai. automation. Big Data. cli. Data Engineering. documents. gpt4all. llm. python. self-hosted. yaml. искусственный интеллект.. ai. automation. Big Data. cli. Data Engineering. documents. gpt4all. llm. python. self-hosted. yaml. искусственный интеллект. парсинг.. ai. automation. Big Data. cli. Data Engineering. documents. gpt4all. llm. python. self-hosted. yaml. искусственный интеллект. парсинг. Урбанизм.

Отслеживаем новости, документы и тендеры

Rostral.io размышляет над ответом вместо вас
Rostral.io размышляет над ответом вместо вас

Привет! Каждый день приходится столько всего отслеживать— лучше делать это в кратком пересказе и без лишних движений.

Может быть, Вы хотите читать новости и статьи без лишней “воды”. А может, вам приходится следить по работе за длинными и скучными, но важными документами: новыми законопроектами, решениями арбитражных судов, государственными торгами и закупками?

Вот было бы здорово, чтобы сайты сами проверялись на наличие новых событий (даже если там нет RSS), выложенные на этих сайтах PDF и DOCX файлы сами выгружались, а мы видели краткую выжимку по каждому событию! И так — для каждого сайта. И все — в единой ленте.

Чтобы любой источник для наблюдения можно было бы добавить по YAML-конфигу, указав CSS-селекторы, правила нормализации и GPT-промт.

Как это работает

Вот, например, реальный пример из сферы урбанистики:

meta:
  name: Мониторинг ГИКЭ КГИОП
  description: Отслеживает появление новых историко-культурных экспертиз на сайте КГИОП СПб

source:
  type: html
  url: |
    {% set current_year = now().year %}
    https://kgiop.gov.spb.ru/deyatelnost/zaklyucheniya-gosudarstvennyh-istoriko-kulturnyh-ekspertiz/gosudarstvennye-istoriko-kulturnye-ekspertizy-za-{{ current_year }}-g/
  frequency: daily
 
gpt:
  prompt: |
    
    Проанализируй текст экспертизы ниже и выдели:

    1. Объект культурного наследия
    2. Адрес
    3. Заказчик или собственник
    4. Виды работ: реконструкция, реставрация и др.
    5. Кадастровые номера
    6. Краткое заключение или вывод

    Вот текст: {{ text }}

# Часть конфига для краткости пропущена, но все есть в репозитории

И при появлении на сайте очередного 300-страничного документа получить в своей ленте новостей те самые несколько пунктов, которые позволяют оценить будущую судьбу здания. Так как речь идет о GPT-пересказе, что-то может быть отражено неточно, но выжимки достаточно, чтобы понять, представляет ли информация интерес и надо ли изучать документ дальше:

----------------------------------------
1. **Объект культурного наследия**: «Особняк Дурново П.П.»
2. **Адрес**: Санкт-Петербург, Галерная д. 15, лит. А.
3. **Заказчик или собственник**: *Здесь название компании*
4. **Виды работ**: Ремонт фасадов и другие работы по сохранению объекта культурного наследия.
5. **Кадастровые номера**: Не указаны в тексте.
6. **Краткое заключение или вывод**: Экспертиза подтвердила соответствие проектной документации требованиям сохранения объекта культурного наследия регионального значения.

Это уже работает, хоть пока и требует полировки напильником: дорабатываю MVP в виде CLI на “Питоне”. Поддерживается выбор шаблона при запуске. Вывод идет в терминал и в лог-файл, а база данных и фласк-интерфейс (в котором и будет та самая единая лента наблюдения) — в ближайших планах.

Философия проекта

Разумеется, можно и нужно делать шаблоны под свои задачи. Сам проект с открытым исходным кодом. Я надеюсь, что такой проект будет полезен как для исследователей данных, которым нужно следить за сложными источниками (аналог Huginn, но со встроенным фидом и более простой логикой), так и для более широкой аудитории, кто хочет не пропустить что-то важное для себя (аналог changedetection.io, но вместо простого diff у нас лента событий, которые формируются путем более глубокого парсинга). Особенность — AI-пересказ новостей.

Сравнение с аналогами

Сравним наш проект с хорошо известными замечательными аналогами с открытым исходным кодом (присмотритесь к ним тоже, возможно, для ваших целей они подойдут больше!), которые так же могут работать как self hosted решения.

Характеристика

Rostral.io

Huginn

Changedetection.io

🔧 Тип проекта

CLI + YAML + AI

Web-интерфейс + сценарии-агенты

Web-интерфейс + мониторинг изменений

🧠 Глубина обработки

Семантический парсинг + GPT-интерпретация

Простые действия и фильтры

Text diff или визуальные различия

📄 Работа с документами

Поддержка PDF/DOCX и анализ содержимого

Ограничено — нужно писать парсеры или настраивать логику вручную

Нет обработки документов

🧩 Шаблоны

YAML-конфиги с CSS, нормализацией, GPT

JS/JSON-сценарии и блоки (agents)

Только URL и настройки diff

🔎 Сценарии наблюдения

Арбитраж, тендеры, экспертизы, новости

Почта, RSS, API, Twitter и др.

Простой мониторинг сайтов и страниц

🌐 Поддержка AI

GPT4All / Deepseek / локальные модели

Нет встроенной поддержки AI

Нет

🧭 Интерфейс

CLI (терминал), Flask UI — в разработке

Web UI

Web UI

📡 Вывод

Событийная лента + лог-файл

Множественные действия (email, webhook)

HTML или email

🧠 Фокус проекта

Семантический мониторинг и интерпретация

Автоматизация задач

Отслеживание изменений

⚙️ Локальный запуск

Да (без интернета, с локальной моделью)

Да

Да

🔓 Open source

✅ Да

✅ Да

✅ Да


Юридические аспекты

Так как с автоматизацией сбора данных связаны не столько технические, сколько сложные юридические и этические вопросы доступа к информации, я считаю себя обязанным об этом предупредить.

Конкретный пример: хотя чисто теоретически мы могли бы настроить сбор данных о судебных решениях, например, из той же картотеки арбитражных дел, мы должны иметь в виду, что за доступ к её API просят большие деньги (от 660 тыс. рублей на 2022 год, см. статью на VC.ru) . Это связано с тем, что сайт картотеки поддерживается частной компанией.

В проекте Rostral.io предполагается использование нашего open source продукта прежде всего для личных, образовательных или научных целей. Либо подразумевается, что мы получили доступ к API нужного ресурса и затем уже настраиваем для него шаблон (потому что хотим собрать все в одну ленту в виде единообразных саммэри). Также мы, конечно, должны стремиться к тому, чтобы учитывать ограничения robots.txt и выдерживать вежливые интервалы запросов к сайтам (например, не чаще чем раз в 5 секунд).

Технические особенности

Наиболее творческой мне кажется часть реализации, связанной с ИИ. Когда источников 100+ и в каждом может быть 100+ страниц текста (если это PDF), оплачивать токены ChatGPT может быть накладно.

Поэтому в качестве основного варианта используется локальная модель на основе Deepseek (можно подключить любую модель по своему желанию, но эта запускается на ноутбуке с 16 GB RAM и даёт осмысленные ответы).

Работа с ней идёт через библиотеку для “Питона” под названием GPT4All — такое решение показалось мне на данном этапе самым простым.

Но и для локальной модели “переварить” большие документы непросто. Поэтому применён следующий подход: сначала выбираются блоки текста по ключевым словам (например, в случае примера с экспертизами выше это могут быть слова “заказчик”, “собственник”, “проектом предусматривается” и т. п.). Затем эти фрагменты объединяются и передаются модели, что позволяет уложиться в ее окно возможностей. Как мне показалось, это эффективнее, чем обычный embedding.

Конвейер в заголовке не только метафора: по сути система работает как пайплайн, передавая источник по нескольким стадиях (fetch, extract, download, normalize и т. д.), которые управляются из шаблонов.

Я назвал проект Rostral.io (“Ростраль”) — по ростральным колоннам Петербурга, огонь которых освещает путь. Пока не знаю, как все пойдёт, но мне было важно поделиться этим с сообществом.

Полная спецификация проекта Rostral.io для разработчиков (на английском языке) вместе с исходным кодом доступна в репозитории на GitHub. Пулл реквесты приветствуются!

Как попробовать

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

cd rostral.io
pip install -r requirements.txt

# Дополнительные шаги:
# 1. Установите Tesseract OCR
#    Windows: winget install -e --id UB-Mannheim.TesseractOCR
#    Mac: brew install tesseract
#    Linux: sudo apt install tesseract-ocr

# 2. Скачайте модель вручную (более 4 ГБ на диске):
#    - Перейдите: https://huggingface.co/ct-2/DeepSeek-R1-Distill-Llama-8B-Q4_0-GGUF
#    - Скачайте файл DeepSeek-R1-Distill-Llama-8B-Q4_0.gguf
#    - Положите в папку: rostral.io/models/DeepSeek-R1-Distill-Llama-8B-Q4_0/

python3 -m rostral

А вам близок такой подход к наблюдению? Какие сценарии наблюдения, которые можно реализовать в виде шаблонов, были бы полезны вам? Госказкупки, pravo.gov.ru, regulation.gov.ru, патенты или что-нибудь еще?

Автор: alfablend

Источник

Rambler's Top100