Сибирь AI

Проверочный
комплект

Все, что нужно, чтобы убедиться в работоспособности и автономности программы для ЭВМ «Сибирь.Аудит» версии 1.2.0: как получить экземпляр, как сверить контрольную сумму, как воспроизвести прогон при отключенной сети и что должно получиться.

Подготовлено правообладателем - ООО «ФИИ», ИНН 5402076457. Редакция от .

Что проверяется: «Сибирь.Аудит»

Идентификационные данные программы. Любой экземпляр, полученный от правообладателя, должен совпадать с ними побайтно.

ПараметрЗначение
НаименованиеПрограмма для ЭВМ «Сибирь.Аудит» (Siberia Audit)
Версия1.2.0, набор правил 2026.08.8
ПравообладательООО «ФИИ», ОГРН 1235400001870, ИНН 5402076457
Состав70 файлов исходного кода, 15 425 строк. В каталоге sibir_audit/models обученная модель представления текста rubert-tiny2 (лицензия MIT) и словарь ее токенизатора
Дистрибутивsibir-audit-1.2.0.zip, 108 260 400 байт, 73 записи
Контрольная сумма SHA-2563a0913d4c46a482730bcd19689e1c4756692617e8d59f4dfefcc14ba3752e8f6
Среда исполненияPython не ниже 3.12, операционные системы семейства Linux. Порядок проверки ниже выполнен также в Windows
Документацияфункциональные характеристики · установка · эксплуатация · жизненный цикл

Что проверяется: «Сибирь.Диалог»

У «Диалога» два разных артефакта, и путать их не следует: архив исходного текста и поставочный дистрибутив со средой развертывания, который получает лицензиат. Контрольные суммы у них разные, и это нормально.

ПараметрЗначение
НаименованиеПрограмма для ЭВМ «Сибирь.Диалог» (Siberia Dialog)
Версия1.2.14
ПравообладательООО «ФИИ», ОГРН 1235400001870, ИНН 5402076457
Состав исходного текста159 файлов, 22 274 строки
Архив исходного текстаsiberia-dialog-1.2.14.zip, 438 730 байт
Контрольная сумма архиваece57063f11f27e4e87fc50a68fc302d1f9fe7a28250d7894f411a1955a721ef
Поставочный дистрибутивsiberia-dialog-1.2.14.tar.gz, 58 МБ - сборка со средой развертывания, собрана 9 сентября, ее контрольная сумма относится к более ранней сборке этой же версии
Контрольная сумма дистрибутива9a7fcd8d019d4a2d81a07977c6735a4c3930be2ce16a7d5a6fc837e050c4b372
Среда исполненияPython ≥ 3.12; Linux (проверено на ALT Linux 11); PostgreSQL, Redis, Asterisk
Документацияфункциональные характеристики · установка · эксплуатация · жизненный цикл

Как получить экземпляр

Программа распространяется по лицензионному договору и в открытый доступ не выкладывается. Экземпляр для проверки предоставляется бесплатно.

  • Экспертным организациям и государственным органам - по запросу на license@siberia-ai.ru с указанием наименования организации и основания запроса. Архив с контрольной суммой направляется в ответном письме в течение одного рабочего дня.
  • Потенциальным лицензиатам - доступ к экземпляру, размещенному правообладателем, по пилотной лицензии: ограниченный контур, срок до трех месяцев, безвозмездно. Условия - в разделе «Условия лицензирования».
  • Без установки - правообладатель проводит проверку указанного вами ресурса на своей стороне и передает отчет. Достаточно письма с адресом ресурса.
  • По «Сибирь.Диалогу» - поставочный дистрибутив и его контрольная сумма опубликованы открыто, ссылки в таблице выше. Демонстрационный стенд и доступ к программному интерфейсу выдаются по запросу на license@siberia-ai.ru.

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

Порядок проверки

Занимает около десяти минут. Требуется машина с Python не ниже 3.12 и доступом к любому проверяемому веб-ресурсу.

1. Сверить контрольную сумму

sha256sum sibir-audit-1.2.0.zip

В Windows та же проверка: certutil -hashfile sibir-audit-1.2.0.zip SHA256. Полученное значение должно совпасть с указанным в таблице выше. При расхождении дальше не идти - архив не тот.

2. Установить

unzip sibir-audit-1.2.0.zip -d sibir-audit
python3 -m venv .venv && . .venv/bin/activate
pip install -e sibir-audit

Команды повторяют раздел «Установка» документации. Вторая строка, создание окружения в Linux, в редакции 1.2.0 не проверялась. В Windows (PowerShell) выполнено: распаковка Expand-Archive sibir-audit-1.2.0.zip -DestinationPath sibir-audit, окружение python -m venv .venv и .venv\Scripts\Activate.ps1, затем та же третья строка. Устанавливаются десять зависимостей, перечисленных в файле pyproject.toml, все с открытым исходным кодом. pip сообщит об установке пакета sibir-audit-1.0.1: этот номер остался в файле pyproject.toml, экземпляр определяется контрольной суммой.

3. Выполнить аудит

python -c "
from sibir_audit.modules.audit.audit import audit_url
from sibir_audit.modules.audit.checks import RULES_VERSION
r = audit_url('https://siberia-ai.ru/', lang='ru')
print(RULES_VERSION, r['http_status'], r['score'], r['checks_total'])
for f in r['findings']:
    print(f['severity'], f['code'], f['title'])
"

Команда одинаково выполняется в bash и в PowerShell. Аудит одной страницы вызывается функцией audit_url, отдельной команды командной строки для него в программе нет. Первая строка вывода: версия набора правил, код ответа, итоговый балл, число выполненных проверок. Дальше по строке на каждую находку. 28 сентября 2026 года команда напечатала:

2026.08.8 200 98 31
LOW schema_sameas_no_kg_anchor Organization sameAs links to social profiles, not a knowledge graph

Тот же аудит доступен как программный интерфейс. Служба поднимается командой

uvicorn sibir_audit.public_audit:app --host 127.0.0.1 --port 8080

и во втором окне терминала принимает запрос:

curl -X POST http://localhost:8080/check -H "Content-Type: application/json" -d '{"url": "https://siberia-ai.ru/"}'

Служба отвечает полным отчетом в формате JSON и по умолчанию формулирует находки по-русски. Запрос curl в таком виде выполнен в bash (в Windows в Git Bash), в PowerShell не проверялось.

4. Убедиться в детерминированности

Повторите команду шага 3. Версия набора правил, код ответа, итоговый балл, число проверок и состав находок обязаны совпасть. Генеративные модели к формированию оценок не привлекаются, поэтому результат не плавает от запуска к запуску.

У службы есть кеш: повторный запрос того же адреса в течение двух минут возвращает сохраненный ответ с признаком "cached": true, и такой повтор ничего не проверяет. Для сравнения через службу запустите ее без кеша: PUBLIC_CHECK_CACHE_TTL=0 uvicorn sibir_audit.public_audit:app --host 127.0.0.1 --port 8080 (запись для bash). 28 сентября 2026 года правообладатель выполнил по два прогона каждым способом: вывод функции совпал побайтно, ответы службы совпали во всех полях, кроме времени проверки и длительности.

5. Убедиться в автономности

Сохраните проверяемую страницу в отдельный каталог, поднимите ее на локальном адресе и отключите машине внешнюю сеть, оставив петлевой интерфейс. В каталоге со страницей:

python -m http.server 8000 --bind 127.0.0.1

Затем выполните команду шага 3, заменив адрес на http://127.0.0.1:8000/. Аудит должен пройти полностью. Служба из шага 3 для этой проверки не подходит: локальные и внутренние адреса она отклоняет с кодом blocked_target, это защита от обращений к внутренним ресурсам. Функция audit_url адрес, набранный проверяющим, принимает.

В Linux внешнюю сеть проще всего убрать контейнером без сетевых интерфейсов. Зависимости ставятся в контейнер, пока сеть есть, затем контейнер сохраняется образом и запускается с --network none. В текущем каталоге лежат распакованный экземпляр sibir-audit и каталог stranica с сохраненной страницей:

docker run --name sibir-audit-ustanovka -v "$PWD":/w -w /w python:3.12 pip install -e sibir-audit
docker commit sibir-audit-ustanovka sibir-audit:proverka
docker run --rm -it --network none -v "$PWD":/w -w /w sibir-audit:proverka bash

Внутри контейнера поднимите страницу командой python -m http.server 8000 --bind 127.0.0.1 --directory stranica & и выполните команду шага 3 с адресом http://127.0.0.1:8000/.

Три команды docker и запуск внутри контейнера в таком виде не проверялись. Прогон правообладателя описан ниже, он выполнен в собственном образе программы.

Как это проверено в Linux. 28 сентября 2026 года правообладатель выполнил прогон на своем сервере в контейнере, запущенном с --network none: из сетевых интерфейсов в нем был только петлевой lo. Образ собран из экземпляра 1.2.0, файлы в нем совпадают с архивом, 73 из 73, среда Debian 13 и Python 3.12.14. Проверяемая страница: копия главной страницы сайта, отданная на 127.0.0.1:8000 командой python -m http.server. Внутри процесса работал сторож, который перехватывает socket.connect, connect_ex и getaddrinfo и записывает каждое обращение не к петлевому адресу. Итог вызова audit_url(..., lang="ru"): 31 проверка, ошибок проверок нет, обращений наружу ноль, код выхода 0. Сторож проверен посевом: перед аудитом он сам пытается соединиться с внешним адресом 93.184.216.34, порт 80, и прогон это фиксирует и завершается с кодом 1. Три запуска подряд совпали по баллу, составу находок и составу пройденных проверок.

Как это проверено в Windows. В тот же день шаг выполнен в Windows Server 2022 с Python 3.12.10 на сохраненной копии главной страницы сайта. Сеть машины средствами операционной системы не отключалась. Вместо этого внутри процесса программы работал сторож, который отклонял и записывал каждое соединение и каждое разрешение имени вне петлевого интерфейса. Сторож сначала проверен на внешнем адресе: попытку он зафиксировал, аудит вернул недоступность страницы. На локальной странице выполнена 31 проверка, находок пять, обращений наружу ноль, соединений с 127.0.0.1 два (страница и robots.txt), два прогона совпали.

6. Семантические оценки (сфера искусственного интеллекта)

Подсистема семантических оценок сравнивает тексты по смыслу нейросетевой моделью rubert-tiny2 из каталога sibir_audit/models. Она вызывается отдельно: функция аудита из шага 3 и HTTP-служба ее не вызывают. Для работы модели нужна среда выполнения onnxruntime, в перечень зависимостей pyproject.toml она не входит и ставится в то же окружение:

pip install onnxruntime

Затем оценка на текстах из обоснования отнесения программы к сфере искусственного интеллекта:

python -c "
from sibir_audit.modules.semantika import Embedder, otvet_po_zagolovku
e = Embedder.po_umolchaniyu()
z = 'Как заменить счетчик воды'
for t in ('Прибор учета меняют так', 'История московского метрополитена кратко'):
    print(otvet_po_zagolovku(z, t, e))
    print(otvet_po_zagolovku(z, t))
"

28 сентября 2026 года с onnxruntime 1.30.0 команда напечатала:

Ocenka(znachenie=0.8174937137223827, osnovanie='model', poyasnenie='')
Ocenka(znachenie=0.0, osnovanie='leksika', poyasnenie='модель недоступна, считано пересечением слов')
Ocenka(znachenie=0.6988008865467242, osnovanie='model', poyasnenie='')
Ocenka(znachenie=0.0, osnovanie='leksika', poyasnenie='модель недоступна, считано пересечением слов')

Первая и третья строки получены моделью: ответ, сформулированный другими словами, получает 0,817, посторонний текст 0,699. Вторая и четвертая строки считаны без модели, по совпадению слов, и равны нулю: общих слов у этих текстов нет. Признак osnovanie программа выставляет сама. Без onnxruntime та же команда печатает четыре строки с osnovanie='leksika' и значением 0.0, модель при этом не используется. Близость приводится к отрезку от 0 до 1 сдвигом косинуса, поэтому даже посторонний текст получает около 0,7. Сравнивать следует значения между собой.

Команда выполнена в bash и в PowerShell, с onnxruntime и без него. Установка onnxruntime в Linux не проверялась.

Пример отчета

Реальный прогон по официальному сайту правообладателя на редакции 1.2.0 через программный интерфейс (POST /check), выполнен 28 сентября 2026 года. Приведен целиком, включая единственное замечание. Содержание находки взято из поля title_en ответа, русская формулировка лежит в поле title. Сайт меняется, поэтому ваш прогон по этому адресу может дать другой состав находок. Детерминированность проверяется двумя прогонами подряд, а не сравнением с примером.

ПараметрЗначение
Проверенный адресhttps://siberia-ai.ru/
Код ответа200
Время выполнения2 266 мс
Набор правил2026.08.8
Итоговый балл98 из 100
Выполнено проверок31
Без замечаний30

Находки

ЗначимостьКод правилаСодержание
LOWschema_sameas_no_kg_anchorOrganization sameAs links to social profiles, not a knowledge graph

Каждая находка в полном отчете сопровождается сведениями о происхождении: источник, примененное правило, версия набора правил и метод получения. В приведенном примере статус находки - «подтверждено», метод - собственное измерение.

Балл считается вычитанием. 100 минус сумма весов выявленных дефектов, нижняя граница 0. Недоступность ресурса дает 0. Формула и веса зафиксированы в наборе правил, версия набора указывается в каждом отчете - отчеты, полученные в разное время, сопоставимы.

Куда обращаться

Экземпляр и лицензирование
license@siberia-ai.ru
Технические вопросы
support@siberia-ai.ru, +7 (383) 288-82-82
Режим работы
рабочие дни, 9:00-18:00 (UTC+7, Новосибирск)
Срок ответа
не более одного рабочего дня