# Buff Guardrails

> Шлюз к ИИ-моделям, который убирает персональные данные и секреты из запросов и возвращает их в ответ. Открытый код, целиком в вашем периметре.

Buff Guardrails

# Модели не нужен паспорт вашего клиента, *чтобы написать ему ответ*

Шлюз между сотрудниками и ИИ-моделью: убирает персональные данные и секреты из запросов и возвращает их в ответ. Сотрудник работает в Claude Code, Claude Desktop или любом другом клиенте как обычно, модель видит обезличенный текст, данные не покидают компанию.

[Скачать с GitHub](https://github.com/buffsystems/buff-guardrails) [Посмотреть пример](https://buff.systems/guardrails#example) Открытый код, лицензия MIT. Работает на ваших машинах, видеокарта не нужна

**0** запросов уходит внешним провайдерам: модель — ваша, в вашей сети

**10 мс** на проверку запроса правилами: документы, карты, телефоны, ключи

**100 из 100** СНИЛС, КПП, ИНН и email находятся и маскируются

**3 команды** до работающего шлюза и демо на вашей машине

Возражение 01

## «Из-за персональных данных ИИ у нас запрещён»

Или разрешён — и каждый сам решает, что вставлять в чат.

### Модели не нужны настоящие данные

Люди несут в модель письмо клиента, выгрузку из CRM, лог с паролем в стектрейсе. Запрет не работает — работу уносят в личный ChatGPT. Блокирующий фильтр не работает — получается тот же запрет, только с раздражением. Guardrails исходит из простого наблюдения: чтобы написать клиенту ответ, модели достаточно знать, что здесь стоит имя, а здесь — телефон. Поэтому шлюз ничего не блокирует: он заменяет данные нумерованными заглушками, отдаёт модели и возвращает настоящие значения в ответ.

#### Что вставил оператор

Здравствуйте! Меня зовут Коновалова Марина Ильинична, заказ №4471920 так и не приехал. Мой телефон +7 (921) 334-18-07, почта marina.konovalova@example.com, адрес доставки: г. Казань, ул. Чистопольская, д. 61, кв. 14.

#### Что получила модель

Здравствуйте! Меня зовут <PERSON\_1> <PERSON\_2>, заказ №4471920 так и не приехал. Мой телефон <PHONE\_NUMBER\_1>, почта <EMAIL\_ADDRESS\_1>, адрес доставки: г. <LOCATION\_1>, ул. <LOCATION\_2>, д. 61, кв. 14.

#### Что получил оператор

Здравствуйте, Коновалова Марина Ильинична! Благодарим за обращение. Мы очень сожалеем, что заказ №4471920 так и не приехал. Пожалуйста, подтвердите ваш адрес доставки: г. Казань, ул. Чистопольская, д. 61, кв. 14.

Это реальный прогон через небольшую модель gemma3:4b на процессоре. Один и тот же человек в письме — одна и та же заглушка, поэтому модель рассуждает о нём связно, а восстановление однозначно. Номер дома в модель ушёл: базовый распознаватель видит названия, но не номера — точная модель закрывает и их, об этом ниже.

Возражение 02

## «Что именно он находит? Регулярки ловят телефоны, а дальше?»

ФИО в косвенных падежах, адреса и номера документов без подписи — обычное место провала.

### Документы — правилами с контрольными суммами, имена и адреса — моделью

Нейросеть не знает алгоритм контрольной суммы СНИЛС и может принять номер заказа за ИНН. Правило знает: сумма сходится — ИНН, не сходится — нет. Поэтому документы, карты, телефоны, email, ключи и пароли находят правила за десять миллисекунд. Имена и адреса правилами не описать — их ищет модель распознавания, которую вы выбираете при установке: быстрая spaCy или точная ruBERT. Если модель и правило спорят, побеждает правило.

#### Документы РФ

Паспорт, СНИЛС, ИНН, ОГРН и ОГРНИП, КПП, ОМС, водительское удостоверение — по форме и контрольной сумме.

#### Платежи

Номера карт Visa, Mastercard и «Мир» по алгоритму Луна, CVC, счета, БИК, IBAN.

#### Контакты

Телефоны российские, международные и NANP, email, IP-адреса, URL, даты рождения.

#### Секреты

Ключи AWS, GitHub, GitLab, OpenAI, Anthropic, Slack, Stripe, Telegram, JWT, приватные ключи PEM, пароли в URL и в присваиваниях.

#### Имена и адреса

ФИО в любых падежах, города, улицы и дома — модель распознавания, быстрая или точная на ваш выбор.

#### Ваши слова

Названия клиентов, кодовые имена проектов, номера договоров и внутренние домены — из вашего словаря.

**100** из 100 СНИЛС, КПП, ИНН и email находит и маскирует

**96** из 100 телефонов — в любом написании, с кодом страны и без

**90** из 100 паспортов — пропускает серию и номер без слова «паспорт» рядом

**86** из 100 ключей и паролей — hex-строки без слова «токен» рядом оставляем, чтобы не прятать каждый хеш коммита

[Полные таблицы бенчмарка — на GitHub](https://github.com/buffsystems/buff-guardrails/blob/main/bench/results/RESULTS.md)

Возражение 03

## «Как убедиться, что он работает на наших текстах?»

Не на примерах из презентации, а на своём письме и своём логе.

### Демо: вставьте текст и посмотрите, что уйдёт в модель

Вместе со шлюзом ставится страница демо: вставляете любой текст, видите замаскированную версию и список найденного с типами, переключаетесь между восемью готовыми наборами — поддержка, HR, банк, код, логи, договор, корпоративные данные — и, если модель настроена, прогоняете текст через неё и получаете ответ с восстановленными данными.

**Демо Buff Guardrails** localhost:8080

← прокрутите кадр →

**Письмо клиента после маскирования**: имя, телефон, почта и город заменены заглушками, ниже — список найденного с типами и уверенностью.

Возражение 04

## «Сколько это внедрять?»

Обычно такой проект — квартал с интегратором.

### Три команды и три вопроса

Скрипт установки спросит, какую модель использовать — запустить на этой машине, указать адрес вашей или пока обойтись без неё, — насколько тщательно искать имена и адреса и на каких портах открыть шлюз и демо. Дальше он сам скачает и запустит всё необходимое и проверит себя: замаскирует тестовое письмо, пропустит через шлюз и убедится, что в ответе всё восстановилось.

```
git clone https://github.com/buffsystems/buff-guardrails.git
cd buff-guardrails
./install.sh
```

#### Docker

Linux, macOS или Windows с Docker Desktop. Видеокарта не нужна: правила и базовая модель распознавания работают на процессоре.

#### Память

8 ГБ для шлюза и демо. Если модель будет работать на этой же машине — от 16 ГБ.

#### Модель

Ollama в комплекте, vLLM для машины с видеокартой NVIDIA или адрес модели, которая уже есть в компании. Можно начать и без модели — только маскирование и демо.

Шлюз понимает API Anthropic и OpenAI. Claude Code достаточно трёх переменных окружения:

```
export ANTHROPIC_BASE_URL=http://localhost:4000
export ANTHROPIC_AUTH_TOKEN=sk-...
export ANTHROPIC_MODEL=default
```

Claude Desktop и Cowork, Buff Code и любой SDK подключаются так же — пошагово для Windows, macOS и Linux, с экспортом настроек для раздачи сотрудникам: [docs/clients.md](https://github.com/buffsystems/buff-guardrails/blob/main/docs/clients.md)

Возражение 05

## «А если он что-то пропустит?»

Честный ответ важнее красивой цифры.

### Что шлюз делает, а чего не делает

Слабое место базового варианта — адреса: spaCy на русском видит названия улиц и городов, но не номера домов. На живых переписках он находит 60 имён и 51 адрес из ста, точная модель ruBERT — 92 и 98, ценой 150 миллисекунд на запрос вместо 11. Если сотрудники работают с обращениями клиентов, выбирайте ruBERT — это один пункт в установщике.

- Не блокирует запросы и не ведёт реестр инцидентов: это не DLP, а слой между сотрудником и моделью, который делает обычную работу безопасной.
- Не заменяет правовые основания обработки: он снимает передачу данных третьему лицу, остальное — ваши регламенты.
- Не обещает ста процентов: цифры измерены на открытых наборах и воспроизводятся командой make bench в репозитории.
- Открытый код под лицензией MIT: что именно и как маскируется, можно проверить, а не поверить.

[Как устроена безопасность самого Buff](https://buff.systems/security)

Остальные вопросы

## Что спрашивают о Buff Guardrails

### Это ещё один прокси, через который пойдут наши данные?

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

### Какие модели можно использовать?

Любую с OpenAI-совместимым API. В комплекте Ollama — например, gemma3 на процессоре — и vLLM для машины с видеокартой NVIDIA; можно указать адрес модели, которая уже работает в компании.

### Что с английскими текстами и смешанными логами?

Движок понимает русский и английский, так что английские фрагменты внутри русского письма или лога обрабатываются. Качество мы измеряли на русских данных — на них набор и рассчитан.

### Можно добавить свои слова — названия клиентов, проектов?

Да. Корпоративный словарь в YAML: названия клиентов, кодовые имена проектов, номера договоров и внутренние домены маскируются наравне с остальным и так же восстанавливаются в ответе.

### Это часть Buff или отдельный продукт?

Отдельный открытый набор, Buff для него не нужен. Он работает с любым клиентом, который ходит в OpenAI или Anthropic API: Claude Code, Claude Desktop и Cowork, Buff Code, ваши скрипты.

### Где задать вопрос или сообщить об ошибке?

В issues репозитория buff-guardrails на GitHub. Поддержка по договору — в составе Enterprise.

С чего начать

## Поставьте шлюз и вставьте в демо своё письмо

Нужны Docker и 8 ГБ памяти. Через несколько минут после ./install.sh у вас адрес шлюза для Claude Code и демо, в котором видно, что уйдёт в модель.

[Скачать с GitHub](https://github.com/buffsystems/buff-guardrails) [Написать нам](mailto:info@buff.systems)

Открытый код, лицензия MIT. Вопросы и ошибки — в репозитории на GitHub
