Réponse courte
Vous envoyez chaque texte au point de terminaison Moderation d’OpenAI, un classificateur gratuit lancé le 10 août, qui vous indique si le texte est signalé pour du contenu sexuel, haineux, violent ou lié à l’automutilation. Votre application décide ensuite quoi faire : le transmettre à GPT-3, le mettre de côté pour qu’une personne l’examine ou le bloquer.
Question de suivi Où une personne doit-elle encore vérifier?
Si votre application permet au public de taper du texte que GPT-3 lit ensuite ou auquel il répond, il vous faut un moyen d’intercepter le pire avant qu’il cause du tort. Le 10 août, OpenAI a lancé un outil conçu exactement pour cela : le point de terminaison Moderation (Moderation endpoint). Un point de terminaison est simplement une adresse de l’API qui accomplit une seule tâche. Celui-ci reçoit un texte et rend un verdict : enfreint-il ou non la politique de contenu d’OpenAI? Il remplace l’ancien filtre de contenu de l’entreprise, et OpenAI le décrit comme plus rapide et plus précis.
En coulisses, il s’agit d’un ensemble de classificateurs, des modèles entraînés à ranger du texte dans des catégories, construits sur des modèles GPT. OpenAI indique que les développeurs peuvent l’utiliser gratuitement pour modérer le contenu produit avec son API, ce qui vous évite de bâtir et d’entretenir vos propres filtres. Le filtrage d’autres contenus, comme ceux d’un forum qui n’appelle jamais GPT-3, fait l’objet d’une bêta privée qui sera payante.
Ce qu’il vérifie
Les catégories viennent d’un article que des chercheurs d’OpenAI ont publié le 5 août et qui décrit la construction du classificateur. Ses principales catégories sont :
- Le contenu sexuel, avec une catégorie distincte et plus stricte pour le contenu sexuel impliquant des mineurs.
- La haine : les propos injurieux visant des personnes en raison de ce qu’elles sont, avec une sous-catégorie grave pour la haine qui appelle à la violence.
- La violence, avec une sous-catégorie grave pour la violence extrêmement crue.
- L’automutilation : les descriptions crues de l’automutilation ou l’incitation à celle-ci.
L’article définit aussi le harcèlement, mais précise que cette catégorie est encore en cours d’amélioration et n’est pas encore offerte par le point de terminaison.
Un exemple concret : filtrer les commentaires d’un site de recettes
Imaginez un site communautaire de recettes. Les visiteurs laissent des commentaires, et le site utilise GPT-3 pour rédiger une courte réponse amicale à chacun. Vous ne voulez pas qu’un commentaire injurieux parvienne à GPT-3, et vous ne voulez pas non plus que la réponse de GPT-3 parte sans vérification. Le processus compte quatre étapes :
- Un visiteur soumet un commentaire.
- Votre serveur envoie le commentaire au point de terminaison Moderation.
- S’il revient signalé, le commentaire est mis de côté pour une personne; sinon, il va à GPT-3, qui rédige une réponse.
- La réponse passe elle aussi par le point de terminaison avant d’être publiée.
Avec la bibliothèque Python d’OpenAI, l’étape 2 tient en un seul appel :
import openai
openai.api_key = "VOTRE_CLE_API" # gardez-la sur votre serveur, jamais dans la page
comment = "Je l'ai faite hier soir. Beaucoup trop salée à mon goût, je mettrais deux fois moins de sauce soya."
result = openai.Moderation.create(input=comment)
La bibliothèque accepte aussi une liste de chaînes, ce qui vous permet de vérifier plusieurs commentaires en une seule requête. Vous pouvez nommer l’un de deux modèles, text-moderation-stable ou text-moderation-latest; si vous omettez le modèle, le point de terminaison utilise celui par défaut. La réponse indique si le texte est signalé dans l’ensemble et donne un verdict pour chaque catégorie, si bien que votre code peut traiter un signalement pour violence autrement qu’un signalement pour haine.
Voici comment le site pourrait traiter quatre commentaires. Les verdicts sont donnés à titre d’illustration; ce ne sont pas de vrais résultats de l’API :
| Commentaire (paraphrasé) | Signalé? | Action |
|---|---|---|
| Trop salé, mettre moitié moins de sauce soya | Non | Envoyer à GPT-3 pour une réponse |
| Une menace envers un autre commentateur | Oui (violence) | Mettre de côté pour examen, ne pas répondre |
| « Ce gâteau est mortel, je pourrais mourir heureux » | Peut-être | Mettre de côté pour examen |
| Une insulte visant un groupe religieux | Oui (haine) | Bloquer et consigner |
La troisième ligne est la plus intéressante. Des mots comme « mortel » et « mourir » peuvent déclencher un classificateur même quand le sens est inoffensif; c’est pourquoi un signalement devrait habituellement vouloir dire « une personne regarde ceci », et non « supprimer automatiquement ».
À essayer : écrivez dix exemples de commentaires pour un site que vous connaissez, dont deux inoffensifs qui emploient des expressions familières à consonance violente. Faites-les passer par le point de terminaison et classez les résultats en trois piles : « clairement correct », « clairement inacceptable » et « à faire voir par une personne ». C’est sur la troisième pile que vos règles d’examen devraient se concentrer.
Où une personne doit-elle encore vérifier?
Le contexte est la première raison. L’article d’OpenAI donne l’exemple d’une phrase comme « Je vais te tuer » : la taxonomie la classe comme violente, et pourtant, dans une œuvre de fiction, elle peut être tout à fait acceptable. Un classificateur voit des mots, pas la situation qui les entoure. Si votre site héberge des récits, des jeux de rôle ou des discussions sur l’histoire et l’actualité, attendez-vous à des signalements qu’une personne devra juger.
Les biais sont la deuxième. Les auteurs rapportent que leur modèle peut attribuer des scores de haine plus élevés aux textes qui mentionnent des personnes homosexuelles, et des scores sexuels plus élevés aux textes qui contiennent « her » (« elle » ou « la » en anglais), parce que les données d’entraînement venaient d’Internet. Ils préviennent aussi que de tels outils peuvent produire un nombre disproportionné de faux positifs quand les gens parlent de groupes souvent visés par la haine. En pratique, cela signifie que les membres d’une communauté qui parlent de leur propre vécu risquent d’être signalés plus que quiconque. L’examen humain des messages signalés, et un moyen simple de faire appel, protègent ces personnes.
La langue et les cas rares sont la troisième. Seulement 5 % environ des échantillons d’entraînement étaient dans d’autres langues que l’anglais, et les auteurs disent que la performance dans les autres langues n’a pas été évaluée rigoureusement. Si votre public écrit en français ou en espagnol, vérifiez à la main un échantillon des résultats. Il en va de même pour les trous dans la couverture : le harcèlement n’est pas encore une catégorie, si bien que l’intimidation qui évite les catégories énumérées peut passer.
Une approche sensée consiste à laisser le point de terminaison traiter automatiquement les cas clairs, à envoyer chaque signalement et chaque cas limite à une personne, et à vérifier chaque semaine un petit échantillon aléatoire de messages non signalés. Le classificateur accélère la modération; décider de ce que votre communauté accepte reste votre affaire.
Sources
- New-and-Improved Content Moderation Tooling — OpenAI, 10 août 2022
- A Holistic Approach to Undesired Content Detection in the Real World — arXiv (OpenAI: Markov, Zhang, Agarwal, Eloundou, Lee, Adler, Jiang, Weng), 5 août 2022
- openai-python v0.22.1: openai/api_resources/moderation.py — OpenAI on GitHub, 2 août 2022