Logit_bias เป็นพารามิเตอร์เสริมที่ใช้ปรับโอกาสที่ Token ที่ระบุจะปรากฏในเอาต์พุตที่โมเดลสร้างขึ้น
พารามิเตอร์นี้รับอ็อบเจ็กต์ JSON ที่แมป Token กับค่าความเอนเอียงที่เกี่ยวข้องตั้งแต่ -100 (ซึ่งในกรณีส่วนใหญ่จะบล็อกไม่ให้สร้าง Token นั้น) ถึง 100 (บังคับเลือก Token นั้นโดยเฉพาะ ทำให้มีโอกาสถูกสร้างมากขึ้น) ค่าระดับปานกลางอย่าง -1 และ 1 จะเปลี่ยนความน่าจะเป็นที่ Token จะถูกเลือกในระดับที่น้อยกว่า
เนื่องจากพารามิเตอร์นี้รับ Token ไม่ใช่ข้อความ คุณจึงควรใช้เครื่องมือ tokenizer เพื่อแปลงข้อความเป็น ID ของ Token มาดูตัวอย่างกันสักเล็กน้อย
ตัวอย่างที่ 1: ลบ ‘time’
หากเราเรียกใช้ endpoint Completions ด้วยคำสั่ง “Once upon a,” ผลลัพธ์ที่ได้มีแนวโน้มสูงมากว่าจะเริ่มต้นด้วย “ time.”
คำว่า “time” ถูก Tokenize เป็น ID 2435 และคำว่า “ time” (ซึ่งมีเว้นวรรคอยู่ข้างหน้า) ถูก Tokenize เป็น ID 640 เราสามารถส่งค่าเหล่านี้ผ่าน logit_bias ด้วยค่า -100 เพื่อห้ามไม่ให้ปรากฏใน completion ได้ดังนี้:
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” จะสร้าง completion เป็น “midnight dreary, while I pondered, weak and weary.”
สังเกตว่าคำว่า “time” ไม่ปรากฏอยู่เลย เพราะเราได้ห้าม Token นี้อย่างมีประสิทธิภาพด้วย logit_bias
ตัวอย่างที่ 2: กำหนดทิศทางด้วยค่า logit bias แบบเจาะจง
มาดูอีกตัวอย่างหนึ่ง โดยใช้คำสั่งสำหรับสร้างสูตรอาหาร
หลายสูตรแนะนำให้ใช้หม้อ แต่สมมติว่าเราไม่มีหม้อ เราจึงต้องการไม่ให้คำว่า pot ถูกสร้างขึ้นมาเป็นส่วนหนึ่งของ completion ของเรา ‘Pot’ ถูก Tokenize เป็น 1787 ดังนั้นเราจึงสามารถลบมันออกจากการสร้างได้โดยตั้งค่า logit_bias ตามด้านล่าง
logit_bias={1787:-100}ตอนนี้ completion ของเราอาจมีคำว่า “saucepan” แทน สมบูรณ์แบบ!
ตัวอย่างที่ 3: เพิ่มโอกาสให้คำหนึ่งปรากฏ
สมมติว่าเราต้องการเพิ่มโอกาสให้คำหนึ่งปรากฏ
ตัวอย่างเช่น เราอาจกำลังทำเว็บไซต์ที่นำเสนอสูตรอาหารที่ทำด้วยไมโครเวฟได้ ดังนั้นเราต้องการให้แน่ใจว่าคำว่า “microwave” จะปรากฏในสูตรอาหาร Microwave ถูก Tokenize เป็น ID 27000 เราสามารถเพิ่มโอกาสที่ Token นี้จะปรากฏได้โดยตั้งค่า logit_bias เป็นบวก ดังนี้:
logit_bias={27000:5}ตอนนี้ completion ของเรามีแนวโน้มมากขึ้นที่จะมีคำว่า ‘microwave’
เราได้ตั้งค่า logit_bias เป็น 5 เพราะพบว่าการตั้ง logit_bias เป็น 1 มักไม่ทำให้คำว่า “microwave” ปรากฏใน completion ขณะที่ค่า logit_bias ที่สูงกว่าอย่าง 10 กลับทำให้คำว่า “ microwave” ปรากฏใน completion บ่อยเกินไป
