Repolode
doofzoff

doofzoff/SIMURG

Python-защита без зависимостей, кроме numpy, выявляет сбои декодирования LLM — например, зацикливание и смену языка — и обрывает поток до показа некорректного текста.

Звёзды
101
Форки
15
Открытые issues
0
Последний коммит
29 дней назад

Что это?

SIMURG отслеживает поток токенов, генерируемый LLM, и выявляет сбои декодирования: зацикливание на повторах, переход на другой язык, воспроизведение шаблонного текста, структурный мусор и утечку маркеров шаблона чата. Перед отправкой текста пользователю он удерживает первые 350 символов, затем перепроверяет поток каждые 400 символов и обрывает его при превышении откалиброванного порога. Каждое срабатывание сопровождается понятным человеку объяснением и примерной позицией начала сбоя.

Ядро работает только на numpy, без модели и GPU, и совместимо с любым endpoint для chat completions, совместимым с OpenAI, например vLLM, сервером llama.cpp, TGI, Ollama или OpenAI. Обёртка GuardedLLM добавляет повторные попытки и переключение на резервную модель, а механизм self-heal позволяет продолжить генерацию с проверенного чистого префикса, не создавая ответ заново целиком. Пороговые значения калибруются на чистых ответах; в проект также входят команда для дообучения на ваших данных и дашборд для защиты в реальном времени и воспроизведения сессий.

В проекте отдельно подчёркивается, что он выявляет сбои при выдаче текста, а не фактические ошибки: у беглого, но ложного предложения нет статистических признаков, по которым его можно обнаружить. Также доступны дополнительный уровень с небольшой трансформерной моделью, слой веб-поиска для проверки обоснованности ответов и экспериментальный модуль обучения на обратной связи.

Ключевые возможности

  • 01Выявляет зацикливание на повторах, смену языка, воспроизведение шаблонного текста, структурный мусор и утечку маркеров шаблона в потоке вывода.
  • 02Удерживает начальные символы и обрывает поток при превышении откалиброванного порога, не показывая некорректный текст пользователю.
  • 03Работает только на numpy, без модели и GPU, и совместим с любым endpoint, совместимым с OpenAI.
  • 04Выводит понятное человеку объяснение срабатывания и примерную позицию начала сбоя.
  • 05Повторяет попытку или переключается на другую модель, если генерация помечена как некорректная.
  • 06Позволяет настраивать пороговые значения на собственных чистых ответах и предоставляет дашборд для защиты в реальном времени.

Сценарии использования

  • Защита чат-ботов для пользователей, работающих на квантованных моделях или моделях на собственных серверах, от неадекватных ответов.
  • Добавление проверки качества в середине потока перед inference-сервером, чтобы токены не доходили до интерфейса без проверки.
  • Аудит и воспроизведение некорректных генераций производственной модели для выявления характерных сбоев.
  • Выявление нового типа сбоев в собственной модели с помощью детектора, обученного на размеченных примерах.

Быстрый старт

  1. 1

    Установите пакет из PyPI

    pip install simurg
  2. 2

    Или установите его из исходного кода, клонировав репозиторий

    git clone https://github.com/doofzoff/SIMURG.git
  3. 3

    Перейдите в папку проекта и установите пакет в editable-режиме

    cd SIMURG && pip install -e .
  4. 4

    Запустите воспроизводимый бенчмарк

    python3 -m simurg.data.evaluate

Что важно знать

  • Калибровка настроена на прилагаемый синтетический бенчмарк, поэтому перед использованием в production следует переобучить модель на собственном трафике.
  • Повреждение в середине потока может оставить некорректный хвост длиной до примерно 900 символов, пока повторная попытка его не заменит; кроме того, повреждение, начинающееся в hold window, полностью блокируется лишь в 12 из 21 случая бенчмарка.

Темы

Частые вопросы

Что такое SIMURG?
Python-защита без зависимостей, кроме numpy, выявляет сбои декодирования LLM — например, зацикливание и смену языка — и обрывает поток до показа некорректного текста. SIMURG отслеживает поток токенов, генерируемый LLM, и выявляет сбои декодирования: зацикливание на повторах, переход на другой язык, воспроизведение шаблонного текста, структурный мусор и утечку маркеров шаблона чата. Перед отправкой текста пользователю он удерживает первые 350 символов, затем перепроверяет поток каждые 400 символов и обрывает его при превышении откалиброванного порога. Каждое срабатывание сопровождается понятным человеку объяснением и примерной позицией начала сбоя.
SIMURG можно использовать бесплатно? Какая у него лицензия?
SIMURG распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
SIMURG всё ещё поддерживается?
Активно поддерживается. Последний коммит в SIMURG — 21 сент. 2026 г..
Для чего можно использовать SIMURG?
Защита чат-ботов для пользователей, работающих на квантованных моделях или моделях на собственных серверах, от неадекватных ответов. Добавление проверки качества в середине потока перед inference-сервером, чтобы токены не доходили до интерфейса без проверки. Аудит и воспроизведение некорректных генераций производственной модели для выявления характерных сбоев. Выявление нового типа сбоев в собственной модели с помощью детектора, обученного на размеченных примерах.
Как установить SIMURG?
Установите пакет из PyPI: pip install simurg Или установите его из исходного кода, клонировав репозиторий: git clone https://github.com/doofzoff/SIMURG.git Перейдите в папку проекта и установите пакет в editable-режиме: cd SIMURG && pip install -e . Запустите воспроизводимый бенчмарк: python3 -m simurg.data.evaluate
Где скачать SIMURG?
Исходный код и инструкции по установке — на GitHub: https://github.com/doofzoff/SIMURG

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты