README.md

Suprematist Article Finder

Платформа поиска научных статей с адаптивным дизайном в стиле супрематизма, использующая Tavily API для комплексного поиска академических исследований на платформе arxiv.org. Поиск осуществляется на русском и английском языках.

Основные возможности платформы

Двуязычный поиск

  • Двуязычный поиск (русский/английский)
  • Объединение результатов поиска

Фильтрация результатов

  • Фильтрация по дате публикации
  • Удаление дубликатов
  • Пагинация результатов

Экспорт данных

  • Выгрузка результатов в CSV формат
  • Сохранение метаданных статей

Удобный интерфейс

  • Минималистический супрематический дизайн, символизирующий сбор знаний с помощью платформы
  • Адаптивная верстка
  • Индикатор загрузки в виде кирпичиков в основании здания храма знаний
  • Предпросмотр результатов

Технологический стек

Backend

  • Python 3.11
  • Flask (веб-фреймворк)
  • Tavily API (поисковый движок)
  • Googletrans (перевод запросов)

Frontend

  • HTML5 / CSS3
  • JavaScript (vanilla)
  • Suprematist-inspired дизайн
  • адаптивная верстка
  • триптих К.С. Малевича

Структура проекта

suprematist-article-finder/
├── static/                 # Static assets / Статические файлы
│   ├── css/               # CSS styles / Стили
│   │   └── style.css     # Suprematist design & responsive layout / Супрематический дизайн
│   ├── js/               # JavaScript files / Клиентские скрипты
│   │   └── search.js     # Bilingual search & export / Двуязычный поиск и экспорт
│   └── images/           # Image assets / Изображения
│       └── malevich/     # Suprematist elements / Супрематические элементы
│           ├── square.jpg  # Black square / Чёрный квадрат
│           ├── cross.jpg   # Black cross / Чёрный крест
│           └── circle.jpg  # Black circle / Чёрный круг
├── templates/            # Flask templates / Шаблоны Flask
│   ├── base.html        # Base layout / Базовый шаблон
│   └── index.html       # Search interface / Поисковый интерфейс
├── app.py               # Core logic: Tavily API & translations / Основная логика
├── main.py              # Entry point / Точка входа
├── Dockerfile           # Container setup / Настройка контейнера
├── pyproject.toml       # Dependencies / Зависимости
├── requirements.txt       # Dependencies / Зависимости для контейнера
└── README.md           # Documentation / Документация

Локальное развёртывание

Запуск на локальном окружении

Предустановка

Необходимо предустановить Python версии 3.11

sudo apt install python3.11

Клонирование репозитория

Выполнить клонирование репозитория

git@gitflic.ru:donaldtrup/suprematistarticlefinder.git

Активация виртуального окружения

Перейти в директорию в репозиторием и выполнить команду

python3.11 -m venv .

Установка зависимостей

pip install flask googletrans requests python-dotenv

Настройка переменных окружения

  • Создать файл .env в корневой директории
  • Добавить ваш API ключ Tavily (без кавычек):

    TAVILY_API_KEY=your_api_key_here
    
  • Если ключа нет, тогда выполните действия:
    • зарегистрируйтесь/залогиньтесь на сайте https://tavily.com
    • перейдите на страницу https://app.tavily.com/home
    • из раздела API Keys скопируйте ключ.

Запуск приложения

python main.py

Приложение будет доступно по адресу: http://localhost:5000

Запуск с помощью Docker

Предустановка

  • Docker

Сборка образа

  • Перейти в директорию с кодом
  • Выполнить команду

    docker build -t suprematist-article-finder .
    

Запуск контейнера

docker run -p 5000:5000 -e TAVILY_API_KEY=укажите_api_ключ suprematist-article-finder

Обратите внимание: API ключ указывается без кавычек.

Приложение будет доступно по адресу: http://localhost:5000

Примечание: При запуске через Docker убедитесь, что вы передали корректный TAVILY_API_KEY через переменную окружения при запуске контейнера.

Описание API Endpoints

  • GET / - Главная страница
  • POST /search - Поиск публикаций
  • GET /filter - Фильтрация результатов
  • GET /export - Экспорт найденных результатов в CSV

Примечания и планируемые улучшения

  • В настоящий момент поиск осуществляется только по статьям на arxiv.org
  • Перманентная отладка поискового движка для достижения идемпонентности выполнения двуязычных запросов
  • В планах подключение и выбор поиска на следующих ресурсах:
    • Киберленинка https://cyberleninka.ru/
    • Российская государственная библиотека http://search.rsl.ru/
    • база по медицине и биологии https://www.ncbi.nlm.nih.gov/pubmed
    • база статей по разным темам https://www.academia.edu
    • база англоязычных статей, журналов и научных работ https://pubmed.ncbi.nlm.nih.gov/
    • база статей по разным темам https://internal-www.frontiersin.org/books/all_books
  • Предполагается проанализировать варианты и прикрутить LangChain для использования LLM на основе моделей с Hugging Face для наиболее адаптивного поиска
  • Реализация более широких возможностей поиска без использования дополнительных механизмов (в частности, реализовать возможность задавать дату/интервал дат непосредственно через поисковый запрос с помощью естественного языка, а не отдельными фильтрами)
  • Для работы приложения требуется действующий API-ключ Tavily
  • Результаты кэшируются для оптимизации повторных запросов
Описание

Сайт разрабатывался на AI-платформе https://replit.com. К сожалению, задеплоить его не удалось, ввиду отсутствия стабильного соединения VPN. Однако проект можно развернуть вручную в соответствии с прилагаемым описанием.

Конвейеры
0 успешных
0 с ошибкой