Langage Toxique
18 min
le garde fou de langage toxique détecte le contenu nuisible, y compris les discours de haine, les menaces, les insultes et d'autres communications qui pourraient nuire à votre communauté ou à votre marque contrairement aux simples filtres de mots clés, ce garde fou utilise l'ia pour comprendre le contexte, le ton et l'intention knmknknkjn quand utiliser ce garde fou l'avantage clé par rapport au simple filtrage par mots clés est que ce garde fou comprend les nuances quelqu'un peut être hostile sans utiliser de grossièretés, et il peut utiliser un langage fort sans être hostile le garde fou analyse l'intention et le ton, pas seulement le choix des mots comprendre les niveaux de sensibilité le paramètre de sensibilité contrôle la rigueur de la barrière de protection pensez y comme à l'ajustement du seuil de ce qui constitue une violation c'est l'un des choix de configuration les plus importants que vous ferez car il change fondamentalement le contenu qui passe ou échoue une sensibilité faible ne signale que les violations graves comme les menaces explicites et les discours de haine extrêmes lorsque vous réglez la sensibilité sur faible, vous dites que vous vous attendez à des opinions fortes et à des désaccords robustes, et que vous ne voulez bloquer que le contenu qui franchit une ligne claire vers un territoire menaçant ou haineux par exemple, "je suis fortement en désaccord avec cette approche et je pense qu'elle est mal orientée" passerait à faible sensibilité, tout comme "c'est une terrible idée " seul un contenu comme "je te trouverai et je te ferai du mal" ou un discours de haine explicite échouerait la sensibilité faible fonctionne bien pour les forums publics où le débat est attendu, les environnements de retour professionnel où la franchise est valorisée, et les communautés techniques où les gens discutent de sujets controversés le compromis est que certains contenus qui mettent les gens mal à l'aise pourraient encore passer la sensibilité moyenne est le paramètre par défaut et représente une approche équilibrée à ce niveau, la barrière de protection signale les violations claires, y compris les insultes et le langage hostile, tout en permettant encore le désaccord professionnel et la critique constructive un message comme "je ne suis pas d'accord avec votre raisonnement" passerait, mais "tu es un idiot" ou "des gens comme vous sont le problème" échoueraient la sensibilité moyenne fonctionne bien pour la plupart des applications, y compris les systèmes de service client, les communications professionnelles, les outils collaboratifs et les plateformes sociales elle trouve un équilibre entre la possibilité d'un discours significatif et le maintien d'un environnement respectueux la haute sensibilité crée l'environnement le plus strict en signalant tout contenu potentiellement toxique, y compris la légèreté de la grossièreté et le langage désinvolte à ce niveau, même un contenu comme "peu importe, mec" ou "c'est plutôt stupide" échouerait seul un contenu respectueux et neutre passe à haute sensibilité une haute sensibilité est appropriée pour les applications destinées aux enfants où vous avez besoin d'une protection maximale, les plateformes éducatives où vous souhaitez modéliser une communication respectueuse, les espaces sûrs et les communautés de soutien où les gens ont besoin de se sentir en sécurité, et les contextes critiques en matière de conformité où tout problème potentiel doit être détecté options de configuration le garde fou contre le langage toxique accepte plusieurs options de configuration qui vous permettent d'ajuster son comportement pour votre cas d'utilisation spécifique // available options // sensitivity "low", "medium", or "high" (default "medium") // model model identifier (default claude 3 5 haiku) // temperature 0 1, lower values = more consistent (default 0 1) // maxtokens response length limit (default 200) await abv guardrails toxiclanguage validate(text, { sensitivity "medium", model "model name", temperature 0 1, maxtokens 200, }); \# available options \# sensitivity "low", "medium", or "high" (default "medium") \# model model identifier (default claude 3 5 haiku) \# temperature 0 1, lower values = more consistent (default 0 1) \# maxtokens response length limit (default 200) abv guardrails toxic language validate(text, { "sensitivity" "medium", "model" "model name", "temperature" 0 1, "maxtokens" 200 }) l'option de sensibilité est la plus importante et vous l'utiliserez fréquemment les options de modèle, de température et de maxtokens sont des paramètres avancés que vous n'aurez généralement pas besoin de modifier le modèle par défaut est optimisé pour les tâches de garde fou et offre le meilleur équilibre entre vitesse, précision et coût la température par défaut de 0 1 garantit des résultats cohérents le maxtokens par défaut de 200 est suffisant pour le champ d'explication exemples du monde réel examinons des exemples concrets de la manière dont différents niveaux de sensibilité traitent divers types de contenu comprendre ces schémas vous aidera à choisir la bonne sensibilité pour votre application considérez un message comme "je ne suis pas d'accord avec votre approche de ce problème " il s'agit d'un désaccord professionnel qui passe à tous les niveaux de sensibilité le langage est neutre et respectueux malgré l'expression du désaccord maintenant, considérez "c'est une terrible idée et montre un mauvais jugement " cela passe à faible et moyen niveau de sensibilité car, bien que critique, cela se concentre sur l'idée plutôt que d'attaquer la personne cependant, cela pourrait échouer à un niveau de sensibilité élevé car "terrible" et "mauvais jugement" pourraient être considérés comme dédaigneux un message comme "tu ne sais pas de quoi tu parles" échoue à un niveau de sensibilité moyen et élevé car il attaque directement la compétence de la personne cela pourrait passer à faible sensibilité puisqu'il ne contient pas de menaces explicites ou de discours de haine, bien que ce soit limite un contenu comme "tu es un idiot" ou "les gens comme toi sont le problème" échoue à tous les niveaux de sensibilité ce sont des attaques personnelles claires sans valeur constructive enfin, des menaces explicites comme "je te trouverai et je te ferai du mal" échouent à tous les niveaux de sensibilité avec une confiance maximale c'est un contenu toxique sans ambiguïté modèles de mise en œuvre voici comment vous utiliseriez typiquement la détection de langage toxique dans différentes parties de votre application pour la validation des entrées, vous vérifiez les messages des utilisateurs avant de les envoyer à votre ia ou de les afficher à d'autres utilisateurs async function validateusermessage(message string) promise\<boolean> { const result = await abv guardrails toxiclanguage validate( message, { sensitivity "medium" } ); if (result status === "pass") { return true; } // log the reason for monitoring, but don't expose it to the user console log("blocked message ", result reason); return false; } // usage in your message handler if (await validateusermessage(userinput)) { await processmessage(userinput); } else { return { error "your message violates our community guidelines " }; } async def validate user message(message str) > bool result = await abv guardrails toxic language validate async( message, {"sensitivity" "medium"} ) if result\["status"] == "pass" return true \# log the reason for monitoring, but don't expose it to the user print(f"blocked message {result\['reason']}") return false \# usage in your message handler if await validate user message(user input) await process message(user input) else return {"error" "your message violates our community guidelines "} pour la validation des sorties, vous vérifiez les réponses générées par l'ia avant de les montrer aux utilisateurs async function generatesaferesponse(prompt string) promise\<string> { // generate initial response let response = await callai(prompt); // validate the response const validation = await abv guardrails toxiclanguage validate( response, { sensitivity "high" } ); // if toxic, regenerate with explicit safety instruction if (validation status === "fail") { response = await callai( prompt + "\n\nimportant respond in a professional, respectful tone " ); } return response; } async def generate safe response(prompt str) > str \# generate initial response response = await call ai(prompt) \# validate the response validation = await abv guardrails toxic language validate async( response, {"sensitivity" "high"} ) \# if toxic, regenerate with explicit safety instruction if validation\["status"] == "fail" response = await call ai( f"{prompt}\n\nimportant respond in a professional, respectful tone " ) return response pour gérer les cas ambigus, vous pourriez mettre en place une file d'attente de révision pour les résultats incertains async function handleusercontent(content string) { const result = await abv guardrails toxiclanguage validate( content, { sensitivity "medium" } ); if (result status === "pass") { // content is clearly acceptable await publishcontent(content); } else if (result status === "fail" && result confidence > 0 8) { // high confidence violation, auto reject await rejectcontent(content, "community guidelines violation"); } else { // low confidence or unsure flag for human review await flagformoderation(content, result); } } async def handle user content(content str) result = await abv guardrails toxic language validate async( content, {"sensitivity" "medium"} ) if result\["status"] == "pass" \# content is clearly acceptable await publish content(content) elif result\["status"] == "fail" and result\["confidence"] > 0 8 \# high confidence violation, auto reject await reject content(content, "community guidelines violation") else \# low confidence or unsure flag for human review await flag for moderation(content, result) optimisation des performances puisque la détection de langage toxique utilise l'ia, cela prend une à trois secondes par vérification et consomme des jetons vous pouvez optimiser les performances en effectuant d'abord une vérification rapide basée sur des règles pour attraper les violations évidentes avant de faire l'appel coûteux à l'ia async function efficienttoxiccheck(text string) promise\<boolean> { // quick check for explicitly forbidden terms (under 10ms, free) const quickcheck = await abv guardrails containsstring validate( text, { strings \["explicit slur", "forbidden term"], mode "none", } ); // if quick check fails, no need for expensive ai check if (quickcheck status === "fail") { return false; } // only run ai check if quick check passed const deepcheck = await abv guardrails toxiclanguage validate(text); return deepcheck status === "pass"; } async def efficient toxic check(text str) > bool \# quick check for explicitly forbidden terms (under 10ms, free) quick check = await abv guardrails contains string validate async( text, { "strings" \["explicit slur", "forbidden term"], "mode" "none" } ) \# if quick check fails, no need for expensive ai check if quick check\["status"] == "fail" return false \# only run ai check if quick check passed deep check = await abv guardrails toxic language validate async(text) return deep check\["status"] == "pass" meilleures pratiques de sécurité ne jamais exposer le champ de raison aux utilisateurs finaux la raison explique pourquoi le contenu a échoué à la validation, et exposer cette information aide les acteurs malveillants à apprendre comment contourner vos garde fous au lieu de cela, utilisez des messages d'erreur génériques tout en enregistrant la raison détaillée en interne pour le suivi et l'amélioration // bad exposes validation logic if (result status === "fail") { return { error result reason }; // don't do this! } // good generic message, internal logging if (result status === "fail") { logger info("blocked toxic content", { reason result reason }); return { error "your message violates our community guidelines " }; } \# bad exposes validation logic if result\["status"] == "fail" return {"error" result\["reason"]} # don't do this! \# good generic message, internal logging if result\["status"] == "fail" logger info(f"blocked toxic content {result\['reason']}") return {"error" "your message violates our community guidelines "} choisir la bonne sensibilité voici un cadre de décision pour choisir la sensibilité en fonction de votre type d'application si vous construisez pour des enfants ou des populations vulnérables, utilisez toujours une haute sensibilité le potentiel de dommages causés par l'autorisation de contenu toxique l'emporte de loin sur le coût des faux positifs si vous construisez une application destinée aux clients comme un service client, des réseaux sociaux ou des outils collaboratifs, une sensibilité moyenne est généralement appropriée elle détecte les violations claires tout en permettant des désaccords professionnels si vous construisez pour des publics professionnels ou techniques où un débat robuste est attendu, envisagez une faible sensibilité les forums techniques, les systèmes de révision de code et les outils de retour professionnel bénéficient de la possibilité d'exprimer des opinions fortes vous pouvez également ajuster la sensibilité en fonction du contexte de l'utilisateur les utilisateurs authentifiés avec un bon historique pourraient avoir une sensibilité plus faible tandis que les utilisateurs anonymes obtiennent une sensibilité plus élevée les utilisateurs qui s'identifient comme mineurs obtiennent automatiquement une haute sensibilité, quelle que soit la configuration par défaut prochaines étapes la barrière de langage toxique est souvent utilisée avec d'autres barrières pour une validation complète du contenu envisagez de la combiner avec la détection de langage biaisé pour une solution de sécurité du contenu plus complète vous voudrez peut être également utiliser une chaîne de contenu pour attraper rapidement les termes interdits explicites avant d'exécuter le contrôle de langage toxique plus coûteux pour des conseils d'implémentation plus détaillés, consultez la documentation des meilleures pratiques qui couvre les stratégies d'optimisation, la gestion des erreurs et les approches de surveillance asdasdasdasdasdasdasdasdasdsa