ชุดเครื่องมือ Prompt Engineering ของ Uber
(uber.com)- การออกแบบพรอมป์ต์อย่างประณีตเป็นสิ่งจำเป็นเพื่อให้ได้ผลลัพธ์จาก LLM ที่แม่นยำและเหมาะสม
- การออกแบบพรอมป์ต์ช่วยให้ผู้ใช้ที่ไม่คุ้นเคยกับแมชชีนเลิร์นนิงสามารถควบคุมผลลัพธ์ของโมเดลได้โดยมีโอเวอร์เฮดน้อยที่สุด
- Uber ได้พัฒนาชุดเครื่องมือแบบรวมศูนย์เพื่อให้ทดลองทำซ้ำกับ LLM ได้อย่างรวดเร็ว
- สร้างและจัดการเทมเพลตพรอมป์ต์
- ใช้งาน RAG และชุดข้อมูลในช่วงรันไทม์
- ความสามารถ:
- รองรับ system instruction, การทำ contextualization แบบไดนามิก, การสร้างแบบออฟไลน์จำนวนมาก (LLM inference), และการประเมินคำตอบ
- มีการจัดการเวอร์ชัน, การทำงานร่วมกัน, การตรวจสอบความปลอดภัย (ตรวจ hallucination, กรอบการประเมินมาตรฐาน, รวมถึงนโยบายความปลอดภัย)
วงจรชีวิตของ Prompt Engineering
วงจรชีวิตของ prompt engineering ประกอบด้วย 2 ขั้นตอน:
- ขั้นพัฒนา: ประกอบด้วย 3 ระยะ คือ การสำรวจ LLM, การทำซ้ำเทมเพลตพรอมป์ต์, และการประเมิน
- ระยะสำรวจ LLM: สำรวจ LLM ที่ใช้งานได้ผ่าน model catalog และ GenAI Playground และทดสอบการตอบสนองของ LLM ด้วยพรอมป์ต์
- ระยะทำซ้ำเทมเพลตพรอมป์ต์: ระบุความต้องการทางธุรกิจที่ชัดเจน, รวบรวมข้อมูลตัวอย่าง, สร้าง/วิเคราะห์/ทดสอบพรอมป์ต์, ประเมินคำตอบและปรับแก้ตามความจำเป็น โดยไม่จำเป็นต้องสร้างเทมเพลตพรอมป์ต์ตั้งแต่ต้นด้วย auto-prompting
- ระยะประเมิน: ทดสอบเทมเพลตพรอมป์ต์ด้วยชุดข้อมูลที่ใหญ่ขึ้นเพื่อวัดประสิทธิภาพ สามารถใช้ LLM เป็นผู้ตัดสิน หรือใช้ตัวประเมิน LLM แบบเขียนโค้ดเฉพาะทางเพื่อประเมินผลได้
- ขั้นนำขึ้นใช้งานจริง (Productionization): มีเพียงเทมเพลตพรอมป์ต์ที่ผ่านค่า threshold ในขั้นประเมินเท่านั้นที่จะถูกนำไปใช้งานจริง และจะมีการติดตาม/มอนิเตอร์การใช้งานในสภาพแวดล้อมโปรดักชัน พร้อมเก็บข้อมูลการใช้งานของระบบเพื่อนำไปปรับปรุงกระบวนการ
สถาปัตยกรรม
- UI/SDK ของเทมเพลตพรอมป์ต์: จัดการเทมเพลตพรอมป์ต์และ revision โดยเชื่อมต่อกับ GetAPI และ Execute API
- LLM model catalog: อินเทอร์เฟซกับโมเดล LLM ที่ถูกดีพลอยแล้ว
- โมเดลและพรอมป์ต์ถูกจัดเก็บใน ETCD และ UCS และถูกนำไปใช้ใน offline generation pipeline และ prompt template evaluation pipeline
การสร้างเทมเพลตพรอมป์ต์
- Prompt builder ใน prompt toolkit จะสร้างพรอมป์ต์ให้อัตโนมัติสำหรับผู้ใช้
- ช่วยค้นหาเทคนิค prompting ขั้นสูงที่เหมาะกับ use case ของ AI แต่ละแบบ
- Auto prompt builder ที่ใช้เฟรมเวิร์กภายใน Langfx ซึ่งสร้างบน LangChain จะทำตามขั้นตอนต่อไปนี้
- 1. รวมแนวปฏิบัติที่ดีที่สุดของ prompt engineering
- 2. ให้คำแนะนำอย่างละเอียดสำหรับรายการเทมเพลตและตัวอย่างบางส่วนเพื่อช่วยสร้างพรอมป์ต์
- 3. ใช้โมเดล LLM เพื่อสนับสนุนการสร้างพรอมป์ต์
- แนวทางพรอมป์ต์ขั้นสูง: prompt builder จะสร้างพรอมป์ต์โดยใช้หลักการต่อไปนี้
- CoT(Chain of Thought) prompting: ทำให้เกิดความสามารถในการให้เหตุผลที่ซับซ้อนผ่านขั้นตอนการอนุมานระหว่างทาง
- Auto-CoT: ใช้คำชี้นำว่า "think step by step" โดยใช้พรอมป์ต์ "Let's think step by step" กับ LLM เพื่อลดความพยายามแบบแมนนวล
- Prompt chaining: ใช้ได้กับสถานการณ์ที่มีหลายงานหรือหลายการแปลง
- ToT(Tree of Thought): ทำให้ chain-of-thought prompting เป็นภาพรวมที่กว้างขึ้น และส่งเสริมการสำรวจแนวคิดที่สามารถใช้เป็นขั้นตอนกลางสำหรับการแก้ปัญหาทั่วไปด้วย language model
- APE(Automatic Prompt Engineering): เฟรมเวิร์กสำหรับทำให้การสร้างและการเลือกคำสั่งเป็นอัตโนมัติ
- Multimodal CoT prompting: ผสานข้อความและภาพเข้าด้วยกันในเฟรมเวิร์ก 2 ขั้นตอน โดยขั้นแรกสร้างเหตุผลจากข้อมูลหลายโมดัล และขั้นที่สองใช้เหตุผลที่สร้างขึ้นเพื่ออนุมานคำตอบ
- การจัดการ revision
- การทำซ้ำเทมเพลตพรอมป์ต์ยึดตามแนวปฏิบัติที่ดีที่สุดของการทำซ้ำแบบอิงโค้ด
- ผู้ใช้สามารถแก้ไขคำสั่งและพารามิเตอร์ของโมเดลเพื่อทดสอบกับคำตอบตัวอย่างและชุดข้อมูลได้
- ทุกการทำซ้ำของเทมเพลตพรอมป์ต์ต้องผ่าน code review และเมื่อได้รับอนุมัติและ merge แล้ว จะมีการสร้าง revision ใหม่ของเทมเพลตพรอมป์ต์
การประเมินเทมเพลตพรอมป์ต์
มีหลายคอมโพเนนต์ที่ทำงานร่วมกันเพื่อประเมินประสิทธิภาพของเทมเพลตพรอมป์ต์:
- กลไกการประเมิน 2 แบบ
- ใช้ LLM เป็นผู้ประเมิน เหมาะกับงานที่คุณภาพเชิงอัตวิสัยหรือความละเอียดอ่อนทางภาษามีความสำคัญ
- ใช้โค้ดแบบกำหนดเองเพื่อประเมินประสิทธิภาพ เหมาะสำหรับวัดแง่มุมเฉพาะของประสิทธิภาพ
- Evaluation prompt template: เทมเพลตที่ใช้งานง่ายสำหรับผู้ใช้ ซึ่งให้คำสั่ง ตัวอย่างสั้น ๆ เมตริก รูปแบบการตอบสนอง และอื่น ๆ สำหรับการประเมิน
- Prompt template จริง: เทมเพลตที่ใช้ในโปรดักชัน โดยจะถูก hydration ในช่วงรันไทม์และใช้สำหรับการประเมินประสิทธิภาพ
- ตัวเลือกชุดข้อมูลนำเข้า: ชุดข้อมูล golden ที่มีการติดป้ายกำกับ หรือชุดข้อมูลที่ได้มาจากทราฟฟิกโปรดักชัน
- แต่ละเทมเพลตจะถูกประเมินโดยพิจารณาคำสั่งเฉพาะ, คอนเท็กซ์, โมเดลที่เกี่ยวข้อง และพารามิเตอร์
กรณีการใช้งานใน Uber
บริการ LLM แบบออฟไลน์
batch offline generation pipeline ของ LLM ช่วยให้ทำ batch inference เพื่อสร้างคำตอบจาก LLM ในปริมาณมากได้สะดวก:
- นำไปใช้กับกรณีใช้งานการตรวจสอบชื่อผู้ใช้ของฝั่งผู้บริโภคได้
- ใน MA Studio เพียงเลือกและป้อนชุดข้อมูลที่เกี่ยวข้อง
- เทมเพลตพรอมป์ต์จะถูก hydration แบบไดนามิกด้วยชุดข้อมูล
บริการ LLM แบบออนไลน์
เทมเพลตพรอมป์ต์มี dynamic placeholder ที่ต้องถูกแทนที่ด้วยค่าที่เฉพาะเจาะจงในช่วงรันไทม์:
- ปัจจุบันรองรับเฉพาะการแทนที่ชนิดสตริงโดยใช้ไวยากรณ์เทมเพลตแบบ Jinja
- รองรับความสามารถ fan-out ระหว่างพรอมป์ต์ เทมเพลต และโมเดล
- เทมเพลต: API template มีความสามารถในการฟอร์แมต payload ที่เปิดเผยจาก data model ทั่วไปให้เป็นโครงสร้าง API เฉพาะของผู้ให้บริการ
- พรอมป์ต์และโมเดล: พรอมป์ต์จะผูกกับโมเดลและเทมเพลตเฉพาะ บริการจะดึงพรอมป์ต์มาและเรียก genAI API ด้วยพารามิเตอร์ของโมเดลและเทมเพลตที่จำเป็นเพื่อรันการทำงาน
สำรวจความสามารถข้างต้นผ่านกรณีใช้งานการสรุป:
- ในสถานการณ์ที่ support ticket (contact) หนึ่งรายการอาจถูกจัดการโดยเจ้าหน้าที่หลายคน เจ้าหน้าที่ใหม่จำเป็นต้องไล่ดูทิกเก็ตเพื่อทำความเข้าใจบริบท หรือขอให้ลูกค้าอธิบายปัญหาอีกครั้ง
- ระบบแก้ปัญหานี้ด้วยการจัดทำสรุประหว่างการส่งต่องานระหว่างเจ้าหน้าที่
การมอนิเตอร์
การมอนิเตอร์ใช้วัดประสิทธิภาพของเทมเพลตพรอมป์ต์โปรดักชันที่ถูกใช้งานจริง:
- pipeline การมอนิเตอร์ประสิทธิภาพรายวันจะรันการประเมินประสิทธิภาพกับทราฟฟิกโปรดักชัน
- มอนิเตอร์เมตริกตามแต่ละ production iteration ของเทมเพลตพรอมป์ต์ เช่น latency, accuracy และ precision
- แดชบอร์ด MES จะรีเฟรชทุกวันด้วยเมตริกการมอนิเตอร์ประสิทธิภาพ
บทสรุป
ชุดเครื่องมือ prompt engineering ของ Uber เป็นเฟรมเวิร์กแบบครบวงจรเพื่อยกระดับการโต้ตอบและการใช้งาน LLM ในหลายขั้นตอนของการพัฒนาและการใช้งานจริง:
- รองรับตั้งแต่การสำรวจความสามารถของ LLM ครั้งแรกใน Gen AI Playground ไปจนถึงการทำซ้ำและการสร้างเทมเพลตพรอมป์ต์อย่างละเอียด
- สถาปัตยกรรมของชุดเครื่องมือมอบแนวทางเชิงระบบต่อการออกแบบพรอมป์ต์ โดยผสานเทคนิคแนวทางขั้นสูงและวิธีการประเมินที่แข็งแรง
- วงจรชีวิตแบบมีโครงสร้างตั้งแต่การพัฒนาเทมเพลตพรอมป์ต์ไปจนถึงการใช้งานจริงและการมอนิเตอร์ ช่วยให้มั่นใจว่าแต่ละเทมเพลตผ่านการทดสอบอย่างเข้มงวดและได้รับการปรับให้เหมาะสมด้านประสิทธิภาพ
- ในอนาคตมีแผนจะผสานกับ RAG สำหรับการประเมินแบบออนไลน์, RAG สำหรับการประเมิน, และ RAG สำหรับการสร้างแบบออฟไลน์
ยังไม่มีความคิดเห็น