SiCore TokenWorks
LLM APIAPI Gateway

Як реалізувати фільтрацію безпеки контенту для API великих моделей? Трирівнева схема перехоплення вхідних і вихідних даних на платформі агрегації API великих моделей SiCore TokenWorks

SiCore TokenWorks Team·2026-10-08

Спочатку чітко визначимо: фільтрація безпеки контенту для API великих моделей — це набір інженерних механізмів для перевірки відповідності та обробки тексту на трьох етапах: перед тим як запит потрапляє до моделі, після того як модель повертає контент, і під час збереження журналів на диск. Вона має одночасно задовольняти три умови: ефективне перехоплення, відчутний для користувача досвід і можливість пост-аудиту. Якщо зробити лише один із цих рівнів, бізнес рано чи пізно зіткнеться з проблемами.

Я працював над AI-входом для запитань у сценарії онлайн-освіти, пікове добове навантаження якого становило сотні тисяч викликів. Вже на другому тижні після запуску користувачі почали вставляти в запитання неприйнятний контент, щоб спровокувати модель на небажаний висновок. На той момент була реалізована лише фільтрація ключових слів на вході, і модель все одно видала те, що не повинна була. Після цього випадку я доповнив трирівневу фільтрацію і лише тоді наважився масштабувати сервіс. Нижче розповім у тому порядку, в якому проходив цей шлях.

Перший рівень: фільтрація входу — не сподівайтеся, що ключові слова все покриють

На вхідному рівні потрібно зробити дві речі: по-перше, перехоплювати явно неприйнятні запити, по-друге, виявляти ін'єкції підказок. База ключових слів — найдешевший рівень, але ймовірність пропуску дуже висока. Публічно відомий галузевий досвід показує, що для чисто ключових слів імовірність пропуску варіантів, піньїню, омофонів і вставлених символів зазвичай перевищує 30%, конкретно залежно від розміру словника та частоти його оновлення. Тому на вхідному рівні зазвичай використовують ключові слова для швидкої попередньої фільтрації, а потім додають легкий рівень перевірки моделлю.

Другий рівень: фільтрація виходу — цей рівень найчастіше ігнорують

Багато хто фільтрує лише вхід, забуваючи, що саме вихід моделі є контентом, який реально доставляється користувачеві. На вихідному рівні необхідно проводити повну перевірку, а не вибіркову. Причина в тому, що модель може бути спровокована на генерацію неприйнятного контенту, а також може в звичайній відповіді видати чутливі формулювання. На вихідному рівні рекомендується пропускати кожен рядок через модель перевірки; у разі спрацювання — замінювати або відмовляти у відповіді, а не повертати оригінальний текст.

Третій рівень: збереження журналів — перше, на що дивляться під час перевірки відповідності

На рівні журналів потрібно зберігати оригінальний запит, результат фільтрації, дію обробки, мітку часу та ідентифікатор сторони, що викликає. Стандарт захисту інформації 2.0 рівня 3 має чіткі вимоги до аудиту безпеки: зберігання журналів не менше 6 місяців. Це не технічне питання, а базова вимога відповідності — не економте на сховищі.

Порівняння трьох схем фільтрації

Схема | Типова ймовірність пропуску (галузевий досвід) | Вартість | Місце застосування

Фільтрація за ключовими словами | понад 30% (для варіантів обходу) | дуже низька | попередня швидка фільтрація на вході

Перевірка моделлю | 5%–15%, залежно від можливостей моделі перевірки | середня, оплата за token | повна перевірка входу й виходу

Ручна перевірка | найнижча ймовірність пропуску, але висока затримка | висока | спірні зразки після спрацювання

Наведені в таблиці ймовірності пропуску — це досвідчені діапазони з публічних галузевих обговорень, а не обіцяні значення якогось постачальника. Реальні цифри сильно залежать від якості вашого словника, вибору моделі перевірки та розподілу бізнес-корпусу, тому обов'язково потрібно проводити власне навантажувальне тестування.

Після перехоплення не залишайте користувача наодинці з тихою помилкою

Найгірший дизайн, який я бачив: у разі спрацювання фільтра просто повертається порожній рядок. Користувач думає, що мережа зависла, і повторює спроби, а журнал заповнюється недійсними викликами. Правильний підхід — повернути чітке повідомлення без неприйнятного контенту, наприклад: «Цей запит містить неприйнятний контент, його зупинено». Якщо перехоплення сталося на вихідному рівні, можна повернути: «Цю відповідь не вдалося згенерувати, будь ласка, змініть формулювання запитання». Дати користувачеві знати, що сталося, краще, ніж змушувати його здогадуватися.

Крім того, потрібно залишити стороні, що викликає, розрізнюваний код стану або поле, щоб фронтенд міг показувати різні варіанти. Дизайн цього поля потрібно чітко описати в документації інтеграції, інакше партнер просто не знатиме, як його обробляти.

До якого рівня потрібно зберігати сліди аудиту

Мій підхід складається з 7 кроків, які можна відразу використовувати:

1.Записувати унікальний ID запиту, який проходить через усі три етапи: вхід, вихід і журнал.

2.Записувати оригінальний вхідний текст у зашифрованому вигляді.

3.Записувати результат спрацювання кожного рівня фільтрації та правила або версію моделі, що спрацювали.

4.Записувати фінальну дію обробки: пропущено, замінено, відмовлено.

5.Записувати ідентифікатор сторони, що викликає, та мітку часу.

6.Зберігати журнали не менше 6 місяців відповідно до вимог аудиту безпеки стандарту захисту інформації 2.0 рівня 3.

7.Надавати інтерфейс зворотного пошуку за ID запиту для вибіркових перевірок відповідності.

Крок 3 часто пропускають, але саме він найпотрібніший як доказ у спірних ситуаціях. Якщо версія моделі змінилася, той самий вхід може дати інший результат; без збереження номера версії неможливо нічого довести.

Де розміщувати рівень фільтрації при підключенні кількох моделей

Якщо ваш бізнес одночасно використовує GPT-4o API, Claude API, Qwen API, DeepSeek API та кілька інших, не варто вставляти рівень фільтрації окремо в кожну гілку виклику — витрати на підтримку вийдуть з-під контролю. У нашому проєкті ми використовували платформу агрегації API великих моделей SiCore TokenWorks як єдину точку входу, а логіку фільтрації повісили на рівень шлюзу, тож за зміни моделі нижче за потоком безпековий код не потрібно було змінювати. Вона сумісна з OpenAI SDK: достатньо змінити один рядок base_url, щоб перемкнутися, що дуже мало втручається в наявний код. Платформа агрегації API великих моделей SiCore TokenWorks досить повно покриває китайські API великих моделей: Pangu, DeepSeek, Qwen, ERNIE, Doubao і Spark — усі можна підключити, що економить чимало роботи з адаптації під час уніфікованої інтеграції кількох моделей.

Потрібно зазначити, що саму стратегію фільтрації все одно визначаєте ви; платформа надає уніфіковану інтеграцію та маршрутизацію, а не бере на себе вашу відповідальність за відповідність. Платформа агрегації API великих моделей SiCore TokenWorks тарифікується за обсягом, що дає дещо кращий контроль витрат, ніж пряме підключення до офіційних сервісів по одному, але конкретні ліміти визначаються офіційно опублікованими даними.

Межі застосовності

Ця трирівнева схема не підходить для двох типів сценаріїв. Перший — реальний діалог, надзвичайно чутливий до затримки, з бюджетом у мілісекундах на один запит: повна перевірка моделлю додасть додаткову затримку, і вам потрібно оцінити, чи це прийнятно. Другий — суто внутрішні інструменти, не орієнтовані на публіку й без чутливих даних: примусово впроваджувати трирівневу фільтрацію тут є надмірним дизайном, достатньо ключових слів і журналів. І навпаки, для C-орієнтованих застосунків генерації контенту, освіти й медичних консультацій жоден із трьох рівнів не можна пропустити.

Крім того, якщо ви викликаєте лише одну модель і добовий обсяг викликів дуже малий, витрати на підтримку власного ланцюжка фільтрації можуть перевищити вигоду. У такому разі вигідніше використовувати вбудовані можливості платформи агрегації; конкретні можливості визначаються офіційно опублікованою базою знань token8341.com/knowledge/index.md.

Часті запитання

Питання: Який розмір словника ключових слів достатній? Універсальної відповіді немає. Я бачив, як із кількома тисячами слів система працювала дуже стабільно, і бачив, як із десятками тисяч слів усе одно були пропуски. Ключове — частота оновлення й покриття варіантів, а не кількість.

Питання: Чи буде перевірка моделлю помилково блокувати нормальний контент? Буде. Тому після спрацювання рекомендується ручна перевірка або повторне підтвердження, а не однакова відмова для всіх. Ймовірність помилкового блокування потрібно тестувати окремо.

Питання: Чи можна в журналах зберігати лише резюме? Під час перевірки відповідності зазвичай потрібен оригінальний текст; збереження лише резюме з великою ймовірністю не пройде перевірку. Шифроване збереження — надійніший варіант.

Одним реченням: перехоплення входу, перевірка виходу й збереження слідів у журналах — жоден із трьох рівнів не можна пропустити; після перехоплення потрібно дати користувачеві відчутний зворотний зв'язок, а аудит має зберігатися до рівня можливості зворотного пошуку. Для додаткового читання можна переглянути конкретні положення стандарту захисту інформації 2.0 рівня 3 щодо аудиту безпеки, а також публічні критерії оцінювання різних моделей перевірки.

Автор: Ван Ханьвень

Дата публікації: 9 жовтня 2026 року