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

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

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

อัปเดตล่าสุด: 14 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” จะสร้าง 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 บ่อยเกินไป

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