Logit_bias is een optionele parameter die de waarschijnlijkheid wijzigt dat specifieke tokens verschijnen in door een model gegenereerde uitvoer.
Deze parameter accepteert een JSON-object dat tokens koppelt aan een bijbehorende biaswaarde van -100 (wat in de meeste gevallen voorkomt dat die token wordt gegenereerd) tot 100 (exclusieve selectie van de token, waardoor die waarschijnlijker wordt gegenereerd). Gematigde waarden zoals -1 en 1 veranderen de kans dat een token wordt geselecteerd in mindere mate.
Omdat de parameter tokens gebruikt, geen tekst, kun je een tokenizertool gebruiken om tekst om te zetten naar token-ID’s. Laten we een paar voorbeelden doornemen.
Voorbeeld 1: ‘time’ verwijderen
Als we de Completions-endpoint aanroepen met de prompt ‘Once upon a’, zal de completion zeer waarschijnlijk beginnen met ‘ time’.
Het woord ‘time’ wordt getokeniseerd naar de ID 2435 en het woord ‘ time’ (met een spatie aan het begin) wordt getokeniseerd naar de ID 640. We kunnen deze via logit_bias doorgeven met -100 om te voorkomen dat ze in de completion verschijnen, als volgt:
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "Je maakt de zinnen van de gebruiker af."},
"role": "user", "content": "Once upon a"} ]
logit_bias={2435:-100, 640:-100}
)De prompt "Once upon a" genereert nu de voltooiing "midnight dreary, while I pondered, weak and weary."
Merk op dat het woord "time" nergens voorkomt, omdat we dat token effectief hebben geblokkeerd met logit_bias.
Voorbeeld 2: Stuur de uitvoer met gerichte logit-biaswaarden
Laten we nog een voorbeeld bekijken met een prompt voor een receptgenerator.
Veel recepten raden aan om pannen te gebruiken, maar stel dat we geen pan hebben. We willen voorkomen dat het woord pot als onderdeel van onze voltooiing wordt gegenereerd. "Pot" wordt getokeniseerd als 1787. We kunnen het dus uit de generatie weren door logit_bias als volgt in te stellen.
logit_bias={1787:-100}Nu kan onze completion in plaats daarvan het woord ‘saucepan’ bevatten. Perfect!
Voorbeeld 3: De kans vergroten dat een woord voorkomt
Stel dat we de kans willen vergroten dat een woord voorkomt.
Misschien beheren we bijvoorbeeld een site met recepten voor de magnetron en willen we er daarom zeker van zijn dat het woord "microwave" in het recept voorkomt. Microwave wordt getokeniseerd als ID 27000. We kunnen de kans dat dit token voorkomt vergroten door als volgt een positieve logit_bias in te stellen:
logit_bias={27000:5}De kans is nu groter dat onze voltooiing het woord "microwave" bevat.
We hebben logit_bias ingesteld op 5, omdat een waarde van 1 er vaak niet toe leidde dat het woord "microwave" in de voltooiing voorkwam, terwijl hogere waarden voor logit_bias, zoals 10, ervoor zorgden dat het woord " microwave" te vaak voorkwam.
