Logit_bias est un paramètre facultatif qui modifie la probabilité que des tokens spécifiés apparaissent dans une sortie générée par un modèle.
Ce paramètre accepte un objet JSON qui associe des tokens à une valeur de biais comprise entre -100 (ce qui, dans la plupart des cas, empêchera ce token d’être généré) et 100 (sélection exclusive du token, ce qui le rend plus susceptible d’être généré). Des valeurs modérées comme -1 et 1 modifieront dans une moindre mesure la probabilité qu’un token soit sélectionné.
Comme le paramètre prend des tokens, et non du texte, vous devrez utiliser un outil de tokenisation pour convertir le texte en ID de tokens. Passons en revue quelques exemples.
Exemple 1 : supprimer « time »
Si nous appelons l’endpoint Completions avec le prompt « Once upon a », la complétion commencera très probablement par « time ».
Le mot « time » se tokenise en l’ID 2435 et le mot « time » précédé d’un espace se tokenise en l’ID 640. Nous pouvons les transmettre via logit_bias avec -100 pour les empêcher d’apparaître dans la complétion, comme ceci :
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "You finish user's sentences."},
"role": "user", "content": "Once upon a"} ]
logit_bias={2435:-100, 640:-100}
)Désormais, le prompt « Once upon a » génère la complétion « midnight dreary, while I pondered, weak and weary. »
Notez que le mot « time » est introuvable, car nous avons effectivement interdit ce token à l’aide de logit_bias.
Exemple 2 : orienter avec des valeurs de logit bias ciblées
Passons en revue un autre exemple, en utilisant un prompt de générateur de recettes.
De nombreuses recettes suggèrent d’utiliser des casseroles, mais supposons que nous n’ayons pas de casserole. Nous voudrons empêcher le mot « pot » d’être généré dans notre complétion. « Pot » se tokenise en 1787 ; nous pouvons donc le supprimer de notre génération en définissant notre logit_bias comme ci-dessous.
logit_bias={1787:-100}Désormais, notre complétion pourrait plutôt inclure le mot « saucepan ». Parfait !
Exemple 3 : augmenter les chances qu’un mot apparaisse
Supposons que nous voulions augmenter la probabilité qu’un mot apparaisse.
Par exemple, nous exploitons peut-être un site qui propose des recettes réalisables avec un micro-ondes, et nous voulons donc nous assurer que le mot « microwave » apparaît dans la recette. Microwave se tokenise en l’ID 27000. Nous pouvons augmenter la probabilité que ce token apparaisse en définissant un logit_bias positif, comme ceci :
logit_bias={27000:5}Désormais, notre complétion est plus susceptible d’inclure le mot « microwave ».
Nous définissons logit_bias sur 5, car nous avons constaté que définir logit_bias sur 1 ne faisait souvent pas apparaître le mot « microwave » dans la complétion, tandis que des valeurs de logit_bias plus élevées, comme 10, entraînaient une apparition trop fréquente du mot « microwave » dans la complétion.
