Gestion des sujets
Utilisez la gestion des sujets dans les limites de protection du service d'intelligence artificielle générative pour OCI pour vérifier le texte par rapport aux sujets que vous définissez pour votre application.
La gestion des sujets classe le texte par rapport aux sujets que vous définissez pour votre demande, tels que les prêts d'exposition ou les demandes de visite d'un musée en dehors des heures d'ouverture.
À partir de la version de système Guardrails 1.2.0, vous pouvez utiliser l'API ApplyGuardrails pour évaluer le texte par rapport aux sujets que vous définissez.
Vous envoyez des noms de sujet, des descriptions facultatives et des exemples facultatifs avec étiquette à chaque demande ApplyGuardrails. Le service évalue le texte par rapport à chaque sujet et retourne un résultat de correspondance ou de non-correspondance pour chacun. Votre application utilise ces résultats pour décider comment gérer le contenu.
Pour utiliser la gestion des sujets, incluez
topicConfig dans chaque demande ApplyGuardrails. Vous ne pouvez pas sélectionner la gestion des sujets en tant que garde-corps lors de la création ou de la mise à jour d'un point d'extrémité de modèle dans la console. La gestion des sujets n'est pas disponible au moyen du chemin de l'API compatible OpenAI.Les définitions de sujet s'appliquent à la demande courante. Le service ne les crée pas ou ne les stocke pas en tant que ressources de sujet réutilisables. Pour réutiliser une configuration de sujet, conservez-la dans votre application et incluez-la dans chaque demande. Pour modifier les sujets évalués, modifiez la configuration dans les demandes suivantes.
Fonctionnement de la gestion des sujets
- Définissez vos sujets. Donnez un nom à chaque sujet. Ajoutez une description pour clarifier sa portée et des exemples étiquetés pour illustrer le texte qui correspond ou ne correspond pas.
- Soumettre la configuration du texte et du sujet. Incluez le texte dans
multimodalInput, ajoutezguardrailConfigs.topicConfiget sélectionnez une version de système Guardrails prise en charge. - Lisez les résultats. Utilisez
results.topicModeration.topicspour rechercher le résultat de chaque sujet configuré. Plusieurs sujets peuvent correspondre au même texte. - Appliquer la politique de votre application. Par exemple, votre application peut autoriser l'interaction, rediriger l'utilisateur vers un sujet pris en charge ou empêcher la transmission du contenu à un modèle ou à un utilisateur.
Pour évaluer une entrée utilisateur, soumettez-la avant de l'envoyer au modèle. Pour évaluer une sortie de modèle, soumettez cette sortie en tant que texte dans une demande ApplyGuardrails distincte avant de l'afficher.
Une correspondance de sujet identifie l'objet du texte. Cela ne signifie pas que le texte est dangereux, et le résultat ne bloque pas automatiquement une demande d'inférence. Votre application détermine les sujets nécessitant une action.
Exigences de demande
Envoyer des demandes au point d'extrémité existant :
POST /20231130/actions/applyGuardrailsPour connaître la signature des demandes et l'intégralité du contrat d'API, consultez la page ApplyGuardrails.
- Réglez
guardrailVersionConfig.guardrailVersionà1.2.0ou à une version prise en charge ultérieure. La gestion des sujets nécessite une sélection de version explicite. Utilisez ListGuardrailVersions pour vérifier les versions, les descriptions et les états de cycle de vie disponibles. Voir Flux de sélection de version pour obtenir la liste des exigences et la sélection de la version PATCH. La version du système Guardrails est distincte de la version de l'API dans le chemin du point d'extrémité et de la version de la trousse SDK. - Incluez exactement un élément
TEXTdansmultimodalInputet placez le texte à classer danscontent. Le champlanguageCodeest facultatif. Si vous le fournissez, utilisezenou une variante régionale anglaise telle queen-US. - Omettre
input. LorsquetopicConfigest fourni,inputinclus entraîne HTTP 400, même simultimodalInputest également fourni. - Ajoutez
topicConfigsousguardrailConfigs. Indiquez au moins un sujet danstopicConfig.topics. - Indiquez l'OCID de votre compartiment dans
compartmentId.
La gestion des sujets évalue uniquement le texte anglais. Si la demande contient également des images, la classification des sujets les ignore. Les demandes d'image seulement, les éléments de texte multiples et les codes de langue non valides ou non anglais ne sont pas pris en charge pour la classification de sujet. L'omission de languageCode est autorisée.
Vous pouvez inclure des configurations de modération de contenu, de détection d'injection d'invite et de détection d'informations d'identification personnelle dans la même demande. L'ajout de la gestion des sujets ne modifie pas ces protections. Si vous omettez topicConfig, le comportement de la demande existante est conservé et la réponse n'inclut pas results.topicModeration.
Définition des sujets et des exemples
Définissez les sujets dans guardrailConfigs.topicConfig.topics. Facultativement, ajoutez des exemples étiquetés dans guardrailConfigs.topicConfig.fewShotExamples.
| Champ | Obligatoire | Exigences |
|---|---|---|
topics | Oui | Incluez 1 à 25 sujets par demande. |
topics[].name | Oui | Utilisez de 1 à 100 caractères, y compris au moins un caractère non blanc. Les noms doivent être uniques après l'ajustement des blancs de début et de fin et la comparaison sans tenir compte du cas de la lettre. |
topics[].description | Nombre | Décrivez le sujet en 1 000 caractères au maximum. |
fewShotExamples | Nombre | Incluez jusqu'à 15 exemples étiquetés. |
fewShotExamples[].userText | Oui, pour chaque exemple | Fournissez un exemple de texte de 1 à 1 000 caractères. |
fewShotExamples[].classification | Oui, pour chaque exemple | Incluez une entrée pour chaque sujet dans la demande. Chaque clé doit correspondre exactement au nom d'un sujet soumis, y compris la casse de la lettre. Utilisez la chaîne "true" si le sujet s'applique à l'exemple et "false" si ce n'est pas le cas. Les valeurs doivent être des chaînes en minuscules et non des valeurs booléennes JSON. Ne pas omettre les sujets ou inclure des clés supplémentaires. |
Par exemple, si vos sujets sont Exhibit Loans et After-Hours Access, chaque exemple doit contenir les deux clés dans son objet classification, même si un seul sujet s'applique.
Des exemples d'étiquettes dans
classification et le champ isMatched de la réponse utilisent les chaînes en minuscules "true" et "false".La validation de nom en double compare les noms de sujet. Il ne rejette pas les sujets uniquement parce que leurs significations se chevauchent. Par exemple, les noms qui diffèrent uniquement en cas de lettre sont des doublons, mais les noms différents ayant une signification similaire ne sont pas automatiquement des doublons.
Pour clarifier vos définitions :
- Utilisez des noms et des descriptions de sujet spécifiques. Par exemple, les
prêts pour l'annexe
sont plus spécifiques que lesexpositions
si vous souhaitez détecter les demandes d'emprunt d'objets de musée pour affichage dans un autre lieu. - Utilisez les descriptions pour expliquer la portée prévue et distinguer les sujets connexes.
- Fournissez des exemples représentatifs avec des étiquettes cohérentes. Étiquetez chaque sujet pour chaque exemple.
- Effectuez un test avec du texte correspondant, du texte non correspondant et du texte pouvant correspondre à plusieurs sujets. Précisez les descriptions et les exemples en fonction des résultats.
Les exemples guident la classification de la demande courante. Pour évaluer une définition révisée, envoyez une autre demande avec la configuration de sujet révisée.
Exemple de demande de gestion de sujet
Cet exemple montre comment vérifier un message à un assistant de musée fictif pour les prêts d'exposition et l'accès en dehors des heures d'ouverture. L'application peut utiliser une correspondance pour renvoyer la demande au personnel du musée. Remplacez <your-compartment-ocid> par l'OCID de votre compartiment.
{
"multimodalInput": [
{
"type": "TEXT",
"content": "Could our community center borrow the clock exhibit for a local exhibition and collect it after the museum closes?",
"languageCode": "en"
}
],
"guardrailConfigs": {
"topicConfig": {
"topics": [
{
"name": "Exhibit Loans",
"description": "Requests to temporarily borrow museum objects for display at another venue."
},
{
"name": "After-Hours Access",
"description": "Requests to enter museum spaces or collect items outside normal opening hours."
}
],
"fewShotExamples": [
{
"userText": "Can our community center borrow the navigation instruments for a school exhibition?",
"classification": {
"Exhibit Loans": "true",
"After-Hours Access": "false"
}
},
{
"userText": "May the photography club enter the gallery after closing time?",
"classification": {
"Exhibit Loans": "false",
"After-Hours Access": "true"
}
},
{
"userText": "Which gallery displays the restored clock?",
"classification": {
"Exhibit Loans": "false",
"After-Hours Access": "false"
}
}
]
}
},
"guardrailVersionConfig": {
"guardrailVersion": "1.2.0"
},
"compartmentId": "<your-compartment-ocid>"
}Cette demande active uniquement la classification des sujets. Pour évaluer le même texte avec d'autres protections, ajoutez leurs objets de configuration à côté de topicConfig. Voir Utilisation de l'API ApplyGuardrails.
Présentation des résultats d'un sujet
Lorsque la classification de sujet réussit, results.topicModeration.topics contient un résultat pour chaque sujet configuré, dans le même ordre que la demande. Les sujets qui ne correspondent pas sont inclus.
| Champ | Signification |
|---|---|
name | Nom du sujet exactement comme indiqué dans la demande. |
isMatched | Chaîne "true" lorsque le sujet s'applique au texte, ou "false" lorsque ce n'est pas le cas. |
score | 1.0 lorsque isMatched est "true" ou 0.0 lorsqu'il est "false". Aucune note fractionnaire n'est retournée. |
Le score est un résultat de classification binaire, pas un score de confiance gradué. Le résultat classe le texte global et ne retourne pas le texte mis en correspondance, les décalages ou les longueurs.
La réponse illustrative suivante présente les deux rubriques correspondant au message de l'exemple :
{
"results": {
"topicModeration": {
"topics": [
{
"name": "Exhibit Loans",
"score": 1.0,
"isMatched": "true"
},
{
"name": "After-Hours Access",
"score": 1.0,
"isMatched": "true"
}
]
}
},
"guardrailVersion": {
"version": "1.2.0"
}
}Votre application peut agir sur l'un ou l'autre match selon sa politique. Pour un sujet qui ne correspond pas, la réponse inclut toujours son nom avec score: 0.0 et isMatched: "false".
Validation et dépannage
Vérifiez que votre demande comprend une version du système Guardrails prise en charge et qu'elle répond aux exigences de sujet et d'entrée. La prise en charge de input, d'une demande d'image seulement, de plusieurs éléments de texte, d'un code de langue non valide ou non anglais, ou d'une version de garde-corps non prise en charge entraîne l'utilisation de HTTP 400. Vous pouvez omettre languageCode.
| Erreur de validation | Que vérifier |
|---|---|
INVALID_TOPIC | Vérifiez que chaque sujet a un nom non vide et que les noms et les descriptions répondent aux exigences de longueur. |
DUPLICATE_TOPIC | Vérifiez les noms qui deviennent identiques après avoir supprimé l'espace blanc environnant et les comparer sans tenir compte du cas de la lettre. |
TOPIC_LIMIT_EXCEEDED | Ne soumettez pas plus de 25 sujets dans une demande. |
INVALID_TOPIC_EXAMPLE | Vérifiez le nombre et la longueur des exemples. Chaque mappage de classification doit contenir exactement les noms de sujet soumis, avec la chaîne "true" ou "false" pour chaque nom. Les valeurs booléennes JSON et les autres chaînes ne sont pas acceptées. |
UNSUPPORTED_LANGUAGE | Si vous fournissez languageCode, utilisez en ou une variante régionale anglaise. Vous pouvez également omettre le champ. |
UNSUPPORTED_TOPIC_INPUT | Utilisez multimodalInput avec exactement un élément TEXT. Omettre input et ne pas soumettre de demande d'image seulement pour la classification de sujet. |
Si les résultats ne reflètent pas les rubriques souhaitées, consultez les descriptions des rubriques et les exemples d'étiquettes. Testez les définitions révisées avec du texte d'application représentatif avant d'utiliser les résultats pour appliquer votre politique.