OpenAI
หน้านี้แปลด้วยระบบอัตโนมัติ ดูต้นฉบับภาษาอังกฤษ.

การใช้ logit bias เพื่อเปลี่ยนความน่าจะเป็นของ Token ด้วย OpenAI API

เรียนรู้วิธีใช้พารามิเตอร์ logit bias เพื่อปรับแต่งเอาต์พุตของโมเดล

อัปเดตล่าสุด: 22 days ago

Logit_bias เป็นพารามิเตอร์เสริมที่ปรับความเป็นไปได้ที่ Token ที่ระบุจะปรากฏในผลลัพธ์ที่สร้างโดยโมเดล

พารามิเตอร์นี้รับออบเจ็กต์ JSON ที่แมป Token กับค่า bias ที่เกี่ยวข้องตั้งแต่ -100 (ซึ่งในกรณีส่วนใหญ่จะบล็อกไม่ให้สร้าง Token นั้น) ไปจนถึง 100 (การเลือก Token แบบเฉพาะเจาะจง ซึ่งทำให้มีแนวโน้มที่จะถูกสร้างมากขึ้น) ค่าระดับปานกลาง เช่น -1 และ 1 จะเปลี่ยนความน่าจะเป็นที่ Token จะถูกเลือกในระดับที่น้อยกว่า

เนื่องจากพารามิเตอร์รับ Token ไม่ใช่ข้อความ คุณจึงควรใช้เครื่องมือ tokenizerเพื่อแปลงข้อความเป็น ID ของ Token มาดูตัวอย่างกันสักสองสามตัวอย่าง

ตัวอย่างที่ 1: ลบ “time”

หากเราเรียก endpoint Completions ด้วยคำสั่ง “Once upon a,” completion มีแนวโน้มสูงมากที่จะเริ่มด้วย “ 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” จะสร้างข้อความเติมต่อว่า “midnight dreary, while I pondered, weak and weary.”

สังเกตว่าจะไม่พบคำว่า “time” เลย เพราะเราใช้ logit_bias สั่งห้าม Token นี้ไปแล้วในทางปฏิบัติ

ตัวอย่างที่ 2: ชี้นำด้วยค่า logit bias แบบเจาะจง

มาดูอีกตัวอย่างหนึ่งโดยใช้พรอมต์สำหรับสร้างสูตรอาหาร

สูตรอาหารจำนวนมากแนะนำให้ใช้หม้อ แต่สมมติว่าเราไม่มีหม้อ เราจึงต้องป้องกันไม่ให้คำว่า “pot” ถูกสร้างเป็นส่วนหนึ่งของข้อความเติมต่อ “Pot” แบ่งเป็น Token ที่มี ID 1787 เราจึงป้องกันไม่ให้คำนี้ถูกสร้างขึ้นได้ด้วยการตั้งค่า logit_bias ดังนี้

logit_bias={1787:-100}

ตอนนี้ completion ของเราอาจมีคำว่า “saucepan” แทน เยี่ยม!

ตัวอย่างที่ 3: เพิ่มโอกาสให้คำหนึ่งปรากฏขึ้น

สมมติว่าเราต้องการเพิ่มโอกาสให้คำหนึ่งปรากฏขึ้น

ตัวอย่างเช่น เราอาจดูแลเว็บไซต์ที่นำเสนอสูตรอาหารซึ่งทำได้ด้วยไมโครเวฟ จึงต้องการให้แน่ใจว่าคำว่า “microwave” จะปรากฏในสูตรอาหาร Microwave แบ่งเป็น Token ที่มี ID 27000 เราเพิ่มโอกาสให้ Token นี้ปรากฏได้ด้วยการตั้งค่า logit_bias เป็นค่าบวก ดังนี้:

logit_bias={27000:5}

ตอนนี้ ข้อความเติมต่อของเรามีแนวโน้มที่จะมีคำว่า “microwave” มากขึ้น

เราตั้งค่า logit_bias เป็น 5 เพราะพบว่าการตั้งค่า logit_bias เป็น 1 มักไม่ทำให้คำว่า “microwave” ปรากฏในข้อความเติมต่อ ขณะที่ค่า logit_bias ที่สูงกว่า เช่น 10 ทำให้คำว่า “ microwave” ปรากฏในข้อความเติมต่อบ่อยเกินไป

บทความนี้มีประโยชน์หรือไม่