Comment éviter de casser les LLM tout en protégeant les données : sous le capot du filtre de garde-fous
OpenAI
Anthropic
Cet article détaille les défis d'ingénierie liés à la construction d'un filtre de garde-fous, une couche de protection des données pour les requêtes LLM. Il met en lumière les complexités du masquage et du démasquage des données personnelles dans les réponses en streaming, la gestion des appels d'outils et la prise en charge de plusieurs formats d'API. L'auteur partage des perspectives issues de la mise en œuvre du filtre pour les API Chat Completions et Messages.
L'article traite du développement d'un filtre de garde-fous conçu pour protéger les données personnelles dans les interactions avec les grands modèles de langage. Bien que trouver des données personnelles à l'aide d'expressions régulières soit simple, le vrai défi réside dans l'intégration du filtre entre l'application et le modèle sans interrompre l'interaction. Le filtre doit gérer les requêtes ordinaires, le streaming, l'appel d'outils, maintenir la structure des messages et préserver les métadonnées. Pour gérer plusieurs instances du même type de données, le filtre utilise une table de correspondance, attribuant des espaces réservés uniques comme <PHONE_1> à chaque valeur distincte. Étant donné que les LLM sont sans état, le filtre doit retraiter l'historique complet de la conversation à chaque requête. En mode streaming, les réponses arrivent par morceaux, et les espaces réservés peuvent être répartis sur plusieurs morceaux ; le filtre utilise un tampon pour accumuler suffisamment de données avant de tenter le démasquage. Il gère également divers champs dans les réponses, y compris le contenu, le raisonnement et les arguments d'appel d'outils, en veillant à ce que les données soient correctement restaurées dans tous ces champs. L'implémentation a atteint environ 1 500 lignes de code pour le streaming dans Chat Completions uniquement. De plus, la prise en charge de l'API Messages a nécessité une implémentation séparée en raison de son format basé sur les événements, portant le code de test total à plus de 4 000 lignes.
Source: Habr — хаб ИИ —
original
