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. Однако проект можно развернуть вручную в соответствии с прилагаемым описанием.