Logit_bias est un paramètre facultatif qui modifie la probabilité que des tokens précis 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 changeront la probabilité qu’un token soit sélectionné dans une moindre mesure.
Comme le paramètre reçoit des tokens, et non du texte, vous voudrez utiliser un outil de tokenisation pour convertir le texte en identifiants de tokens. Passons en revue quelques exemples.
Exemple 1 : supprimer « time »
Si nous appelons l’endpoint Completions avec l’invite « Once upon a », la complétion commencera très probablement par « time ».
Le mot « time » se tokenise en ID 2435, et le mot « time » (qui contient un espace au début) se tokenise en ID 640. Nous pouvons les passer dans logit_bias avec -100 pour les empêcher d’apparaître dans la complétion, comme suit :
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}
)Maintenant, l’invite « Il était une fois » génère la complétion « un minuit lugubre, tandis que je méditais, faible et las. »
Vous remarquerez que le mot « temps » est introuvable, puisque nous avons effectivement interdit ce token à l’aide de logit_bias.
Exemple 2 : Orienter la génération avec des valeurs ciblées de biais de logit
Examinons un autre exemple à l’aide d’une invite pour un générateur de recettes.
De nombreuses recettes suggèrent d’utiliser des casseroles, mais supposons que nous n’en ayons pas. Nous voudrons empêcher le mot casserole d’être généré dans notre complétion. « Casserole » correspond au token 1787; nous pouvons donc l’exclure de notre génération en réglant logit_bias comme ci-dessous.
logit_bias={1787:-100}Maintenant, 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 à préparer au micro-ondes et voulons donc nous assurer que le mot « micro-ondes » figure dans la recette. Le mot « micro-ondes » correspond au token d’ID 27000. Nous pouvons augmenter la probabilité que ce token apparaisse en définissant une valeur positive pour logit_bias, comme suit :
logit_bias={27000:5}Maintenant, notre complétion est plus susceptible de contenir le mot « micro-ondes ».
Nous avons réglé logit_bias à 5, car un réglage de logit_bias à 1 ne faisait souvent pas apparaître le mot « micro-ondes » dans la complétion, tandis que des valeurs de logit_bias plus élevées, comme 10, faisaient apparaître le mot « micro-ondes » trop souvent.
