วิศวกรรมคำสั่งทำงานอย่างไร
เนื่องจากวิธีที่โมเดลของ OpenAI ได้รับการฝึก จึงมีรูปแบบคำสั่งเฉพาะที่ได้ผลดีเป็นพิเศษและนำไปสู่ผลลัพธ์ของโมเดลที่มีประโยชน์มากขึ้น คู่มือวิศวกรรมคำสั่งอย่างเป็นทางการโดย OpenAI มักเป็นจุดเริ่มต้นที่ดีที่สุดสำหรับเคล็ดลับการเขียนคำสั่ง
ด้านล่างนี้เรานำเสนอรูปแบบคำสั่งหลายแบบที่เราพบว่าใช้ได้ดี แต่คุณสามารถสำรวจรูปแบบอื่น ๆ ได้ตามสะดวก ซึ่งอาจเหมาะกับงานของคุณมากกว่า
หลักทั่วไปและตัวอย่าง
หมายเหตุ: “{text input here}” เป็นตัวยึดตำแหน่งสำหรับข้อความ/บริบทจริง
1. ใช้โมเดลล่าสุด
เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด โดยทั่วไปเราแนะนำให้ใช้โมเดลล่าสุดที่มีความสามารถสูงสุด โมเดลรุ่นใหม่กว่ามักทำวิศวกรรมคำสั่งได้ง่ายกว่า
หมายเหตุ: มีความแตกต่างบางประการที่ควรพิจารณาเมื่อเขียนคำสั่งสำหรับโมเดลการให้เหตุผล เทียบกับการเขียนคำสั่งสำหรับโมเดล GPT รายละเอียดเพิ่มเติมดูที่นี่
2. วางคำแนะนำไว้ที่จุดเริ่มต้นของคำสั่ง และใช้ ### หรือ """ เพื่อแยกคำแนะนำกับบริบท
ได้ผลน้อยกว่า ❌:
สรุปข้อความด้านล่างเป็นรายการหัวข้อย่อยของประเด็นที่สำคัญที่สุด
{text input here}ดีกว่า ✅:
สรุปข้อความด้านล่างเป็นรายการหัวข้อย่อยของประเด็นที่สำคัญที่สุด
ข้อความ: """
{text input here}
"""3. ระบุบริบท ผลลัพธ์ ความยาว รูปแบบ สไตล์ ฯลฯ ที่ต้องการให้เฉพาะเจาะจง ชัดเจน และละเอียดที่สุดเท่าที่จะเป็นไปได้
ระบุบริบท ผลลัพธ์ ความยาว รูปแบบ สไตล์ ฯลฯ ให้เฉพาะเจาะจง
ได้ผลน้อยกว่า ❌:
เขียนบทกวีเกี่ยวกับ OpenAI ดีกว่า ✅:
เขียนบทกวีสั้น ๆ ที่สร้างแรงบันดาลใจเกี่ยวกับ OpenAI โดยเน้นที่การเปิดตัวผลิตภัณฑ์ DALL-E ล่าสุด (DALL-E คือโมเดล ML แปลงข้อความเป็นภาพ) ในสไตล์ของ {famous poet}4. อธิบายรูปแบบผลลัพธ์ที่ต้องการผ่านตัวอย่าง
ได้ผลน้อยกว่า ❌:
ดึงเอนทิตีที่กล่าวถึงในข้อความด้านล่าง ดึงเอนทิตี 4 ประเภทต่อไปนี้: ชื่อบริษัท ชื่อบุคคล หัวข้อเฉพาะ และธีม
ข้อความ: {text}แสดงและบอก - โมเดลจะตอบสนองได้ดีกว่าเมื่อมีการแสดงข้อกำหนดรูปแบบที่เฉพาะเจาะจงให้เห็น นอกจากนี้ยังทำให้การแยกวิเคราะห์หลายผลลัพธ์ด้วยโปรแกรมอย่างเชื่อถือได้ง่ายขึ้น
ดีกว่า ✅:
ดึงเอนทิตีสำคัญที่กล่าวถึงในข้อความด้านล่าง ขั้นแรกให้ดึงชื่อบริษัททั้งหมด จากนั้นดึงชื่อบุคคล แล้วดึงหัวข้อเฉพาะที่สอดคล้องกับเนื้อหา และสุดท้ายดึงธีมภาพรวมทั่วไป
รูปแบบที่ต้องการ:
ชื่อบริษัท: <comma_separated_list_of_company_names>
ชื่อบุคคล: -||-
หัวข้อเฉพาะ: -||-
ธีมทั่วไป: -||-
ข้อความ: {text}5. เริ่มด้วย zero-shot จากนั้น few-shot หากทั้งสองวิธีไม่ได้ผล จึงค่อย fine-tune
✅ Zero-shot
ดึงคีย์เวิร์ดจากข้อความด้านล่าง
ข้อความ: {text}
คีย์เวิร์ด:✅ Few-shot - ระบุตัวอย่างสักสองสามตัวอย่าง
ดึงคีย์เวิร์ดจากข้อความที่เกี่ยวข้องด้านล่าง
ข้อความ 1: Stripe มี API ที่นักพัฒนาเว็บสามารถใช้เพื่อผสานการประมวลผลการชำระเงินเข้ากับเว็บไซต์และแอปพลิเคชันมือถือของตน
คีย์เวิร์ด 1: Stripe, การประมวลผลการชำระเงิน, APIs, นักพัฒนาเว็บ, เว็บไซต์, แอปพลิเคชันมือถือ
##
ข้อความ 2: OpenAI ได้ฝึกโมเดลภาษาล้ำสมัยที่เก่งมากในการทำความเข้าใจและสร้างข้อความ API ของเราเปิดให้เข้าถึงโมเดลเหล่านี้ และสามารถใช้เพื่อแก้ปัญหาแทบทุกงานที่เกี่ยวข้องกับการประมวลผลภาษา
คีย์เวิร์ด 2: OpenAI, โมเดลภาษา, การประมวลผลข้อความ, API.
##
ข้อความ 3: {text}
คีย์เวิร์ด 3:✅Fine-tune: ดูแนวทางปฏิบัติที่ดีที่สุดสำหรับ fine-tune ที่นี่
6. ลดคำบรรยายที่ “ฟุ่มเฟือย” และไม่แม่นยำ
ได้ผลน้อยกว่า ❌:
คำอธิบายสำหรับผลิตภัณฑ์นี้ควรสั้นพอสมควร มีเพียงไม่กี่ประโยค และไม่ยาวไปกว่านั้นมากนักดีกว่า ✅:
ใช้ย่อหน้าความยาว 3 ถึง 5 ประโยคเพื่ออธิบายผลิตภัณฑ์นี้7. แทนที่จะบอกเพียงว่าไม่ควรทำอะไร ให้บอกว่าควรทำอะไรแทน
ได้ผลน้อยกว่า ❌:
ต่อไปนี้เป็นบทสนทนาระหว่างเอเจนต์กับลูกค้า ห้ามถามชื่อผู้ใช้หรือรหัสผ่าน ห้ามพูดซ้ำ
ลูกค้า: ฉันเข้าสู่ระบบบัญชีของฉันไม่ได้
เอเจนต์:ดีกว่า ✅:
ต่อไปนี้เป็นบทสนทนาระหว่างเอเจนต์กับลูกค้า เอเจนต์จะพยายามวินิจฉัยปัญหาและแนะนำวิธีแก้ไข โดยหลีกเลี่ยงการถามคำถามใด ๆ ที่เกี่ยวข้องกับ PII แทนที่จะขอ PII เช่น ชื่อผู้ใช้หรือรหัสผ่าน ให้แนะนำผู้ใช้ไปที่บทความช่วยเหลือ www.samplewebsite.com/help/faq
ลูกค้า: ฉันเข้าสู่ระบบบัญชีของฉันไม่ได้
เอเจนต์:8. เฉพาะสำหรับการสร้างโค้ด - ใช้ “คำขึ้นต้น” เพื่อชี้นำโมเดลไปสู่รูปแบบเฉพาะ
ได้ผลน้อยกว่า ❌:
# เขียนฟังก์ชัน python แบบง่ายที่
# 1. ถามฉันหาตัวเลขเป็นไมล์
# 2. แปลงไมล์เป็นกิโลเมตรในตัวอย่างโค้ดด้านล่างนี้ การเพิ่ม “import” จะบอกใบ้ให้โมเดลรู้ว่าควรเริ่มเขียนด้วย Python (ในทำนองเดียวกัน “SELECT” เป็นคำบอกใบ้ที่ดีสำหรับจุดเริ่มต้นของคำสั่ง SQL)
ดีกว่า ✅:
# เขียนฟังก์ชัน python แบบง่ายที่
# 1. ถามฉันหาตัวเลขเป็นไมล์
# 2. แปลงไมล์เป็นกิโลเมตร
import9. ใช้ฟีเจอร์ Generate Anything
นักพัฒนาสามารถใช้ฟีเจอร์ ‘Generate Anything’ เพื่ออธิบายงานหรือผลลัพธ์ภาษาธรรมชาติที่คาดหวัง และรับคำสั่งที่ปรับให้เหมาะสมได้
เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ฟีเจอร์ ‘Generate Anything’
พารามิเตอร์
โดยทั่วไป เราพบว่า `model` และ `temperature` เป็นพารามิเตอร์ที่ใช้กันบ่อยที่สุดในการปรับเปลี่ยนผลลัพธ์ของโมเดล
`model` - โมเดลที่มีประสิทธิภาพสูงกว่ามักมีค่าใช้จ่ายสูงกว่าและอาจมีเวลาแฝงสูงกว่า
`temperature` - การวัดว่าโมเดลส่งออก Token ที่มีความเป็นไปได้น้อยกว่าบ่อยเพียงใด ยิ่งค่า
temperatureสูง ผลลัพธ์ก็ยิ่งสุ่มมากขึ้น (และมักสร้างสรรค์มากขึ้น) อย่างไรก็ตาม สิ่งนี้ไม่เหมือนกับ “ความเป็นจริง” สำหรับกรณีการใช้งานเชิงข้อเท็จจริงส่วนใหญ่ เช่น การดึงข้อมูล และ Q&A ที่เป็นความจริง ค่าtemperatureเป็น 0 จะดีที่สุด`max_completion_tokens` (ความยาวสูงสุด) - ไม่ได้ควบคุมความยาวของผลลัพธ์ แต่เป็นขีดจำกัดตัดจบแบบตายตัวสำหรับการสร้าง Token โดยหลักแล้วคุณไม่ควรชนขีดจำกัดนี้บ่อยนัก เพราะโมเดลของคุณจะหยุดเมื่อมันคิดว่าทำเสร็จแล้ว หรือเมื่อถึงลำดับหยุดที่คุณกำหนดไว้
`stop` (ลำดับหยุด) - ชุดของอักขระ (Token) ที่เมื่อถูกสร้างขึ้นแล้ว จะทำให้การสร้างข้อความหยุดลง
สำหรับคำอธิบายพารามิเตอร์อื่น ๆ โปรดดูเอกสารอ้างอิง API
