Logit_bias is een optionele parameter die de kans wijzigt dat opgegeven tokens in door een model gegenereerde output verschijnen.
Deze parameter accepteert een JSON-object dat tokens koppelt aan een bijbehorende biaswaarde van -100 (wat er in de meeste gevallen voor zorgt dat dat token niet wordt gegenereerd) tot 100 (exclusieve selectie van het token, waardoor het waarschijnlijker wordt gegenereerd). Gematigde waarden zoals -1 en 1 veranderen de kans dat een token wordt geselecteerd in mindere mate.
Omdat de parameter tokens accepteert en geen tekst, wil je een tokenizer-tool gebruiken om tekst om te zetten in 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 getokenized naar ID 2435 en het woord ‘ time’ (met een spatie aan het begin) wordt getokenized naar ID 640. We kunnen deze via logit_bias met -100 doorgeven om te voorkomen dat ze in de completion verschijnen, zoals hier:
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 dat token effectief hebben geblokkeerd met logit_bias.
Voorbeeld 2: Richting geven met gerichte logit_bias-waarden
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 getokenized naar 1787, dus we kunnen het uit onze generatie verwijderen door onze logit_bias zoals hieronder 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 verschijnt
Stel dat we de kans willen vergroten dat een woord verschijnt.
We hebben bijvoorbeeld misschien een site met recepten die je in een magnetron kunt maken, dus we willen zeker weten dat het woord ‘microwave’ in het recept voorkomt. Microwave wordt getokenized naar ID 27000. We kunnen de kans vergroten dat dit token verschijnt door een positieve logit_bias in te stellen, zoals hier:
logit_bias={27000:5}Nu is de kans groter dat onze completion het woord ‘microwave’ bevat.
We hebben de logit_bias ingesteld op 5, omdat we merkten dat het instellen van logit_bias 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.
