Skip to content
View Ilyat9's full-sized avatar
🏠
Working from home
🏠
Working from home

Block or report Ilyat9

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Ilyat9/README.md

🇬🇧 English · 🇷🇺 Русский


Студент 3 курса ПМИ МАИ, Москва. Последний год строю системы вокруг LLM и NLP: многостадийные поисковые пайплайны, семантический поиск и реранжирование, дедупликацию, кластеризацию и детекцию перефраза. Бэкенд — инженерный фундамент: ML-решения доезжают до пользователей в виде API. Английский — B2.


📌 Главное за 30 секунд

Коммерческий LLM/OSINT224 коммита · многостадийный LLM-пайплайн · ~100+ e2e-тестов на Playwright
CityFeedEnd-to-end ML: дедупликация, кластеризация, персональное ранжирование, LLM-суммаризация · NDCG@5 (backoff) 0.611
Semantic Plagiarism DetectorBi-encoder → cross-encoder · калибровка на PAWS и своём корпусе · F1 0.856, ROC-AUC 0.935
AgentalyzeEval harness для браузерных LLM-агентов · 30 задач, 6 категорий, 12 верификаторов · 232 теста · live-демо
mutagen-cliLLM-driven mutation testing для pytest · PyPI · diff-based анализ · проверено на шести реальных проектах
ХакатоныВШЭ × Wildberries — топ-10 соло · Nuclear IT Hack МИФИ — 1/8 финала · SBER HACK SPRING — топ-6

💼 Опыт работы

Младший разработчик · консалтинговое агентство

Корпоративная разведка, due diligence · март 2026 — настоящее время · Москва

224 коммита | команда 3+ разработчиков

Разрабатываю внутреннюю OSINT-платформу для проверки контрагентов: автоматизированный сбор и синтез информации об объекте в структурированный отчёт (веб-приложение + Telegram/email-боты). Продукт под NDA, поэтому ниже — классы задач без деталей реализации.

  • LLM-исследование сущностей: развивал и расширял многостадийный LLM-конвейер для автоматизированного сбора, извлечения и консолидации информации об объектах поиска. Обеспечил устойчивость через fallback-цепочку резервных моделей при отказах/ограничениях провайдера, вынес управление промптами в отдельный слой, ввёл настраиваемые лимиты на стоимость и глубину анализа.
  • Асинхронный оркестратор проверок: дорабатывал устойчивость параллельного выполнения десятков независимых проверок и обработку ошибок внешних интеграций; настраивал контейнеризованный деплой под новые модули.
  • Модуль сетевой разведки (с нуля): реализовал автоматизированный сбор открытых сетевых данных об объекте с контролем параллелизма и приоритизацией источников по доступности.
  • Модуль оценки связанности ресурсов (с нуля): реализовал систему сопоставления объектов по набору независимых признаков с итоговым скорингом уверенности; нашёл и устранил источники ложных срабатываний в проде.
  • Система формирования отчётов: переработал генератор итогового отчёта на новый формат вывода и практически полностью пересобрал визуальный слой — адаптивная вёрстка, единая дизайн-система, интерактивные элементы без зависимости от JavaScript (для совместимости с ограниченными встроенными браузерами), экспорт в распространённые офисные форматы прямо из интерфейса. ~100+ автоматизированных end-to-end тестов на кросс-браузерность, отзывчивость и доступность.
  • Инженерная дисциплина: регулярный рефакторинг монолитных модулей на независимые компоненты с явными зависимостями, устранение проблем безопасности (утечки в логи, ложные детекторы).

Довёл до пользователей ещё два внутренних инструмента (репозитории закрытые):

  • Standalone-версия поискового движка — портированный основной алгоритм в изолированный сервис с собственным интерфейсом, отображением хода выполнения в реальном времени и историей запусков. Доставка без установки дополнительного окружения.
  • GUI-конвертер отчётов в табличный формат — desktop-приложение с drag-and-drop и режимом пакетной обработки, полностью локальная обработка без внешних сервисов. Поддержка настраиваемых шаблонов и сохранения состояния между запусками; юнит-тесты; сборка под основные ОС.

🧠 ML / NLP проекты


📰  CityFeed

end-to-end ML-система персональной новостной ленты в Telegram

Собирает городские новости из СМИ и Telegram-пабликов, сливает пересказы в события, группирует события в сюжеты и учится на 👍/👎 каждого пользователя. Работает как связка «ноутбук — тяжёлый дневной прогон» и «сервер — лёгкий Telegram-бот 24/7». У каждого компонента — бейзлайн, воспроизводимый отчёт (cityfeed eval) и разбор ошибок.

Компонент Решение Результат
Дедупликация blocking + обучаемый парный скорер на 9 признаках + complete-linkage guard F1 1.000 против 0.967 у TF-IDF-бейзлайна
Кластеризация HDBSCAN (с фолбэком на agglomerative) по скользящему окну 3 дня ARI ≈ 0.37 — вровень с KMeans, которому подсказали истинное k
Ранжирование бэкофф global → personal, признаки фиксируются в момент показа NDCG@5 0.611 (backoff) против 0.521 у эвристики и 0.390 у случайного порядка
Суммаризация локальная LLM (Ollama) + программная верификация evidence провал проверки → ретрай → деградация до экстрактива без галлюцинаций

Тяжёлые зависимости (sentence-transformers, hdbscan, lightgbm, telethon, python-telegram-bot) опциональны: без них ядро работает на документированных фолбэках (hashing-эмбеддер, agglomerative-кластеризация, HistGradientBoosting, экстрактивные пересказы) — именно они гоняются в CI. Какой бэкенд отработал, фиксируется в отчёте.


детекция заимствований и перефраза

Веб-сервис: документ (.docx / .pdf / .txt) → поиск источников в интернете → вердикт по каждому фрагменту (verbatim / paraphrase / original) → PDF-отчёт.

Двухстадийное сравнение: би-энкодер отсекает нерелевантное, кросс-энкодер перепроверяет топ-k. Пороги откалиброваны на PAWS dev и собственном размеченном корпусе (80 пар, включая частичные заимствования; итоговая accuracy на нём — 0.752).

Ablation, PAWS test (n=2000):

Подход F1 ROC-AUC STS-B Spearman
TF-IDF + cosine (baseline) 0.645 0.708 0.709
Bi-encoder MiniLM 0.608 0.650 0.867
Bi → Cross-encoder stsb-roberta (zero-shot, дефолт пайплайна) 0.619 0.613 0.919
Bi → Cross-encoder fine-tuned (PAWS train, 2 эпохи) 0.856 0.935 0.883

Fine-tuning даёт +24pp F1 — и ломает калибровку градуированного сходства (STS-B Pearson 0.920 → 0.724). Продуктовый вердикт строится на пороге по абсолютному значению скора, поэтому в дефолте пайплайна осталась zero-shot модель: лучший результат в таблице и правильный выбор для задачи здесь не совпадают.

Семь кейсов failure analysis разобраны письменно: почему оптимальный на PAWS порог систематически хуже на естественных текстах, почему retrieval-кросс-энкодер — плохой скорер сходства, как sigmoid поверх нормализованного выхода уничтожил разделение классов.


🕹️  Agentalyze

eval harness для браузерных LLM-агентов

Бенчмарк из 30 рукописных агентных веб-задач (6 категорий, каждая целится в конкретный failure mode — неверный выбор инструмента, галлюцинация элемента, зацикливание) на локальных HTML-фикстурах и реальном Chromium. Проект завершён, доступно live-демо — можно запустить браузерного агента на своём API-ключе прямо в браузере.

  • Вердикт решает не модель. Успех определяет программный верификатор по финальному DOM (12 верификаторов: маркеры на странице, значения полей, cookies, селекторы) — не самооценка LLM-as-a-judge.
  • Полная трассировка. Каждый шаг ReAct-цикла — JSON-дамп: контекст, ответ модели, вызванный инструмент, хэш DOM, скриншот, токены, латентность.
  • Regression-гейт для CI. Detect деградации между двумя прогонами со стандартизированными exit-кодами (0/1/2), готово для блокировки в pull request.
  • Сравнение моделей на равных задачах и инструментах, с отчётом по метрикам, цене и латентности; поддержка любого OpenAI-совместимого провайдера и локальной Ollama.
  • 232 теста в CI, строгий mypy, HTTP API для сервисного режима.


LLM-driven mutation testing для pytest · pip install mutagen-cli

CLI подсаживает в изменённый код правдоподобные баги — off-by-one, забытую инвалидацию кэша, перепутанные аргументы — и перезапускает тесты. Выживший мутант репортится как конкретный сценарий отказа. LLM читает функцию и её тесты и целится в слепые пятна вместо фиксированного набора операторов. Работает diff-based, не меняет исходники, запускает только релевантные тесты.

Проверено на шести реальных проектах с уже зелёными тестами — четырёх собственных и двух независимых чужих:

Проект Mutation score Что нашлось
Полигон (валидация, ground truth) 43% метод работает
semantic-plagiarism-detector 21% пороги сохраняются перепутанными; язык определяется по первой букве
cityfeed 20% / 24% guard склейки событий можно обойти; off-by-one в n-граммах
CogniWeb_Agent 7% все три главных мутанта — инверсии проверок безопасности: капча, прокси, невидимые элементы
parse (чужой репозиторий, 1.8k★) 68% boundary-условия на часовых поясах; off-by-one в hex/octal/binary литералах
parsy (чужой репозиторий, 451★) 75% мета-логика ошибок: проглоченное исключение, неверная граница, потерянный index

Sub-25% на собственных проектах с зелёным CI — и заметно выше на зрелых чужих библиотеках с годами контрибьюторов, что ожидаемо и служит sanity-check для инструмента. Стоимость аудита модуля — $0.13–0.35. Поддерживает OpenRouter и прямой Anthropic API как провайдеры.


🏆 Хакатоны

«Ритмы продаж»
ВШЭ × Wildberries · январь 2026
Топ-10
соло
Анализ и прогнозирование динамики продаж на временных рядах: обработка больших массивов данных, выявление закономерностей в поведении покупателей.
Nuclear IT Hack 2026
НИЯУ МИФИ · март 2026
1/8 финала Децентрализованный mesh-мессенджер без интернета: узлы строят сеть и передают сообщения, файлы, голос напрямую через TCP/UDP. С нуля за 30 часов, команда из трёх. Моя зона — весь сетевой слой: mesh на asyncio, flooding-маршрутизация с дедупликацией, передача файлов и голоса, шифрование Fernet.
SBER HACK SPRING 2026
март 2026
Топ-6 Фича «Что поесть»: GigaChat генерирует рацион под остаток КБЖУ, система находит ингредиенты в магазинах Купера и собирает корзину. Моя зона — вся LLM-часть: GigaChatService, PromptBuilder, обработка аллергий, валидация JSON с retry.
RosEltorg
апрель 2026 · команда 4 чел.
Топ-10 Семантический подбор госзакупок: pgvector (ivfflat, ANN top-20) → rubert-tiny2 (косинусная близость, топ-3). Всё локально, без внешних LLM API. Моя зона — backend-пайплайн матчинга (`matcher.py`, `database.py`): двухстадийный поиск, ОКПД2-префильтр с откатом, батчевая векторизация, вынос матчинга в `run_in_executor`.

🧱 Инженерная база

До ML — год бэкенда. Ровно та часть, без которой ML не доезжает до пользователя.

Проект Что это
🏰 Fortress API FastAPI-сервис с полной наблюдаемостью: API → Service → Repository, PostgreSQL + Redis, OpenTelemetry + Jaeger, Prometheus + Grafana, mypy strict в CI
🤖 CogniWeb Agent Автономный веб-агент на ReAct: 24 инструмента, context compaction для слабых моделей, checkpoint/resume и авто-роллбэк, детекция зацикливаний, работа в 16k контексте free-tier модели
🛡 FakeDetect Детектор контрафакта на маркетплейсах через vision-модели: парсинг WB / Ozon / Яндекс Маркет, батч-обработка, агрегация вердиктов нескольких моделей, 178 тестов (113 pytest + 65 Vitest/RTL/MSW), SLO-нагрузочное тестирование на Locust
🌳 SkilLet RPG-платформа обучения на графах навыков (DAG): интерактивный канвас на ReactFlow, AI-генератор деревьев по теме (OpenAI-совместимый API) с фильтрацией циклов, Next.js 15 / React 19 / TypeScript strict, Prisma + PostgreSQL · живое демо

🛠 Стек

ML / NLP




Infra & Quality


Backend




LLM


✅ Как я работаю

  • Число важнее демо. У каждого ML-компонента есть бейзлайн, ablation и доверительный интервал. Если выигрыш лежит внутри шума — я так и пишу, а не выношу его в заголовок.
  • Ошибки разбираю письменно. В ML-проектах есть failure analysis: кейс, причина, что сделано, что осталось.
  • Docker-first. Основные проекты поднимаются одной командой — без «у меня локально работало».

Pinned Loading

  1. mutagen-cli mutagen-cli Public

    Your tests are green. Here's what they don't catch — LLM-generated mutation testing for pytest suites

    Python 1

  2. cityfeed cityfeed Public

    End-to-end ML system for a personalized city news feed: dedup, clustering, learning-to-rank, LLM summarization — each component has a baseline, reproducible eval, error analysis

    Python 1

  3. CogniWeb_Agent CogniWeb_Agent Public

    🤖 Autonomous AI Web Agent powered by ReAct logic. Uses Playwright & LLMs to navigate websites, analyze DOM, and extract data without hardcoded selectors.

    Python 1

  4. RosEltorg RosEltorg Public

    Semantic matching of company product nomenclature to government procurement lots: two-stage search with pgvector ANN + rubert-tiny2 reranking, fully local — no external LLM APIs

    Python 2

  5. Agentalyze Agentalyze Public

    Evaluation harness for LLM browser agents — real Chromium tasks, DOM-based verifiers, step-level tracing, multi-provider benchmarks and CI regression checks.

    Python 1

  6. semantic-plagiarism-detector semantic-plagiarism-detector Public

    Semantic plagiarism & paraphrase detection: two-stage bi-encoder → cross-encoder pipeline with calibrated thresholds (PAWS + custom corpus), per-fragment verdicts, PDF reports

    Python 1