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

OpenAI API로 logit bias를 사용해 토큰 확률을 바꾸기

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

마지막 수정: 5 days ago

Logit_bias는 선택적 매개변수로, 모델이 생성한 출력에서 특정 토큰이 등장할 가능성을 조정합니다.

이 매개변수는 토큰을 -100(대부분의 경우 해당 토큰이 생성되지 않도록 차단)부터 100(해당 토큰만 선택되도록 하여 생성될 가능성을 매우 높임)까지의 편향 값에 매핑하는 JSON 객체를 받습니다. -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이 없다고 가정해 봅시다. 그렇다면 완료 결과의 일부로 “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”가 너무 자주 등장하는 경향이 있었기 때문입니다.

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