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}
)Nu genereert de prompt ‘Once upon a’ de completion ‘midnight dreary, while I pondered, weak and weary’.
Merk op dat het woord ‘time’ nergens te vinden is, omdat we die token effectief hebben geblokkeerd met logit_bias.
Voorbeeld 2: Richting geven met gerichte logit-biaswaarden
Laten we nog een voorbeeld doornemen, 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 wordt gegenereerd als onderdeel van onze completion. ‘Pot’ wordt getokeniseerd naar 1787, dus we kunnen het uit onze generatie verwijderen door onze logit_bias in te stellen zoals hieronder.
logit_bias={1787:-100}Nu kan onze completion in plaats daarvan het woord ‘saucepan’ bevatten. Perfect!
Voorbeeld 3: De kans vergroten dat een woord verschijnt
Stel dat we de waarschijnlijkheid willen vergroten dat een woord verschijnt.
Stel bijvoorbeeld dat we een site beheren met recepten die je met een magnetron kunt maken, en we er dus zeker van willen zijn dat het woord ‘microwave’ in het recept voorkomt. Microwave wordt getokeniseerd naar ID 27000. We kunnen de waarschijnlijkheid vergroten dat deze token verschijnt door een positieve logit_bias in te stellen, als volgt:
logit_bias={27000:5}Nu is de kans groter dat onze completion het woord ‘microwave’ bevat.
We hebben logit_bias ingesteld op 5, omdat we ontdekten dat logit_bias instellen op 1 er vaak niet toe leidde dat het woord ‘microwave’ in de completion verscheen, terwijl hogere logit_bias-waarden zoals 10 ertoe leidden dat het woord ‘ microwave’ te vaak in de completion verscheen.
