Сервис позволяет настроить рассылку самых важных (важность определяется пользователем) новостей за период времени по определённой тематике, целиком контролируя каждый шаг обработки информации - от выбора источников до вёрстки дайджеста.
Разработать прототип, который будет автоматически собирать и анализировать информацию с выбранных сайтов, формировать дайджест новостей и выделять самую важную информацию для ИТ подразделения.
ИТ подразделение сталелитейной компании нуждается в оперативной информации о новейших продуктах, инициативах конкурентов, инновациях в системах хранения и управления данными, законодательных требованиях, открытиях и других событиях, которые могут повлиять на стратегию компании. В настоящее время поиск информации происходит вручную, что требует больших временных затрат и может привести к упущению важных событий.
- Язык программирования: Python.
- Библиотеки для веб-скрейпинга: Scrapy.
- Система хранения данных: Google Docs, YDB.
- Средства анализа данных: OpenAI API (GPT-3.5, GPT-4).
- Интерфейс для настройки LLM: LangChain
- Интерфейс для отображения результатов: Vue, Vuetify
- Модуль сбора данных (веб-скрейпинг с использованием Selenium).
- Модуль хранения данных (Google Docs).
- Модуль анализа данных с использованием OpenAI API.
- Модуль генерации дайджеста с помощью OpenAI API.
- Модуль отображения данных (Streamlit и Telegram Bot).
- Data Sources: Google Spreadsheets - таблица с указанием ссылки на источник данных и его тип
- Data Collection: RSS, Scrapy, Site AI Parse - модуль сбора информации, собирающий данные одним из трёх способов.
- Scrape Results: Google Spreadsheets - таблица с хранящимися ссылками и текстами статей
- Ranking: OpenAI API - модуль оценки статьи с помощью структурированного промпта
- Rank Results: Google Spreadsheets - таблица с результатами оценки статей
- Summarization: OpenAI API - модуль суммаризации текста первых 5 статей по сумме баллов
- Summarization Result: Google Spreadsheets - таблица с саммари статей из топа
- Digest Generation - модуль заполнения документа дайджеста из суммаризованных новостей
- Digest: Google Documents - Google-документ дайджеста с заполненной информацией
- Mail: Yandex.PostBox - Сервис рассылки
flowchart TD
DataSources --> Scraper
Scraper --> ScrapeResult
ScrapeResult --> Ranker
Ranker --> RankResult
RankResult --> Summarizer
Summarizer --> SummarizationResult
SummarizationResult --> DigestGeneration
DigestGeneration --> Digest
Digest --> Mail
DataSources[(Data Sources: Google Spreadsheets)]
ScrapeResult[(Scrape Results: Google Spreadsheets)]
RankResult[(Rank Results: Google Spreadsheets)]
SummarizationResult[(Summarization Results: Google Spreadsheets)]
Digest(Digest: Google Documents)
Scraper[Data Collection: RSS, Scrapy, Site AI Parse]
Ranker[Ranking: OpenAI API]
Summarizer[Summarization: OpenAI API]
DigestGeneration[Digest Generation]
Mail[Mail: Yandex.PostBox]
Запускает выполнение ноутбуков, связанных со сбором данных. Этот метод работает с следующей таблицей: Google Sheets - Таблица сбора данных
- 0 source: Источники для парсинга
- 1 rss parse: Сюда парсятся RSS-источники
- 2 ai parse st1: Сюда парсятся сайты целиком
- 3 ai parse st2: LLM-экстракция новостей из полностью спарсенных сайтов
- Промпт: LLM Extraction Prompt
- 4 final list for rate: Отфильтрованный список по сегодняшней дате
Запускает выполнение ноутбука, связанного с оценкой новостей. Этот метод работает с следующей таблицей: Google Sheets - Таблица оценки новостей
- Рейтинги извлекаются из
final list for rateи ранжируются по заданным критериям:- Настройки критериев: Настройки критериев
Запускает выполнение ноутбука, отвечающего за суммаризацию новостей. Этот метод работает с следующей таблицей: Google Sheets - Таблица суммаризации новостей
- Переведенные и сжатые новости для дайджеста
- Настройки правил: Настройки правил
Запускает выполнение ноутбука для генерации дайджеста новостей. Шаблон настраивается здесь: Google Docs - Шаблон дайджеста
- Дайджест возвращается прямо в этот шаблон.
Получает прогресс выполнения для конкретного этапа.
Исходный код фронтенда находится в директории frontend. Все дальнейшие команды этого раздела запускаются из данного каталога.
Для конфигурации отображаемых страниц при запуске локального сервера и сборке статики указываются переменные:
- VITE_PARSING_SITES_TABLE_URL - ссылка на таблицу для выбора сайтов для парсинга
- VITE_EXTRACTED_NEWS_TABLE_URL - ссылка на таблицу с новостями, полученными в результате парсинга
- VITE_DIGEST_TEMPLATE_URL - ссылка на редактор Google Docs для изменения шаблона PDF-дайджеста
- VITE_RANKED_NEWS_TABLE_URL - ссылка на таблицу с отранжированными статьями с указанием их рейтинга
- VITE_SUMMARIZED_NEWS_TABLE_URL - ссылка на таблилцу с суммаризованными новостями
- VITE_BAD_PARSING_SITES_TABLE_URL - ссылка на таблицу с новостями, неподходящими под тематику
- PARSING_LANG_SMITH_URL - ссылка на интерфейс LangSmith для редактирования промпта парсинга
- RANKING_LANG_SMITH_URL - ссылка на интерфейс LangSmith для редактирования промпта ранжирования
- SUMMARIZING_LANG_SMITH_URL - ссылка на интерфейс LangSmith для редактирования промпта суммаризации
- API_BASE_URL - адрес хоста для обращения к api.
npm run serveПо умолчанию сервер доступен по адресу http://localhost:3000
npm run buildАртефакты сборки складываются в директорию frontend/dist.
Исходные коды бэкенда находятся в директории backend Для запуска проекта в папку backend/news_pipeline необходимо поместить исходный файл закрытой библиотеки gsheethandler и файл config.json, а также заполненный api-ключами и ссылками на таблицы. Пример файла, config_example.json находится в папке backend/news_pipeline.
В директории backend/news_pipeline ввести
docker build .docker run news_pipeline