OpenAI
이 페이지는 기계 번역되었습니다. 영어 원문 보기

OpenAI API에서 logit bias로 토큰 확률 변경하기

logit bias 매개변수를 사용해 모델 출력을 수정하는 방법을 알아보세요

마지막 수정: 12 days ago

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를 5로 설정했습니다. logit_bias를 1로 설정하면 완성 결과에 “microwave”라는 단어가 나타나지 않는 경우가 많았고, 10처럼 더 높은 logit_bias 값은 완성 결과에 “ microwave”라는 단어가 너무 자주 나타나게 했기 때문입니다.

이 문서가 도움이 되었나요?