Logit_bias는 모델이 생성한 출력에 지정된 토큰이 나타날 가능성을 수정하는 선택적 매개변수입니다.
이 매개변수는 토큰을 관련 편향 값에 매핑하는 JSON 객체를 받습니다. 값의 범위는 -100(대부분의 경우 해당 토큰 생성을 차단)부터 100(해당 토큰을 배타적으로 선택하여 생성될 가능성을 높임)까지입니다. -1 및 1과 같은 보통 수준의 값은 토큰이 선택될 확률을 더 작은 정도로 변경합니다.
이 매개변수는 텍스트가 아니라 토큰을 입력으로 받으므로, 텍스트를 토큰 ID로 변환하려면 토크나이저 도구를 사용하는 것이 좋습니다. 몇 가지 예를 살펴보겠습니다.
예 1: 'time' 제거
프롬프트 “Once upon a”로 Completions 엔드포인트를 호출하면, 완성 결과는 매우 높은 확률로 “ time”으로 시작합니다.
“time”이라는 단어는 ID 2435로 토큰화되고, “ time”(시작 부분에 공백이 있음)이라는 단어는 ID 640으로 토큰화됩니다. 다음과 같이 logit_bias를 통해 이들에 -100을 전달하여 완성 결과에 나타나지 않도록 금지할 수 있습니다.
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}
)이제 프롬프트 “Once upon a”를 입력하면 “midnight dreary, while I pondered, weak and weary.”라는 완성문이 생성됩니다.
logit_bias를 사용해 해당 토큰을 사실상 금지했기 때문에 어디에도 “time”이라는 단어가 없습니다.
예시 2: 특정 logit bias 값으로 생성 방향 제어하기
레시피 생성기 프롬프트를 사용한 또 다른 예시를 살펴보겠습니다.
많은 레시피에서 냄비를 사용하라고 하지만, 냄비가 없다고 가정해 보겠습니다. 완성문에 pot이라는 단어가 생성되지 않게 해야 합니다. 'Pot'을 토큰화하면 1787이 되므로 아래와 같이 logit_bias를 설정해 생성 결과에서 제외할 수 있습니다.
logit_bias={1787:-100}이제 완성 결과에는 대신 “saucepan”이라는 단어가 포함될 수 있습니다. 완벽합니다!
예시 3: 특정 단어가 나타날 확률 높이기
특정 단어가 나타날 가능성을 높이고 싶다고 가정해 보겠습니다.
예를 들어 전자레인지로 만들 수 있는 요리의 레시피를 제공하는 사이트를 운영하고 있어서, 레시피에 “microwave”라는 단어가 반드시 나타나게 하고 싶을 수 있습니다. Microwave를 토큰화하면 ID 27000이 됩니다. 다음과 같이 logit_bias를 양수로 설정하면 이 토큰이 나타날 가능성을 높일 수 있습니다.
logit_bias={27000:5}이제 완성문에 'microwave'라는 단어가 포함될 가능성이 커졌습니다.
logit_bias를 1로 설정하면 완성문에 “microwave”라는 단어가 나타나지 않는 경우가 많았고, 10처럼 높은 값으로 설정하면 “ microwave”라는 단어가 너무 자주 나타났기 때문에 logit_bias를 5로 설정했습니다.
