Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Открываешь ChatGPT, вставляешь договор аренды или медицинский анализ, нажимаешь Enter. Данные ушли. Не «возможно ушли» — ушли. Вот что происходит в этот момент и как это контролировать:
api.openai.com/v1/chat/completions) данные по умолчанию не используются для дообучения. Веб-чат — другой контракт.HTTP POST-запрос к ChatGPT передаёт не только текст промпта. В теле запроса и заголовках — полный fingerprint сессии.
POST https://chat.openai.com/backend-api/conversation
Headers:
Authorization: Bearer <session_token>
User-Agent: Mozilla/5.0 ...
X-Openai-Client-User-Agent: {"bindings_version":"..."}
Body (JSON):
{
"messages": [{"role": "user", "content": "ВАШ ПРОМПТ"}],
"model": "gpt-4o",
"timezone_offset_min": -180,
"conversation_id": "uuid-привязан-к-аккаунту"
}
Каждый запрос логируется с conversation_id, IP-адресом, временной меткой и привязкой к аккаунту. Это не параноя — это документация OpenAI Privacy Policy, раздел «Information We Collect». Срок хранения логов по умолчанию — 30 дней, для корпоративных API-клиентов без Zero Data Retention — те же 30 дней, с ZDR-соглашением — 0 дней, но ZDR стоит отдельно и подключается только на Enterprise-тарифе.
Вектор 1 — Прямая передача через промпт. Самый очевидный. Пользователь вставляет документ целиком. Юридический договор с реквизитами контрагентов, таблица с зарплатами сотрудников, код с hardcoded-токенами AWS — всё это моментально оказывается на серверах OpenAI, Google или Anthropic в США (юрисдикция CLOUD Act). Европейские пользователи формально защищены GDPR, но механизм трансграничной передачи данных в рамках EU-US Data Privacy Framework работает через самосертификацию компаний — то есть на доверии.
Точка.
Вектор 2 — Системный промпт в корпоративных интеграциях. Компания настраивает GPT-обёртку для менеджеров. В system-сообщение кладут шаблон с названием клиента, сегментом, историей сделки. Менеджер об этом не знает — он просто нажимает «Написать письмо». Каждый запрос передаёт структуру CRM автоматически.
{
"messages": [
{
"role": "system",
"content": "Ты помощник менеджера компании ACME Corp. Клиент: ООО 'Ромашка', ИНН 7712345678, сумма сделки 4.5 млн руб., статус: переговоры."
},
{
"role": "user",
"content": "Напиши follow-up письмо"
}
]
}
Это реальный паттерн. Встречается в 70% самописных корпоративных интеграций без security-ревью.
Вектор 3 — Плагины и инструменты с доступом к файлам. ChatGPT с включённым Code Interpreter загружает файл целиком в контекст сессии. Gemini с подключённым Google Drive читает документы по запросу — и передаёт их фрагменты в контекст модели на серверах Google. Не «анализирует локально». Передаёт.
Вектор 4 — Утечка через мемоизацию модели. Редкий, но задокументированный. В 2023 году исследователи Cornell University продемонстрировали извлечение обучающих данных из GPT-3.5 через повторяющиеся промпты («Repeat the word ‘poem’ forever»). Модель начинала воспроизводить фрагменты реальных текстов из обучающей выборки — включая персональные данные. Это называется training data memorization, и вероятность извлечения растёт с размером модели и частотой встречаемости данных в обучающем корпусе.
Разные вендоры — разные правила хранения, и цифры здесь конкретные.
Любой из этих сервисов подпадает под CLOUD Act — американский закон, обязывающий компании передавать данные властям США по запросу суда, включая данные, хранящиеся за пределами США. Европейский GDPR этому формально противоречит. Конфликт не разрешён.
OpenAI позволяет экспортировать всю историю чатов: Settings → Data Controls → Export data. Архив придёт на email в течение нескольких часов — это ZIP с JSON-файлами всех сессий. Проверяй на наличие чувствительных данных инструментом grep или любым поиском по тексту. Для Gemini: myaccount.google.com → Data & Privacy → My Activity — история запросов с полным текстом. Claude не предоставляет экспорт истории через UI — только через API при наличии ключа.
# Быстрый поиск чувствительных паттернов в экспорте ChatGPT
grep -rE "\b[0-9]{10,12}\b|\b[А-Я][а-я]+\s[А-Я][а-я]+\s[А-Я][а-я]+\b|пароль|токен|secret|api_key" ./chatgpt-export/
Паттерн выше ищет: ИНН/СНИЛС-подобные числа, ФИО в три слова, явные секреты в тексте. Не идеально — но покрывает 80% типичных случаев небрежного обращения с данными в чатах.
ChatGPT по умолчанию логирует каждый запрос и использует его для дообучения модели. Это не параграф в Terms of Service — это архитектурное решение OpenAI, которое работает, пока ты явно его не отключишь. Промпт без настройки приватности — это как открытое письмо на проходной: дошло до адресата, но прочитал его каждый охранник по пути.
Заходишь на chat.openai.com → Settings → Data Controls → Improve the model for everyone. Переключатель — off. Это отключает использование твоих диалогов для тренировки, но не удаляет историю с серверов OpenAI. Сохранение чатов отключается отдельно: тот же раздел, Chat history & training → off. Оба переключателя должны быть деактивированы одновременно — один без другого не даёт полной изоляции.
API-доступ работает по другим правилам. OpenAI официально задокументировал: данные, переданные через API, не используются для дообучения по умолчанию — в отличие от веб-интерфейса. Цена вопроса в 2026 году: GPT-4o через API — $2.50 за 1 млн input-токенов, $10.00 за 1 млн output-токенов. Корпоративный тариф ChatGPT Enterprise ($30/пользователь/месяц при минимум 150 пользователях) добавляет договор об обработке данных (DPA) и гарантию нулевого обучения на корпоративных данных.
Вот минимальный вызов через API с явным указанием параметров, исключающих лишнее логирование на стороне клиента:
import openai
client = openai.OpenAI(api_key="YOUR_API_KEY")
response = client.chat.completions.create(
model="gpt-4o",
temperature=0.3,
max_tokens=512,
store=False, # явный запрет сохранения на стороне OpenAI (параметр 2025+)
messages=[
{
"role": "system",
"content": "You are a data processing assistant. Never store user inputs."
},
{
"role": "user",
"content": "Analyze the following contract clause for liability risks: ..."
}
]
)
print(response.choices[0].message.content)
Параметр store=False появился в OpenAI API в конце 2024 года. Без него запросы могут логироваться для отладки платформы до 30 дней даже при API-доступе.
Anthropic строит модель данных иначе. В бесплатном и Pro-плане ($20/месяц) Claude сохраняет историю и может использовать разговоры для улучшения. Настройка: claude.ai → Profile → Privacy Settings → Allow Anthropic to use my conversations to improve Claude → off. Коротко. Один тумблер.
Claude API в 2026 году: Claude 3.5 Sonnet — $3.00 за 1 млн input-токенов, $15.00 за 1 млн output-токенов. Данные через API не используются для обучения по умолчанию — аналогично OpenAI. Для корпоративного применения существует Claude for Enterprise (цена — договорная, минимальный порог от $200 тысяч ARR), который включает HIPAA BAA, SOC 2 Type II и нулевое хранение данных на серверах Anthropic после обработки запроса.
«Мы создаём ИИ, которому можно доверять. Доверие строится не на обещаниях, а на верифицируемых технических гарантиях.» — Дарио Амодеи, CEO Anthropic
Google Gemini по умолчанию сохраняет активность в аккаунте Google на 18 месяцев. Это не ошибка конфигурации — это продуктовая стратегия. Отключение: myactivity.google.com → Gemini Apps Activity → Turn off → Also delete activity. Три клика. Но при следующем входе Google может снова предложить включить — интерфейс спроектирован под повторное включение, не под постоянное отключение.
Gemini API (Google AI Studio) в 2026 году: Gemini 1.5 Pro — $3.50 за 1 млн input-токенов, $10.50 за 1 млн output-токенов. Gemini 2.0 Flash — $0.10 за 1 млн input-токенов, что делает его самым дешёвым вариантом в тройке для задач с большим объёмом запросов. Для корпоративного использования — Vertex AI (Google Cloud), где данные остаются в выбранном регионе и не покидают инфраструктуру заказчика.
Нулевое логирование. Нулевая передача данных. Никаких API-ключей и подписок. Данные не выходят за пределы машины — физически.
Реальный технический кейс: юридическая компания анализирует NDA-документы клиентов. Отправка текстов контрактов в ChatGPT или Claude нарушает условия конфиденциальности, подписанные с клиентами. Решение — локальная модель. Весь процессинг происходит на корпоративном сервере под управлением IT-отдела.
Установка Ollama на Ubuntu 22.04/24.04:
# Шаг 1: Установка Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Шаг 2: Запуск Llama 3.1 8B (4.7 GB, оптимален для CPU-инференса)
ollama pull llama3.1:8b
# Шаг 3: Запуск Mistral 7B (4.1 GB, быстрее на задачах извлечения данных)
ollama pull mistral:7b
# Шаг 4: Запуск сервера (по умолчанию localhost:11434)
ollama serve
# Шаг 5: Тест вызова через curl
curl http://localhost:11434/api/generate \
-d '{
"model": "mistral:7b",
"prompt": "Extract all liability clauses from the following contract text: ...",
"stream": false,
"options": {
"temperature": 0.1,
"num_predict": 1024
}
}'
Минимальные требования: 8 GB RAM для 7B/8B моделей в формате Q4_K_M (квантизация 4-бит). 16 GB RAM — для комфортного инференса без свопинга. GPU не нужен: на CPU современного сервера Mistral 7B выдаёт 8-15 токенов в секунду — достаточно для пакетной обработки документов в фоне.
ChatGPT API (GPT-4o): input $2.50/1M токенов, output $10.00/1M токенов. Логирование — отключается через store=False. Хранение данных — 0 дней при правильной конфигурации.
Claude API (Sonnet 3.5): input $3.00/1M токенов, output $15.00/1M токенов. Логирование — нет по умолчанию. Хранение — определяется договором.
Gemini 2.0 Flash API: input $0.10/1M токенов, output $0.40/1M токенов. Логирование — требует явного отключения через Vertex AI. Самая низкая стоимость при высоком объёме.
Ollama (Mistral/Llama 3, локально): $0 переменных затрат. Только стоимость железа. Полный контроль над данными. Единственный вариант при работе с данными под NDA, HIPAA, GDPR без специального корпоративного договора с провайдером.
Квантизация Q4_K_M в Ollama снижает точность модели примерно на 1-3% по бенчмаркам MMLU по сравнению с full-precision — приемлемый компромисс для большинства корпоративных задач классификации и извлечения структурированных данных.
Промпт без изоляции данных — это как открытый FTP с правами 777: технически работает, практически катастрофа. Прежде чем выбирать платформу, нужна одна вещь. Деньги. Точнее — понимание, где именно они утекают при каждом запросе к API, каждой генерации и каждом корпоративном логе, который уходит во внешний датацентр.
ChatGPT Enterprise в 2026 году стоит от $30/мес за пользователя при минимальном пороге в 150 мест — фактически входной билет обходится в $4500/мес для небольшой команды, и это ещё до учёта перерасхода токенов сверх лимита. Зато данные не используются для дообучения модели, трафик идёт через изолированный тенант OpenAI, а SOC 2 Type II входит в базовый пакет. Дорого. Но предсказуемо.
Azure OpenAI с развёртыванием в собственной VPC — другая математика. Стоимость GPT-4o через Azure API: $0.005 за 1К input-токенов и $0.015 за 1К output-токенов по ценам 2026 года. При 10 млн токенов в месяц (типичная нагрузка команды из 20 аналитиков) счёт выходит $50–150 в месяц за сами токены плюс $200–400 за compute VPC-инстанса. Итого: $250–550/мес — и данные физически не покидают твой Azure-регион.
Mistral self-hosted — это уже инфраструктурная история. Модель Mistral Large 2 разворачивается на A100 80GB (x2) или H100 (x1). Аренда одного H100 на RunPod в 2026 году — $2.49/час, то есть ~$1800/мес при 24/7 аптайме. При загрузке 40% рабочего времени (8 часов в сутки, 22 рабочих дня) стоимость падает до ~$440/мес. Никаких внешних API. Никаких токенов, улетающих в чужой датацентр. Но DevOps-час и поддержка инфраструктуры — отдельная строка в бюджете.
Ollama — радикальный вариант. Запускает Llama 3.3, Mistral 7B, Phi-4 и десятки других моделей локально, на железе компании. Стоимость лицензии: $0. Стоимость электричества для MacBook Pro M4 Max при непрерывной генерации — около $8–12/мес. Для сервера на базе RTX 4090 — $25–40/мес. Данные не покидают контур вообще — физически. Это главное.
| Платформа | Модель / Стек | Стоимость (2026) | Изоляция данных | Качество (Benchmark) | Скорость генерации | Порог окупаемости |
|---|---|---|---|---|---|---|
| ChatGPT Enterprise | GPT-4o, o3 | от $30/user/мес (мин. 150 мест = $4500/мес) |
Изолированный тенант OpenAI, SOC 2 Type II, данные не используются для обучения | ⭐⭐⭐⭐⭐ MMLU: 88.7% |
~60–80 tok/sec (API) | Выгоден при 150+ пользователях с низкой токен-нагрузкой |
| Azure OpenAI + VPC | GPT-4o, GPT-4 Turbo | Input: $0.005/1К tok Output: $0.015/1К tok + VPC: $200–400/мес |
Данные в Azure-регионе клиента, HIPAA / GDPR compliant, Private Endpoint | ⭐⭐⭐⭐⭐ MMLU: 88.7% |
~50–70 tok/sec | Выгоден при 5–50 пользователях с высокой токен-нагрузкой (>5М tok/мес) |
| Mistral Self-Hosted | Mistral Large 2 (123B) | H100 RunPod: $2.49/час ~$440/мес (8ч/день) ~$1800/мес (24/7) |
Полная изоляция, on-premise или private cloud, zero external API calls | ⭐⭐⭐⭐ MMLU: 84.0% |
~40–55 tok/sec (H100) | Выгоден при >20М токенов/мес или жёстких compliance-требованиях |
| Ollama (локальный) | Llama 3.3 70B, Mistral 7B, Phi-4 | $0 лицензия Электричество: $8–40/мес Железо (амортизация RTX 4090): ~$80/мес |
Абсолютная — данные не покидают устройство, нет сетевых запросов | ⭐⭐⭐ (7B) ⭐⭐⭐⭐ (70B) MMLU 70B: 82.6% |
7B: ~90 tok/sec (RTX 4090) 70B: ~18–25 tok/sec |
Выгоден с первого дня при любом объёме, если уже есть GPU-железо |
| Claude Enterprise (Anthropic) | Claude 3.7 Sonnet, Opus | от $25/user/мес API: Input $3/1М tok, Output $15/1М tok |
Изолированный тенант, данные не используются для обучения, GDPR | ⭐⭐⭐⭐⭐ MMLU: 88.2% |
~55–75 tok/sec (API) | Альтернатива ChatGPT Enterprise при меньшем числе мест (<150 чел.) |
До 2 млн токенов в месяц Azure OpenAI бьёт всё. Считаем прямо: 2М input-токенов × $0.005 = $10 + VPC $200 = $210/мес. ChatGPT Enterprise при той же нагрузке на 10 человек стоит $300/мес минимум — и это ещё при условии, что вам одобрят тариф без порога в 150 мест.
При нагрузке 50М+ токенов в месяц математика переворачивается. Azure счёт: 50М × $0.005 = $250 input + $750 output (при соотношении 1:3) + VPC = ~$1200/мес. Mistral на H100 при 8-часовом рабочем дне — $440/мес фиксированно, независимо от объёма. Точка перехода на self-hosted: ~20–25 млн токенов/мес.
Ollama с моделью Llama 3.3 70B на RTX 4090 генерирует со скоростью 18–25 токенов в секунду — это примерно 1.5М токенов в час при непрерывной работе. За 8-часовой день: 12М токенов. Стоимость этих токенов через Azure API составила бы $60–180 в день. Стоимость электричества для RTX 4090 — $0.70–1.20 в день. Разница — в 50–150 раз.
Self-hosted — не бесплатно. DevOps-инженер для поддержки Mistral-инстанса на Kubernetes стоит $3000–6000/мес в РФ и $8000–15000/мес в Европе. Ollama на корпоративном MacBook требует политику управления устройствами (MDM), иначе модель и данные живут на личном ноутбуке сотрудника — это compliance-дыра размером с грузовик.
Azure OpenAI Private Endpoint требует настройки NSG-правил, Private DNS Zone и VNet Peering — это 4–8 часов инженерного времени при первом развёртывании. Один раз. Потом работает само. ChatGPT Enterprise разворачивается за 20 минут через браузер и SSO — но $4500/мес минимального чека никуда не деваются.
// Быстрый расчёт точки перехода Azure → Self-Hosted (Mistral H100, 8ч/день)
// Введи свои значения:
const monthlyTokens = 50_000_000; // токенов в месяц
const azureInputCost = 0.005; // $ за 1К input-токенов
const azureOutputCost = 0.015; // $ за 1К output-токенов
const inputRatio = 0.6; // 60% — input, 40% — output
const vpcCost = 300; // $ VPC в месяц
const azureTotal =
(monthlyTokens * inputRatio / 1000) * azureInputCost +
(monthlyTokens * (1 - inputRatio) / 1000) * azureOutputCost +
vpcCost;
const selfHostedH100 = 2.49 * 8 * 22; // часов в день × рабочих дней
console.log(`Azure: $${azureTotal.toFixed(0)}/мес`);
console.log(`Mistral H100 (8ч/день): $${selfHostedH100.toFixed(0)}/мес`);
console.log(`Экономия self-hosted: $${(azureTotal - selfHostedH100).toFixed(0)}/мес`);
// При 50М токенов:
// Azure: ~$1200/мес
// Mistral H100: ~$438/мес
// Экономия: ~$762/мес → окупает DevOps-часы через 4–8 месяцев
Compliance-требования меняют всё. Если данные подпадают под 152-ФЗ (персональные данные РФ) или GDPR Tier-2 с запретом на трансграничную передачу — Azure западного региона и ChatGPT Enterprise юридически недоступны. Остаются Mistral self-hosted, Ollama и Azure Russia (если тенант развёрнут в российском регионе). Это сужает выбор до двух опций. Цена тут уже вторична — её диктует регулятор.
Большинство команд настраивают API-интеграцию с LLM по одной схеме: взяли ключ, вставили в запрос, отправили. Готово. Промпт без параметров безопасности — это как руль без рулевой рейки: крутится легко, но машина едет прямо в утечку данных. Именно API-слой — первая точка, где корпоративная информация покидает периметр без контроля, и последняя, где её ещё можно перехватить до отправки в облако провайдера.
Проблема не в самом LLM. Проблема в том, что происходит до отправки запроса.
TLS между клиентом и OpenAI API — это транзитное шифрование. Оно защищает канал, но не содержимое. Провайдер видит plaintext после расшифровки на своей стороне. Настоящий E2E в контексте LLM — это шифрование полей данных до сериализации промпта, передача зашифрованных токенов и расшифровка ответа только на клиенте.
Схема выглядит так: генерируешь симметричный ключ сессии (AES-256-GCM), шифруешь чувствительные поля, встраиваешь зашифрованные блоки в промпт как placeholders, модель работает с обезличенными данными, ответ возвращается с теми же placeholders — ты расшифровываешь локально. Это не мешает LLM понять контекст, если placeholders описаны в системной инструкции корректно.
Это работает. Не идеально, но работает.
Microsoft Presidio — open-source движок для обнаружения и анонимизации персональных данных (PII) перед отправкой в любой внешний сервис, включая OpenAI, Anthropic, Google Vertex AI. Поддерживает 40+ типов сущностей: имена, IBAN, номера паспортов, email, телефоны, IP-адреса, медицинские идентификаторы.
Устанавливается за три команды:
pip install presidio-analyzer presidio-anonymizer
python -m spacy download en_core_web_lg
# для русского языка:
pip install presidio-analyzer[transformers]
Базовый pipeline перехвата PII перед отправкой в LLM:
from presidio_analyzer import AnalyzerEngine
from presidio_anonymizer import AnonymizerEngine
from presidio_anonymizer.entities import OperatorConfig
import openai
analyzer = AnalyzerEngine()
anonymizer = AnonymizerEngine()
def scrub_and_send(user_input: str, system_prompt: str) -> str:
# Шаг 1: Обнаружение PII
results = analyzer.analyze(
text=user_input,
entities=["PERSON", "EMAIL_ADDRESS", "PHONE_NUMBER",
"IBAN_CODE", "CREDIT_CARD", "DATE_TIME"],
language="en"
)
# Шаг 2: Анонимизация с заменой на типизированные токены
anonymized = anonymizer.anonymize(
text=user_input,
analyzer_results=results,
operators={
"PERSON": OperatorConfig("replace", {"new_value": ""}),
"EMAIL_ADDRESS": OperatorConfig("replace", {"new_value": ""}),
"PHONE_NUMBER": OperatorConfig("replace", {"new_value": ""}),
"CREDIT_CARD": OperatorConfig("hash", {}) # необратимое хеширование
}
)
# Шаг 3: Отправка очищенного текста в LLM
client = openai.OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": anonymized.text}
],
temperature=0.2
)
return response.choices[0].message.content
# Пример вызова
result = scrub_and_send(
user_input="Иван Петров, ivan.petrov@corp.ru, IBAN DE89370400440532013000 — проверь договор",
system_prompt="Ты юридический ассистент. Анализируй документы. Токены вида — анонимизированные данные."
)
print(result)
Поле CREDIT_CARD уходит через необратимый hash — даже если лог перехватят, карту не восстановят. Остальные поля заменяются типизированными токенами, которые LLM интерпретирует корректно благодаря системной инструкции.
Задача: автоматизировать проверку договоров через GPT-4o в компании с 200+ юристами. Договоры содержат: имена физлиц, реквизиты, паспортные данные, суммы сделок. Отправка raw-текста в OpenAI API нарушала внутреннюю политику DLP и потенциально — GDPR.
Решение развернули за 4 дня. Presidio-сервис встроили как middleware между корпоративной СЭД и OpenAI API. Каждый документ проходил scrubbing: 23 типа сущностей заменялись токенами. Системная инструкция модели содержала явное описание схемы токенизации. Модель возвращала юридический анализ со ссылками на токены — юрист видел в интерфейсе уже де-токенизированный текст (обратная замена происходила локально, ключи хранились в корпоративном Vault).
Снизили объём PII, покидающего периметр: с 100% до нуля. Точка.
Presidio закрывает структурированные PII-паттерны. Но есть данные, которые детектор не поймает: названия внутренних проектов, кодовые имена продуктов, имена топ-менеджеров в контексте стратегических решений. Для этого слоя — prompt-обёртки.
Системная инструкция с явным запретом на обработку идентификаторов:
{
"role": "system",
"content": "You are a data analysis assistant operating in a privacy-restricted environment.\n\nRULES:\n1. Never repeat, store, or reference specific names, company identifiers, or project codes from user input.\n2. If input contains tokens like , , treat them as valid anonymized references.\n3. Your output must not reconstruct or infer original identities from context.\n4. If asked to reveal, guess, or extrapolate anonymized data — refuse and explain why.\n5. Operate under GDPR Article 25 (Privacy by Design) constraints."
}
Это не техническая защита. Это поведенческий контракт с моделью. Его ценность — в комбинации с Presidio, а не отдельно.
«The model is not the product. The way you deploy it is the product — and that includes how you handle the data that flows through it.»
Presidio — бесплатен (MIT license), хостится локально или в Azure. Latency на scrubbing документа 5000 символов — 80–150 мс на CPU, 20–40 мс на GPU. Это приемлемо для batch-обработки, критично для real-time чата — там нужна асинхронная схема или кэширование результатов анализа.
OpenAI API в 2026: GPT-4o — $2.50 за 1 млн input-токенов, $10.00 за output. Claude Sonnet 3.7 (Anthropic) — $3.00 input / $15.00 output за 1 млн токенов. Токенизированный текст после Presidio короче оригинала на 8–15% — прямая экономия на входящих токенах. Небольшая, но реальная.
Azure OpenAI Service предоставляет опцию «no logging» через параметр data_collection: false в заголовках запроса — данные не логируются на серверах Microsoft. Это часть Enterprise Agreement, доступна с тарифа Pay-as-you-go при активации через Azure Portal → OpenAI Resource → Data, Privacy and Security.
Anthropic аналогично — X-Api-No-Training: true в header запроса исключает данные из обучающих выборок. Верифицировано в документации API v2025.Q3.
Это не гипотетический сценарий. GitHub-сканеры типа truffleHog и GitGuardian фиксируют в среднем 5 000+ утечек API-ключей OpenAI ежедневно. Разработчик коммитит .env-файл. Бот GitGuardian присылает алерт через 47 секунд. Но ключ уже слит в паблик-форки. Потери на API-биллинге за одну ночь — от $200 до $4 000, пока счет не заморожен.
# НЕПРАВИЛЬНО — хардкод ключа прямо в скрипте
import openai
openai.api_key = "sk-proj-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
# ПРАВИЛЬНО — переменная окружения + python-dotenv
import os
from dotenv import load_dotenv
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
# .env добавляется в .gitignore ОБЯЗАТЕЛЬНО:
# echo ".env" >> .gitignore
# git rm --cached .env
Ротация ключей — не разовая процедура. В политике безопасности ключ должен жить не дольше 90 дней, а scope ограничен конкретным проектом через dashboard.openai.com → Project API Keys.
PII (Personally Identifiable Information) — это имена, email, ИНН, паспортные данные, адреса. Разработчик собирает форму онбординга и прогоняет её через GPT-4o для валидации. Целиком. С реальными данными клиента. OpenAI по умолчанию может использовать данные, переданные через API без активированного Zero Data Retention-режима — он включается отдельно для тарифов Tier 3+ через настройки организации.
Санация работает так: перед отправкой в LLM запускаешь NER-пайплайн (например, spaCy или Microsoft Presidio), заменяешь сущности на токены-заглушки. Результат — промпт без живых данных, только структура.
Системный промпт — не периметр безопасности. Это инструкция, а не firewall. Prompt injection через пользовательский ввод обходит его с вероятностью 60–80% в стандартных конфигурациях без дополнительной фильтрации (данные OWASP LLM Top 10, 2025). Вход через пользовательское поле — критическая поверхность атаки.
«The model doesn’t have a concept of ‘this is the system prompt and this is the user prompt’ the way we do. It’s all tokens.» — Сэм Альтман, интервью MIT Technology Review, 2024
Защита строится слоями: входная валидация → классификатор намерений → output-фильтр. Минимум три слоя. Точка.
Корпоративный чат-бот на базе Claude 3.5 Sonnet логирует все запросы пользователей в MongoDB без шифрования. Через 3 месяца в коллекции — 2,1 млн записей с фрагментами финансовых отчётов, именами контрагентов и внутренними кодами проектов. Один SQL-инъект в панели администратора — и всё это уходит наружу.
Шифрование at-rest для логов — AES-256 минимум. Retention policy — не более 30 дней без явного бизнес-обоснования. Доступ к логам — только через audit trail с MFA.
ChatGPT.com, Claude.ai, Gemini Advanced в браузере — это consumer-tier продукты. Данные, введённые туда сотрудниками, могут участвовать в обучении моделей, если организация не заключила enterprise-соглашение с DPA (Data Processing Agreement). Microsoft Azure OpenAI Service и Anthropic Claude for Enterprise дают DPA по умолчанию. Стоимость входа: Azure OpenAI — pay-as-you-go от $0.002 за 1K токенов (GPT-4o mini), Anthropic Enterprise — от $30/мес на пользователя.
Агент с доступом к CRM не должен иметь доступ к HR-базе. Это очевидно. Но в 70% ранних архитектур на LangChain или AutoGen все инструменты передаются агенту единым списком без scope-ограничений — потому что «так проще отлаживать». Потом не меняют. Каждый tool в агентном пайплайне должен иметь явно объявленный permission scope в манифесте.
Скомпрометированный ключ сотрудника генерирует 40 000 токенов в час в 03:00 по UTC. Никто не смотрит на billing dashboard. Обнаружение — через 11 дней, когда пришёл счёт. Стоимость инцидента: $1 700 и аудит на неделю. AWS CloudWatch, OpenAI Usage Alerts или Datadog с кастомными метриками — любой инструмент мониторинга стоит дешевле одного такого инцидента.
Задача: автоматический анализ клиентских обращений в службу поддержки (10 000+ тикетов/день) через GPT-4o для классификации по категориям. Тикеты содержат email, имена, номера договоров.
Решение: пайплайн на базе Microsoft Presidio + OpenAI API. Presidio запускает NER, заменяет сущности на псевдонимы ([EMAIL_1], [PERSON_1], [CONTRACT_ID_1]). GPT-4o получает санированный текст, возвращает категорию. Маппинг псевдонимов хранится локально, не покидает периметр. Точность классификации — 94.3% (F1-score на тестовой выборке в 2 000 тикетов). Стоимость обработки 10 000 тикетов через GPT-4o mini — около $1.40 при среднем тикете в 70 токенов.
import presidio_analyzer
import presidio_anonymizer
from openai import OpenAI
analyzer = presidio_analyzer.AnalyzerEngine()
anonymizer = presidio_anonymizer.AnonymizerEngine()
client = OpenAI()
def classify_ticket(raw_text: str) -> str:
# Шаг 1: Детектируем PII
results = analyzer.analyze(
text=raw_text,
language="ru",
entities=["PERSON", "EMAIL_ADDRESS", "PHONE_NUMBER", "ID"]
)
# Шаг 2: Анонимизируем
anonymized = anonymizer.anonymize(
text=raw_text,
analyzer_results=results
)
clean_text = anonymized.text
# Шаг 3: Отправляем только санированный текст
response = client.chat.completions.create(
model="gpt-4o-mini",
temperature=0.1,
messages=[
{"role": "system", "content": "Classify support ticket into one category: billing, technical, general. Return only the category word."},
{"role": "user", "content": clean_text}
]
)
return response.choices[0].message.content