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

แนวทางปฏิบัติที่ดีที่สุดสำหรับวิศวกรรมคำสั่งด้วย OpenAI API

วิธีให้คำแนะนำที่ชัดเจนและมีประสิทธิภาพแก่โมเดล OpenAI

อัปเดตล่าสุด: yesterday

วิศวกรรมคำสั่งทำงานอย่างไร

เนื่องจากวิธีที่โมเดลของ 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. แปลงไมล์เป็นกิโลเมตร

import

9. ใช้ฟีเจอร์ Generate Anything

นักพัฒนาสามารถใช้ฟีเจอร์ ‘Generate Anything’ เพื่ออธิบายงานหรือผลลัพธ์ภาษาธรรมชาติที่คาดหวัง และรับคำสั่งที่ปรับให้เหมาะสมได้


เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ฟีเจอร์ ‘Generate Anything’

พารามิเตอร์

โดยทั่วไป เราพบว่า `model` และ `temperature` เป็นพารามิเตอร์ที่ใช้กันบ่อยที่สุดในการปรับเปลี่ยนผลลัพธ์ของโมเดล

  1. `model` - โมเดลที่มีประสิทธิภาพสูงกว่ามักมีค่าใช้จ่ายสูงกว่าและอาจมีเวลาแฝงสูงกว่า

  2. `temperature` - การวัดว่าโมเดลส่งออก Token ที่มีความเป็นไปได้น้อยกว่าบ่อยเพียงใด ยิ่งค่า temperature สูง ผลลัพธ์ก็ยิ่งสุ่มมากขึ้น (และมักสร้างสรรค์มากขึ้น) อย่างไรก็ตาม สิ่งนี้ไม่เหมือนกับ “ความเป็นจริง” สำหรับกรณีการใช้งานเชิงข้อเท็จจริงส่วนใหญ่ เช่น การดึงข้อมูล และ Q&A ที่เป็นความจริง ค่า temperature เป็น 0 จะดีที่สุด

  3. `max_completion_tokens` (ความยาวสูงสุด) - ไม่ได้ควบคุมความยาวของผลลัพธ์ แต่เป็นขีดจำกัดตัดจบแบบตายตัวสำหรับการสร้าง Token โดยหลักแล้วคุณไม่ควรชนขีดจำกัดนี้บ่อยนัก เพราะโมเดลของคุณจะหยุดเมื่อมันคิดว่าทำเสร็จแล้ว หรือเมื่อถึงลำดับหยุดที่คุณกำหนดไว้

  4. `stop` (ลำดับหยุด) - ชุดของอักขระ (Token) ที่เมื่อถูกสร้างขึ้นแล้ว จะทำให้การสร้างข้อความหยุดลง

สำหรับคำอธิบายพารามิเตอร์อื่น ๆ โปรดดูเอกสารอ้างอิง API

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