Владимир Куляшов

MLOps / LLM Ops инженер

Пермь

Работу не ищу, но всегда рад интересному разговору

Telegram
@kulyashov
GitHub
koolvn
Сайт
cv.hl59.ru
Резюме в PDF

Как это устроено

Даниэль Канеман описал два режима мышления: быстрый и интуитивный, System 1, и медленный и обдуманный, System 2. Ассистент на этом сайте устроен так же. System 1 — быстрая модель решений с резервными звеньями: за пару секунд она понимает, о чём вопрос, и сама отклоняет всё постороннее. Остальное она передаёт System 2 — языковой модели через LiteLLM: та думает дольше, но отвечает по существу. Тема, которую нашла System 1, решает и то, какая модель ответит: на болтовню — быстрая, на вакансию — самая сильная, на остальное — средняя.

Вопрос

Ваш вопрос

Вместе с парой последних реплик, чтобы «а подробнее?» тоже было понятно.

System 1

Модель решений определяет тему

За 1–2 секунды: опыт, проекты, вакансия, контакт или не по теме. Если первое звено молчит, решает следующее в цепочке.

Звено 1Звено 2Звено 3

Без LLM

Вежливый отказ

Не по теме или попытка prompt injection: System 2 не вызывается, ответ готов сразу.

System 2

Языковая модель отвечает

Думает, берёт факты из профиля через инструменты и пишет ответ.

Опыт работыПроектыВакансия по ссылкеСоответствие вакансииСообщение Владимиру

Ответ

Текст и карточки

Под ответом — линейка: сколько времени заняла каждая система.

Проиграть путь

Живые цифры

Загружаю цифры…

Что записывается

  • Тексты вопросов и ответов записываются трейсами в Langfuse. Он работает на том же сервере, что и сайт, а трейсы читает только Владимир, чтобы находить ошибки ассистента.
  • Чтобы ответить, вопрос уходит провайдеру языковой модели. Тему определяет одно из звеньев System 1, и среди них могут быть внешний API модели решений и языковая модель.
  • Прикреплённый файл не хранится: сервер извлекает из него текст, и этот текст становится частью диалога и его трейса. Ссылку на вакансию открывает сервер сайта, а не ваш браузер.
  • IP-адрес не сохраняется. Из него с секретным ключом считается хэш: по нему работают лимиты и подсчёт посетителей.
  • Сайт ставит cookie cv_vid. В ней только случайный id: по нему сайт отличает нового посетителя от вернувшегося, им же помечаются ваши диалоги. Ещё одна cookie, NEXT_LOCALE, запоминает язык сайта, если он не совпадает с языком браузера.
  • О новом посетителе Владимиру приходит сообщение в Telegram (если эти уведомления не отключены): страна, браузер, ОС и устройство, откуда вы пришли (сайт и utm-метки) и первая страница. Страну определяют по IP-адресу, сам адрес не сохраняется.
  • В базе о посетителе остаются только страна, браузер с ОС, первый и последний визит и число визитов. Откуда вы пришли, в базу не попадает.
  • С включённым Global Privacy Control cookie cv_vid не ставится и сообщение не уходит.
  • Цифры на этой странице — суммы за период, без текстов.
  • IP-адреса в страны — DB-IP.