Используйте ChatGPT и Claude на реальной работе — данные клиентов заменяются метками до отправки
Airlock работает в вашей сети, между сотрудниками и языковой моделью. Он находит в запросе персональные данные, заменяет их метками и только потом отправляет текст провайдеру. В ответе значения возвращаются на место.
Это ранняя версия. Что Airlock находит и что пропускает, показано ниже в цифрах.
Проблема
Сотруднику проще вставить письмо клиента в чат с моделью, чем вычищать из него имена и номера. В письме — ФИО, ИИН, номер счёта. Через секунду они на чужих серверах.
Запрет не отвечает на вопрос, как сделать ту же работу без модели.
Передачу персональных данных за рубеж ограничивает статья 16 Закона Республики Казахстан «О персональных данных и их защите» от 21 мая 2013 года № 94-V.
Как это работает
-
В вашей сети
Маскирование
Шлюз находит значения и ставит вместо них метки. Одно значение — одна метка, сколько бы раз оно ни встретилось.
Сотрудник пишет
Составь вежливый отказ по кредиту. Клиент: Нұргүл Ермекова, ИИН 539212232138, счёт KZ60 9999 1585 882B 2215.
-
У провайдера модели
Модель
Провайдер получает текст с метками и отвечает текстом с метками.
Провайдер видит
Составь вежливый отказ по кредиту. Клиент:
[PERSON_1], ИИН[IIN_1], счёт[KZ_IBAN_1]. -
В вашей сети
Восстановление
Шлюз возвращает значения на место. Внутри ссылки метка остаётся меткой.
Сотрудник читает
Уважаемая Нұргүл Ермекова, к сожалению, банк не может одобрить вашу заявку на кредит.
Все значения в примерах синтетические.
Секреты не маскируются, а останавливают запрос
Ключ API, токен, пароль, приватный ключ, строка подключения к базе данных: запрос с ними не отправляется провайдеру вовсе. Сотрудник видит сообщение:
Запрос заблокирован: в нём найдены секреты (ключи, пароли, токены). Удалите их из сообщения или начните новый чат.
Что находит Airlock
-
ИИН и БИН
Двенадцать цифр с контрольным разрядом. Учитываются слова рядом: «ИИН», «ЖСН», «БИН», «БСН».
-
IBAN Казахстана
KZ и ещё 18 знаков, проверка по ISO 13616. Находится и в записи группами по четыре.
-
Банковские карты
От 13 до 19 цифр, проверка алгоритмом Луна. С пробелами и дефисами тоже.
-
Телефоны +7
В привычных записях: +7 (7xx) xxx-xx-xx, 87xxxxxxxxx.
-
Электронная почта
Адреса в любом домене.
-
Имена
На русском и казахском: по словарям имён, по окончаниям фамилий и отчеств, по словам рядом. Это самый трудный тип: цифры ниже.
-
Секреты
Ключи API, токены, пароли, приватные ключи, строки подключения. Запрос с секретом блокируется целиком.
Пока не находит: почтовые адреса, номера документов, даты рождения.
Детектор — открытая библиотека airlock-pii (Apache-2.0): её правила можно прочитать, а бенчмарк — запустить самим.
Развёртывание
-
В вашей сети
Docker Compose на вашем сервере: чат, шлюз и база данных. К провайдеру модели обращается только шлюз. Чат и его база выхода в интернет не имеют, и это проверяется отдельной командой.
-
Ваши ключи API
OpenAI, Anthropic или любой сервис с OpenAI-совместимым API. Ключи остаются на вашем сервере.
-
Политика в одном файле
Для каждого типа данных вы выбираете: замаскировать, заблокировать запрос или пропустить как есть.
-
Журнал аудита
Каждый запрос, принятый шлюзом в обработку, оставляет запись: кто, когда, к какой модели, что сделано и сколько значений какого типа найдено. По умолчанию в записи нет ни значений, ни текста запроса. Записи связаны в цепочку HMAC с ключом шлюза: проверка находит запись, которую изменили или удалили без ключа.
Оговорка. Удаления самых новых записей проверка не видит: цепочка, которая кончается раньше, остаётся цепочкой. Если включить сохранение замаскированного текста, в записи окажется и то, что детектор пропустил.
-
Что остаётся у вас
Переписка сотрудников с настоящими значениями хранится в базе чата в вашей сети, в открытом виде. Доступ к серверу и шифрование диска — ваша зона ответственности.
Бенчмарк: что находит и что пропускает
Детектор проверен на 2000 синтетических текстов; в 400 из них искать нечего. Цифра — доля значений, которые метка закрыла бы целиком. Прогон 18 октября 2026 года, airlock-pii 0.1.0 и Presidio 2.2.364; файл результатов — bench/results/2026-10-18_compare.md. Как устроены данные и подсчёт, описано в методике.
Шлюз по умолчанию работает с русским NER: это вторая строка в каждой карточке. Его можно отключить одной настройкой, и тогда шлюз работает на одних правилах: это первая строка.
Все типы данных
значений: 3451
- Airlock с выключенным NER
- 0,922
- Airlock по умолчанию: правила и русский NER
- 0,943
- Presidio без настройки
- 0,680
- Presidio с русской моделью
- 0,482
Оговорка. По номерам, почте и секретам результат круговой: значения для теста и проверки, которые их ищут, взяты из одной библиотеки. Presidio под Казахстан не настраивали: типов для ИИН, БИН и секретов у него нет, поэтому ему засчитано всё, что он закрыл меткой любого типа.
Имена, которых нет в словарях библиотеки
значений: 181
- Airlock с выключенным NER
- 0,508
- Airlock по умолчанию: правила и русский NER
- 0,829
- Presidio без настройки
- 0,591
- Presidio с русской моделью
- 0,652
Оговорка. Единственная строка по именам, где библиотеку не проверяют по её собственным словарям. По умолчанию, с NER, у Airlock здесь 0,829: больше, чем у обоих вариантов Presidio (0,591 и 0,652). С выключенным NER — 0,508, половина: меньше, чем у обоих.
Значения, которые задел шум распознавания
значений: 161
- Airlock с выключенным NER
- 0,180
- Airlock по умолчанию: правила и русский NER
- 0,180
- Presidio без настройки
- 0,099
- Presidio с русской моделью
- 0,093
Оговорка. Как после распознавания скана: ноль и буква O, единица и буква l перепутаны, один пробел сломан. С этим не справляется ни один детектор: Airlock находит меньше одного значения из пяти.
Казахский текст латиницей
значений: 266
- Airlock с выключенным NER
- 0,966
- Airlock по умолчанию: правила и русский NER
- 0,966
- Presidio без настройки
- 0,500
- Presidio с русской моделью
- 0,248
Оговорка. Эта цифра льстит. Тексты для теста писал автор правил, и носитель языка их не проверял. Слов «parol» и «dangyly» библиотека пока не знает: пароль после первого она пропускает, а в названии проспекта видит имя человека.
Ложные срабатывания
текстов без данных: 400; меньше — лучше
- Airlock с выключенным NER
- 1,2%
- Airlock по умолчанию: правила и русский NER
- 2,2%
- Presidio без настройки
- 60,5%
- Presidio с русской моделью
- 38,5%
Оговорка. Доля текстов без данных, в которых детектор всё же нашёл что-то из этих типов. Это тоже шаблоны того же автора: двенадцать цифр без слова «ИИН», номера заказов, улицы в честь людей.
Полные таблицы со всеми типами, срезами и оговорками — в файле результатов. Пятый детектор оттуда, набор регулярных выражений без проверок, здесь не показан.
Демо
Здесь будет двухминутное демо.
Пилот
Ищем трёх партнёров пилота: компании, которые хотят дать сотрудникам языковые модели и не выпускать персональные данные за пределы своей сети.
Стать партнёром пилота (3 места)
Кнопка открывает письмо на hello@airlockteam.com в вашей почтовой программе.
ChatGPT және Claude модельдерін нақты жұмыста қолданыңыз — клиенттердің деректері жіберілмес бұрын белгілермен алмастырылады
Airlock сіздің желіңізде, қызметкерлер мен тілдік модельдің арасында жұмыс істейді. Ол сұраныстағы дербес деректерді тауып, оларды белгілермен алмастырады, содан кейін ғана мәтінді провайдерге жібереді. Жауапта мәндер өз орнына қайтарылады.
Бұл — ерте нұсқа. Airlock нені табатыны және нені өткізіп алатыны төменде сандармен көрсетілген.
Мәселе
Қызметкерге клиенттің хатын модельмен чатқа сол күйінде қоя салу оңайырақ: есімдер мен нөмірлерді қолмен өшіріп шығуға уақыт кетеді. Хатта — аты-жөні, ЖСН, есепшот нөмірі. Бір секундтан кейін олар бөтен серверлерде болады.
Тыйым салу сол жұмысты модельсіз қалай істеуге болатынын айтпайды.
Дербес деректерді шетелге беруді «Дербес деректер және оларды қорғау туралы» 2013 жылғы 21 мамырдағы № 94-V Қазақстан Республикасы Заңының 16-бабы шектейді.
Бұл қалай жұмыс істейді
-
Сіздің желіңізде
Жасыру
Шлюз мәндерді тауып, орнына белгілер қояды. Бір мән — бір белгі, ол неше рет кездессе де.
Қызметкер жазады
Несие бойынша сыпайы бас тарту хатын жаз. Клиент: Нұргүл Ермекова, ЖСН 539212232138, есепшот KZ60 9999 1585 882B 2215.
-
Модель провайдерінде
Модель
Провайдер белгілері бар мәтінді алады және белгілері бар мәтінмен жауап береді.
Провайдер көреді
Несие бойынша сыпайы бас тарту хатын жаз. Клиент:
[PERSON_1], ЖСН[IIN_1], есепшот[KZ_IBAN_1]. -
Сіздің желіңізде
Қалпына келтіру
Шлюз мәндерді орнына қайтарады. Сілтеме ішіндегі белгі сол күйінде қалады.
Қызметкер оқиды
Құрметті Нұргүл Ермекова, өкінішке қарай, банк несие алуға берген өтінішіңізді мақұлдай алмайды.
Мысалдардағы барлық мәндер синтетикалық.
Құпия деректер жасырылмайды, сұранысты тоқтатады
API кілті, токен, құпиясөз, жеке кілт, дерекқорға қосылу жолы: бұлар бар сұраныс провайдерге мүлдем жіберілмейді. Қызметкер мына хабарламаны көреді:
Сұраныс бұғатталды: ішінде құпия деректер (кілттер, құпиясөздер, токендер) табылды. Оларды хабарламадан өшіріңіз немесе жаңа чат бастаңыз.
Airlock не табады
-
ЖСН және БСН
Бақылау разряды бар он екі цифр. Жанындағы сөздер де ескеріледі: «ЖСН», «ИИН», «БСН», «БИН».
-
Қазақстандық IBAN
KZ және тағы 18 таңба, ISO 13616 бойынша тексеріледі. Төрт-төрттен топтап жазылғаны да табылады.
-
Банк карталары
13-тен 19-ға дейін цифр, Лун алгоритмімен тексеріледі. Бос орынмен немесе сызықшамен жазылғаны да.
-
+7 телефон нөмірлері
Үйреншікті жазылу түрлерінде: +7 (7xx) xxx-xx-xx, 87xxxxxxxxx.
-
Электрондық пошта
Кез келген домендегі мекенжайлар.
-
Аты-жөндер
Орыс және қазақ тілдерінде: есімдер сөздігі, тек пен әкесінің аты жалғаулары және жанындағы сөздер бойынша. Бұл — ең қиын түрі: сандар төменде.
-
Құпия деректер
API кілттері, токендер, құпиясөздер, жеке кілттер, қосылу жолдары. Құпия дерек бар сұраныс толығымен бұғатталады.
Әзірге таппайды: пошталық мекенжайлар, құжат нөмірлері, туған күндер.
Детектор — ашық кітапхана airlock-pii (Apache-2.0): оның ережелерін оқуға, ал бенчмаркты өзіңіз іске қосуға болады.
Орнату
-
Сіздің желіңізде
Сіздің серверіңіздегі Docker Compose: чат, шлюз және дерекқор. Модель провайдеріне тек шлюз ғана шығады. Чат пен оның дерекқорының интернетке шығуы жабық, бұл жеке командамен тексеріледі.
-
Өз API кілттеріңіз
OpenAI, Anthropic немесе OpenAI-мен үйлесімді API-і бар кез келген қызмет. Кілттер сіздің серверіңізде қалады.
-
Саясат бір файлда
Деректердің әр түрі үшін өзіңіз таңдайсыз: жасыру, сұранысты бұғаттау немесе сол күйінде өткізу.
-
Аудит журналы
Шлюз өңдеуге қабылдаған әр сұраныс бір жазба қалдырады: кім, қашан, қай модельге, не істелді және қай түрден қанша мән табылды. Әдепкі күйде жазбада мәндер де, сұраныс мәтіні де жоқ. Жазбалар шлюз кілтімен есептелетін HMAC тізбегімен байланысқан: кілтсіз өзгертілген немесе өшірілген жазбаны тексеру табады.
Ескертпе. Ең соңғы жазбалардың өшірілгенін тексеру көрмейді: ертерек аяқталатын тізбек те тізбек болып қала береді. Жасырылған мәтінді сақтауды қоссаңыз, детектор өткізіп алған мәндер де жазбаға түседі.
-
Сізде не қалады
Қызметкерлердің нақты мәндері бар хат алмасуы сіздің желіңіздегі чат дерекқорында ашық түрде сақталады. Серверге қолжетімділік пен дискіні шифрлау — сіздің жауапкершілігіңізде.
Бенчмарк: нені табады, нені өткізіп алады
Детектор 2000 синтетикалық мәтінде тексерілді; оның 400-інде іздейтін ештеңе жоқ. Көрсеткіш — белгі толық жабатын мәндердің үлесі. Сынақ 2026 жылғы 18 қазанда өткізілді, airlock-pii 0.1.0 және Presidio 2.2.364; нәтижелер файлы — bench/results/2026-10-18_compare.md. Деректер мен есептеу тәсілі әдістемеде сипатталған.
Шлюз әдепкі бойынша орыс тілді NER-мен жұмыс істейді: бұл әр карточкадағы екінші жол. Оны бір баптаумен өшіруге болады, сонда шлюз тек ережелермен жұмыс істейді: бұл бірінші жол.
Деректердің барлық түрі
мән саны: 3451
- NER өшірілген Airlock
- 0,922
- Airlock әдепкі бойынша: ережелер және орыс тілді NER
- 0,943
- Presidio, баптаусыз
- 0,680
- Presidio, орыс тілді модельмен
- 0,482
Ескертпе. Нөмірлер, пошта және құпия деректер бойынша нәтиже шеңберлі: сынақ мәндері де, оларды іздейтін тексерулер де бір кітапханадан алынған. Presidio Қазақстанға бапталмаған: онда ЖСН, БСН және құпия деректер үшін түрлер жоқ, сондықтан ол кез келген түрдегі белгімен жапқанның бәрі есепке алынды.
Кітапхана сөздіктерінде жоқ аты-жөндер
мән саны: 181
- NER өшірілген Airlock
- 0,508
- Airlock әдепкі бойынша: ережелер және орыс тілді NER
- 0,829
- Presidio, баптаусыз
- 0,591
- Presidio, орыс тілді модельмен
- 0,652
Ескертпе. Аты-жөндер бойынша кітапхана өз сөздіктерімен тексерілмейтін жалғыз жол. Әдепкі бойынша Airlock NER-мен жұмыс істейді және мұнда 0,829 көрсетеді: бұл Presidio-ның екі нұсқасынан да көп (0,591 және 0,652). NER өшірілгенде 0,508, яғни жартысы ғана: бұл екеуінен де аз.
Мәтінді тану қателері тиген мәндер
мән саны: 161
- NER өшірілген Airlock
- 0,180
- Airlock әдепкі бойынша: ережелер және орыс тілді NER
- 0,180
- Presidio, баптаусыз
- 0,099
- Presidio, орыс тілді модельмен
- 0,093
Ескертпе. Сканерленген құжатты танығаннан кейінгідей: нөл мен O әрпі, бір мен l әрпі шатастырылған, бір бос орын бұзылған. Мұны детекторлардың ешқайсысы еңсере алмайды: Airlock мәндердің бестен біріне жетпейтін бөлігін ғана табады.
Латын әрпімен жазылған қазақша мәтін
мән саны: 266
- NER өшірілген Airlock
- 0,966
- Airlock әдепкі бойынша: ережелер және орыс тілді NER
- 0,966
- Presidio, баптаусыз
- 0,500
- Presidio, орыс тілді модельмен
- 0,248
Ескертпе. Бұл сан шындықтан жақсырақ көрінеді. Сынақ мәтіндерін ережелердің авторы жазған, оларды тіл иесі тексермеген. «parol» және «dangyly» сөздерін кітапхана әзірге білмейді: біріншісінен кейінгі құпиясөзді өткізіп алады, ал даңғыл атауынан адамның есімін көреді.
Жалған дабылдар
деректері жоқ мәтіндер: 400; аз болған сайын жақсы
- NER өшірілген Airlock
- 1,2%
- Airlock әдепкі бойынша: ережелер және орыс тілді NER
- 2,2%
- Presidio, баптаусыз
- 60,5%
- Presidio, орыс тілді модельмен
- 38,5%
Ескертпе. Деректері жоқ мәтіндердің ішінде детектор бәрібір осы түрлердің бірін тапқандарының үлесі. Бұлар да сол автордың үлгілері: «ЖСН» сөзінсіз он екі цифр, тапсырыс нөмірлері, адам есімімен аталған көшелер.
Барлық түрлер, кесінділер және ескертпелер бар толық кестелер — нәтижелер файлында. Ондағы бесінші детектор — тексерусіз тұрақты өрнектер жиыны — мұнда көрсетілмеген.
Демо
Мұнда екі минуттық демо болады.
Пилот
Пилотқа үш серіктес іздейміз: қызметкерлеріне тілдік модельдерді қолдануға мүмкіндік бергісі келетін, бірақ дербес деректерді өз желісінен тыс шығарғысы келмейтін компаниялар.
Батырма hello@airlockteam.com мекенжайына хатты пошта бағдарламаңызда ашады.
Use ChatGPT and Claude for real work — customer data is replaced with placeholders before the request is sent
Airlock runs inside your network, between your staff and the language model. It finds personal data in a request, replaces it with placeholders, and only then sends the text to the provider. In the answer the values are put back.
This is an early version. What Airlock finds and what it misses is shown in numbers below.
The problem
It is easier for an employee to paste a customer's letter into a chat with a model than to strip the names and numbers out of it. The letter holds a full name, an IIN, an account number. A second later they are on someone else's servers.
A ban does not say how to do the same work without the model.
Article 16 of Kazakhstan's Law “On Personal Data and Their Protection” (No. 94-V of 21 May 2013) restricts the transfer of personal data abroad.
How it works
-
Inside your network
Mask
The gateway finds the values and puts placeholders in their place. One value, one placeholder, however often it appears.
The employee writes
Draft a polite loan decline letter. Client: Nurgul Yermekova, IIN 539212232138, account KZ60 9999 1585 882B 2215.
-
At the model provider
Model
The provider receives text with placeholders and answers with text that has placeholders.
The provider sees
Draft a polite loan decline letter. Client:
[PERSON_1], IIN[IIN_1], account[KZ_IBAN_1]. -
Inside your network
Restore
The gateway puts the values back. Inside a link a placeholder stays as it is.
The employee reads
Dear Nurgul Yermekova, unfortunately the bank cannot approve your loan application.
Every value in the examples is synthetic.
Secrets are not masked: they stop the request
An API key, a token, a password, a private key, a database connection string: a request that holds one is not sent to the provider at all. The employee reads this message:
Request blocked: it contains secrets (keys, passwords, tokens). Remove them from the message or start a new chat.
What Airlock detects
-
IIN and BIN
Twelve digits with a check digit. The words next to them count: “ИИН”, “ЖСН”, “IIN”, “БИН”, “BIN”.
-
Kazakhstan IBAN
KZ and 18 more characters, checked by ISO 13616. Also found when written in groups of four.
-
Payment cards
13 to 19 digits, checked with the Luhn algorithm. With spaces or dashes too.
-
+7 phone numbers
In the usual notations: +7 (7xx) xxx-xx-xx, 87xxxxxxxxx.
-
E-mail
Addresses on any domain.
-
Names
In Russian and Kazakh: by lists of given names, by the endings of surnames and patronymics, and by the words around them. This is the hardest type: see the numbers below.
-
Secrets
API keys, tokens, passwords, private keys, connection strings. A request with a secret is blocked whole.
Not detected yet: postal addresses, document numbers, dates of birth.
The detector is an open-source library, airlock-pii (Apache-2.0): you can read its rules and run the benchmark yourself.
Deployment
-
Inside your network
Docker Compose on your server: the chat, the gateway and a database. Only the gateway calls the model provider. The chat and its database have no route to the internet, and one command checks that.
-
Your own API keys
OpenAI, Anthropic, or any service with an OpenAI-compatible API. The keys stay on your server.
-
Policy in one file
For each type of data you choose: mask it, block the request, or let it through as typed.
-
Audit log
Every request that the gateway accepts for processing leaves a record: who, when, which model, what was done, and how many values of which type were found. By default a record holds no value and no text of the request. The records are chained with HMAC under the gateway's key: a check finds a record that was changed or removed without the key.
Caveat. The check does not see the newest records removed: a chain that ends earlier is still a chain. If you switch on keeping the masked text, a record also holds whatever the detector missed.
-
What stays with you
The staff's conversations, with the real values, are kept in the chat's database inside your network, in plain text. Access to the server and disk encryption are yours to look after.
Benchmark: what it finds and what it misses
The detector was run on 2,000 synthetic texts; 400 of them hold nothing to find. A figure is the share of values that a placeholder would cover whole. Run on 18 October 2026 with airlock-pii 0.1.0 and Presidio 2.2.364; the results file is bench/results/2026-10-18_compare.md. The methodology says how the data and the scoring work.
By default the gateway runs with the Russian NER: the second line of each card. One setting switches it off, and the gateway then runs on the rules alone: the first line.
All types of data
values: 3,451
- Airlock with the NER off
- 0.922
- Airlock by default: rules and the Russian NER
- 0.943
- Presidio, out of the box
- 0.680
- Presidio with a Russian model
- 0.482
Caveat. For numbers, e-mail and secrets the result is circular: the test values and the checks that look for them come from the same library. Presidio was not tuned for Kazakhstan: it has no type for an IIN, a BIN or a secret, so it is credited with everything it covered under a span of any type.
Names the library has on no list
values: 181
- Airlock with the NER off
- 0.508
- Airlock by default: rules and the Russian NER
- 0.829
- Presidio, out of the box
- 0.591
- Presidio with a Russian model
- 0.652
Caveat. The one row for names that does not grade the library on its own lists. By default, with the NER, Airlock scores 0.829 here: more than either Presidio configuration (0.591 and 0.652). With the NER off it scores 0.508, half: less than either.
Values touched by OCR-like noise
values: 161
- Airlock with the NER off
- 0.180
- Airlock by default: rules and the Russian NER
- 0.180
- Presidio, out of the box
- 0.099
- Presidio with a Russian model
- 0.093
Caveat. As after OCR of a scan: a zero and the letter O, a one and the letter l swapped, one space broken. No detector copes: Airlock finds fewer than one value in five.
Kazakh in Latin letters
values: 266
- Airlock with the NER off
- 0.966
- Airlock by default: rules and the Russian NER
- 0.966
- Presidio, out of the box
- 0.500
- Presidio with a Russian model
- 0.248
Caveat. This figure flatters. The test texts were written by the author of the rules, and no native speaker has checked them. The library does not know the words “parol” and “dangyly” yet: it misses a password after the first, and reads a person's name in the name of an avenue.
False positives
texts with nothing to find: 400; lower is better
- Airlock with the NER off
- 1.2%
- Airlock by default: rules and the Russian NER
- 2.2%
- Presidio, out of the box
- 60.5%
- Presidio with a Russian model
- 38.5%
Caveat. The share of texts with nothing to find in which a detector still reported one of these types. These too are templates by the same author: twelve digits without the word “IIN”, order numbers, streets named after people.
The full tables, with every type, the slices and the notes, are in the results file. Its fifth detector, a set of regular expressions with no checks, is not shown here.
Demo
A two-minute demo goes here.
Pilot
We are looking for three pilot partners: companies that want to give their staff language models and keep personal data inside their own network.
Become a pilot partner (3 slots)
The button opens a message to hello@airlockteam.com in your mail program.