เรียนรู้จากสาเหตุและกรณีศึกษาความล้มเหลวของ PoC: ออกแบบการนำ AI มาใช้ด้วย Specification-Driven Development (SDD) และ Acceptance Test-Driven Development (ATDD)

บทนำ
ในการทำ PoC ของ AI หลายครั้งที่เดโมทำงานได้อย่างยอดเยี่ยม แต่เมื่อถึงขั้นตอนการตัดสินใจเพื่อนำไปใช้งานจริง กลับไม่มีใครกล้ายืนยันว่า "ใช้งานได้จริง" สาเหตุของจุดจบเช่นนี้มาจากการที่ไม่ได้จัดการกับคุณสมบัติเฉพาะของ AI ตั้งแต่ขั้นตอนการวางแผน ผลลัพธ์ของ AI ไม่จำเป็นต้องเหมือนเดิมทุกครั้งแม้จะได้รับอินพุตเดิม และประสิทธิภาพจะถูกกำหนดโดยข้อมูลที่ป้อนให้ ดังนั้นการที่ "มีความแม่นยำสูง" เพียงอย่างเดียวจึงไม่สามารถตัดสินได้ว่าจะนำไปใช้งานจริงได้หรือไม่
บทความนี้จัดทำขึ้นสำหรับผู้รับผิดชอบการวางแผน PoC ของการนำ AI มาใช้งานและผู้จัดการโครงการ โดยจะสรุปรูปแบบของกรณีความล้มเหลวที่พบบ่อย พร้อมทั้งอธิบายวิธีการกำหนดขอบเขตการตรวจสอบไว้ล่วงหน้าด้วย Specification-Driven Development (SDD) และการเปลี่ยนเกณฑ์การตัดสินให้เป็นแบบทดสอบก่อนเริ่มงานด้วย Acceptance Test-Driven Development (ATDD) ในตอนท้ายจะมีรายการตรวจสอบ (Checklist) และตารางการตัดสินใจที่ควรตรวจสอบก่อนเริ่มดำเนินการให้ด้วย
การทำ PoC สำหรับการพัฒนาระบบแบบดั้งเดิมมักจบลงเพียงแค่การยืนยันว่า "สามารถสร้างได้หรือไม่" และการที่หน้าจอทำงานได้ก็ถือว่าการตรวจสอบส่วนใหญ่เสร็จสิ้นแล้ว แต่สิ่งที่ต้องยืนยันในการทำ PoC สำหรับ AI คือ "จะเกิดข้อผิดพลาดในรูปแบบใดและในสัดส่วนเท่าใด" หากดำเนินการโดยไม่สะท้อนความแตกต่างนี้ลงในแผนงาน การตัดสินใจจะขึ้นอยู่กับเพียงความประทับใจจากการสาธิต (Demo) เท่านั้น
| มุมมอง | ระบบแบบดั้งเดิม | ระบบที่ใช้ AI |
|---|---|---|
| ผลลัพธ์ | อินพุตเดียวกันให้ผลลัพธ์เหมือนเดิม | อินพุตเดียวกันอาจให้ผลลัพธ์ที่ต่างกัน |
| คำตอบที่ถูกต้อง | กำหนดไว้อย่างชัดเจนจากสเปก | มักยอมรับคำตอบได้หลายรูปแบบ |
| สิ่งที่กำหนดประสิทธิภาพ | การเขียนโปรแกรม (Implementation) | ข้อมูลและโมเดล นอกเหนือจากการเขียนโปรแกรม |
| การตัดสินผ่าน/ไม่ผ่าน | ทำงานได้หรือไม่ | สัดส่วนที่ผ่านและความรุนแรงของข้อผิดพลาด |
| ค่าใช้จ่ายต่อรายการ | ค่อนข้างคงที่ | เปลี่ยนแปลงตามปริมาณอินพุต/เอาต์พุตและโมเดล |
ใน 3 ส่วนถัดไป เราจะมาดูกันว่าความแตกต่างนี้จะนำไปสู่การมองข้ามประเด็นใดบ้างในขั้นตอนการวางแผน
ผลลัพธ์ไม่เหมือนเดิมทุกครั้ง: ไม่สามารถตัดสินได้จากการสาธิตเพียงครั้งเดียว
Generative AI อาจให้คำตอบที่เปลี่ยนไปทั้งในแง่ของถ้อยคำและเนื้อหา แม้จะเป็นคำถามเดิมก็ตาม ดังนั้น การที่ระบบทำงานได้ดีในการสาธิต (Demo) เพียงไม่กี่ครั้ง ไม่ได้หมายความว่าจะทำงานได้ดีในสัดส่วนที่เท่ากันเมื่อใช้งานจริง คำถามที่เลือกมาใช้ในการสาธิตมักเป็นคำถามที่ตอบได้ง่าย
หากไม่จัดการกับคุณสมบัตินี้ตั้งแต่ขั้นตอนการวางแผน ผลสรุปของ PoC จะขึ้นอยู่กับ "ความรู้สึกของผู้ที่ได้ชมการสาธิต" เท่านั้น ซึ่งจะนำไปสู่สถานการณ์ที่ตัดสินใจนำระบบไปใช้งานจริงเพราะประทับใจกับการสาธิต แต่กลับมาพบว่ามีข้อผิดพลาดจำนวนมากเมื่อต้องเผชิญกับคำถามที่ตอบยากในการใช้งานจริง
วิธีรับมือคือการระบุในแผนงานว่าจะทำการประเมินโดยใช้จำนวนและสัดส่วนที่ชัดเจน เช่น จะเตรียมคำถามประเภทใดไว้กี่ข้อ จะทดสอบคำถามเดิมซ้ำกี่ครั้ง และต้องผ่านเกณฑ์กี่เปอร์เซ็นต์จึงจะดำเนินการในขั้นตอนถัดไป หากกำหนดสิ่งเหล่านี้ไว้ก่อนเริ่มงาน การสาธิตจะไม่ใช่การประเมินผล แต่จะเป็นเวทีสำหรับอธิบายผลลัพธ์การประเมินแทน สำหรับวิธีการสร้างที่ชัดเจนจะกล่าวถึงในบท "การพัฒนาโดยเน้นการทดสอบการยอมรับ" (Acceptance Test-Driven Development: ATDD) ต่อไป
ประสิทธิภาพขึ้นอยู่กับข้อมูล: ข้อมูลที่ใช้ตรวจสอบเป็นตัวแทนของสถานการณ์จริงหรือไม่
ประสิทธิภาพของ AI ไม่ได้ขึ้นอยู่กับการเลือกโมเดลเพียงอย่างเดียว แต่ขึ้นอยู่กับว่าคุณใช้ข้อมูลชุดใดในการทดสอบ สิ่งที่มักเกิดขึ้นบ่อยในการทำ PoC คือการที่โมเดลทำผลงานได้ดีเยี่ยมกับข้อมูลที่สะอาดซึ่งมีอยู่ในมือ แต่กลับมีประสิทธิภาพลดลงเมื่อเจอกับข้อมูลที่กระจัดกระจายในหน้างานจริง
หากเป็นการตอบคำถามลูกค้า ข้อมูลการสอบถามในอดีตที่รวบรวมมาเพื่อทำ PoC มักจะเอนเอียงไปทาง "คำถามที่พบบ่อย" ซึ่งเจ้าหน้าที่เป็นผู้คัดเลือกมา แต่ในหน้างานจริงจะมีทั้งคำถามที่พิมพ์ผิดเยอะ คำถามที่มีหลายประเด็นปนกัน หรือคำถามที่สอบถามข้อมูลที่เป็นความลับของบริษัทเข้ามาด้วย หากเป็นระบบที่ใช้การค้นหาเพื่อตอบคำถาม (RAG) ความเก่าหรือความซ้ำซ้อนของเอกสารภายในที่ใช้อ้างอิงก็จะส่งผลต่อคุณภาพของคำตอบเช่นกัน
ในขั้นตอนการวางแผน ให้ระบุรายละเอียดเกี่ยวกับข้อมูลที่ใช้ตรวจสอบ (Validation Data) 3 ประการ ดังนี้: จะนำข้อมูลมาจากไหนจำนวนเท่าใด, มีความเป็นไปได้ที่จะแตกต่างจากคำถามในหน้างานจริงอย่างไร และจะรวมกรณีที่ตอบได้ยากไว้มากน้อยเพียงใด หากไม่ตั้งใจใส่กรณีที่ตอบได้ยากเข้าไป ผลการทดสอบ PoC ก็จะออกมาสูงกว่าความเป็นจริงในหน้างาน นอกจากนี้ ควรคำนวณงบประมาณสำหรับขั้นตอนการดึงข้อมูลและการทำเซ็นเซอร์ข้อมูลส่วนบุคคล (Anonymization) ไว้ตั้งแต่ในขั้นตอนนี้ด้วย
"ความแม่นยำ" เพียงอย่างเดียวไม่เพียงพอต่อการใช้งานจริง: ความรุนแรงของข้อผิดพลาด ต้นทุน และเวลาในการตอบสนอง
แม้ผลลัพธ์จะออกมาว่า "มีอัตราความถูกต้อง 90%" แต่ก็ไม่ได้เป็นตัวตัดสินว่าจะสามารถนำไปใช้งานจริงได้หรือไม่ เพราะผลกระทบต่อการดำเนินงานนั้นแตกต่างกันอย่างสิ้นเชิง ขึ้นอยู่กับว่าอีก 10% ที่เหลือนั้นเป็นข้อผิดพลาดประเภทใด เราไม่ควรนับคำตอบที่ใช้สำนวนไม่เป็นธรรมชาติ กับคำตอบที่ให้ข้อมูลกฎการคืนเงินที่ไม่มีอยู่จริงว่าเป็นข้อผิดพลาดประเภทเดียวกัน
ด้วยเหตุนี้ ในขั้นตอนการวางแผน เราจึงต้องแบ่งระดับความรุนแรงของข้อผิดพลาดไว้ล่วงหน้า เช่น แบ่งเป็น 3 ระดับ ได้แก่ "ข้อผิดพลาดที่คนสามารถแก้ไขให้ใช้งานได้" "ข้อผิดพลาดที่หากส่งถึงลูกค้าจะกลายเป็นปัญหา" และ "ข้อผิดพลาดที่หากเกิดขึ้นแม้เพียงครั้งเดียวต้องพิจารณาระงับการใช้งาน" สำหรับระดับสุดท้ายนี้ เราจะกำหนดเกณฑ์โดยใช้จำนวนครั้งแทนที่จะเป็นเปอร์เซ็นต์
นอกจากความแม่นยำแล้ว ยังมีเงื่อนไขอื่น ๆ ที่ส่งผลต่อการตัดสินใจว่าจะนำไปใช้งานจริงได้หรือไม่ เช่น ค่าใช้จ่ายต่อรายการคุ้มกับราคาต้นทุนของงานหรือไม่, เวลาในการตอบกลับอยู่ในเกณฑ์ที่รองรับขั้นตอนการทำงานได้หรือไม่ และควรแทรกขั้นตอนการตรวจสอบโดยมนุษย์ไว้ที่จุดใด หากไม่ระบุสิ่งเหล่านี้ลงในแผนงานเพื่อวัดผลในขั้นตอน PoC ก็อาจนำไปสู่สถานการณ์ที่แม้ความแม่นยำจะผ่านเกณฑ์ แต่ก็ไม่สามารถนำไปใช้งานจริงได้
รูปแบบความล้มเหลวของ PoC: จบแค่การสาธิต, PoC ที่ไม่มีวันสิ้นสุด, และล้มเหลวเมื่อใช้งานจริง
หากไม่จัดการคุณสมบัติทั้ง 3 ประการข้างต้นในขั้นตอนการวางแผน ความล้มเหลวของ PoC มักจะปรากฏออกมาใน 3 รูปแบบต่อไปนี้ ทั้งหมดนี้ไม่ใช่กรณีศึกษาของบริษัทใดบริษัทหนึ่ง แต่เป็นตัวอย่างสมมติที่แสดงถึงรูปแบบการดำเนินงานทั่วไป
| รูปแบบความล้มเหลว | สิ่งที่เกิดขึ้น | สิ่งที่ขาดหายไปในขั้นตอนการวางแผน |
|---|---|---|
| หยุดอยู่แค่เดโม | เดโมได้รับคำชม แต่เมื่อลองทดสอบด้วยคำถามที่ตอบยากกลับพบข้อผิดพลาดจำนวนมาก ทำให้ไม่สามารถตัดสินใจนำไปใช้งานจริงได้ | ข้อมูลประเมินผลที่รวมกรณีที่ตอบยากและเกณฑ์การผ่าน |
| PoC ที่ไม่มีวันจบสิ้น | ระยะเวลาถูกยืดออกไปทุกครั้งที่มีการเพิ่มความต้องการ และไม่สามารถก้าวไปสู่การพัฒนาจริงได้แม้จะทำซ้ำกี่ครั้งก็ตาม | ขอบเขตที่อยู่นอกเหนือข้อกำหนด (Specifications) รวมถึงผู้มีอำนาจตัดสินใจและกำหนดการตัดสินใจ |
| ล้มเหลวเมื่อใช้งานจริง | ผลลัพธ์ของ PoC ออกมาดี แต่เมื่อใช้กับข้อมูลจริงที่หลากหลาย ความแม่นยำกลับลดลง และค่าใช้จ่ายต่อรายการก็สูงเกินกว่าที่คาดไว้ | การระบุความแตกต่างระหว่างข้อมูลที่ใช้ตรวจสอบกับข้อมูลจริง รวมถึงเกณฑ์ด้านค่าใช้จ่ายและเวลาในการตอบสนอง |
ความสูญเสียจากความล้มเหลวเหล่านี้ไม่ได้จำกัดอยู่แค่ค่าใช้จ่ายของ PoC เท่านั้น แต่ยังทำให้หน้างานที่ให้ความร่วมมือในการเตรียมข้อมูลประเมินผลและการตรวจสอบรู้สึกว่า "เป็น PoC อีกแล้วหรือ" จนทำให้ยากที่จะได้รับความร่วมมือในโครงการ AI ครั้งต่อไป สิ่งที่ต้องตระหนักไว้คือ PoC ที่จบลงโดยไม่ได้ข้อสรุปนั้น ทิ้งสิ่งที่หลงเหลือไว้น้อยกว่า PoC ที่ล้มเหลวเสียอีก แม้จะเป็นการตัดสินใจยกเลิก แต่หากมีการบันทึกไว้ว่าสิ่งใดที่ตรวจสอบได้และสิ่งใดที่ตรวจสอบไม่ได้ ข้อมูลนั้นก็จะเป็นประโยชน์สำหรับโครงการถัดไป
ทั้ง 3 กรณีมีสาเหตุมาจากช่องว่างในขั้นตอนการวางแผน ไม่ใช่ที่การนำไปใช้งานจริง วิธีการ "Specification-Driven Development (SDD)" และ "Acceptance Test-Driven Development (ATDD)" ในบทถัดไป คือแนวทางในการเติมเต็มช่องว่างเหล่านี้ก่อนเริ่มดำเนินการ
Specification-Driven Development (SDD): การเขียนข้อกำหนดก่อนเพื่อกำหนดขอบเขตของ PoC
Specification-Driven Development (SDD) คือแนวทางการพัฒนาที่เน้นการเขียนเอกสารข้อกำหนด (Specification) ก่อนเริ่มการลงมือเขียนโค้ด โดยให้เอกสารดังกล่าวเป็นจุดเริ่มต้นและเป็นแหล่งอ้างอิงหลัก (Source of Truth) ของการพัฒนา แนวทางนี้กำลังได้รับความสนใจอีกครั้งพร้อมกับการแพร่หลายของ AI ช่วยเขียนโค้ด โดยมีเครื่องมือที่ช่วยสร้างเอกสารข้อกำหนด การออกแบบ และการแบ่งงานก่อนเริ่มลงมือจริงออกมามากมาย เช่น "Spec Kit" ที่เผยแพร่โดย GitHub หรือสภาพแวดล้อมการพัฒนา "Kiro" ของ AWS
เหตุผลที่ SDD มีประสิทธิภาพในการทำ PoC คือ ความล้มเหลวของ PoC ส่วนใหญ่มักเกิดจากความไม่ชัดเจนว่า "ต้องการตรวจสอบอะไร" หากมีการระบุคำถามที่ต้องการพิสูจน์ ข้อมูลนำเข้า ผลลัพธ์ที่คาดหวัง ข้อจำกัด และสิ่งที่อยู่นอกเหนือขอบเขตไว้ในเอกสารข้อกำหนดแล้ว เราจะสามารถใช้เอกสารนั้นตัดสินได้ทันทีว่าคำขอที่เข้ามาในระหว่างทางนั้นอยู่ในขอบเขตของข้อกำหนดหรือไม่
อีกเหตุผลหนึ่งคือ การที่ AI เข้ามามีบทบาทในการเขียนโค้ดสำหรับ PoC มากขึ้น การให้ AI เขียนโค้ดอาจทำให้ได้สิ่งที่ทำงานได้จริงอย่างรวดเร็ว แต่หากไม่มีข้อกำหนดที่ชัดเจน ก็จะไม่มีใครสามารถอธิบายได้ว่าสิ่งที่ทำออกมานั้นตอบโจทย์อะไรบ้าง การมีเอกสารข้อกำหนดไว้ตั้งแต่ต้นจะช่วยให้สามารถใช้เอกสารฉบับเดียวกันนี้เป็นมาตรฐาน ทั้งในการให้คำสั่งแก่ AI และในการตรวจสอบผลลัพธ์ที่ได้
หัวข้อที่ต้องระบุในเอกสารข้อกำหนด PoC: ตั้งแต่คำถามในการตรวจสอบไปจนถึงขอบเขตที่ไม่รวมอยู่
เอกสารข้อกำหนดสำหรับ PoC ไม่จำเป็นต้องละเอียดเท่ากับเอกสารข้อกำหนดสำหรับการพัฒนาจริง อย่างไรก็ตาม ต้องระบุข้อมูลในหัวข้อต่อไปนี้ให้ครบถ้วนก่อนเริ่มดำเนินการ
| หัวข้อ | เนื้อหาที่ต้องเขียน | ตัวอย่างคำตอบเบื้องต้นสำหรับข้อสอบถาม |
|---|---|---|
| คำถามที่ต้องการตรวจสอบ | คำถามที่ต้องการหาคำตอบด้วย PoC (เขียนเป็น 1 ประโยค) | หาก AI ช่วยร่างคำตอบเบื้องต้น จะช่วยลดเวลาในการทำงานของเจ้าหน้าที่ลงครึ่งหนึ่งได้หรือไม่ |
| ข้อมูลนำเข้า (Input) | สิ่งที่จะส่งให้ AI และแหล่งที่มา | ข้อความสอบถามจากลูกค้า, คลังคำถามที่พบบ่อยของบริษัท |
| ผลลัพธ์ที่คาดหวัง (Output) | รูปแบบและเงื่อนไขที่ต้องเป็นไปตามนั้น | ร่างคำตอบที่เจ้าหน้าที่สามารถนำไปแก้ไขและส่งต่อได้ โดยต้องระบุชื่อเอกสารที่ใช้เป็นหลักฐานอ้างอิง |
| ข้อจำกัด | เงื่อนไขที่ต้องปฏิบัติตาม | ห้ามส่งข้อมูลส่วนบุคคลออกภายนอก, ห้ามระบุราคาที่ชัดเจนในคำตอบ |
| ขอบเขตที่ไม่รวมอยู่ | สิ่งที่จะไม่ตรวจสอบในครั้งนี้ | การสอบถามเกี่ยวกับการเรียกเก็บเงินหรือการยกเลิกบริการ, การส่งข้อความอัตโนมัติถึงลูกค้า |
| เกณฑ์การยอมรับ (Acceptance Criteria) | เงื่อนไขการผ่านหรือไม่ผ่าน (จะกล่าวถึงโดยละเอียดในบทถัดไป) | อัตราความสำเร็จของข้อมูลประเมินผล, จำนวนข้อผิดพลาดร้ายแรง, ค่าใช้จ่าย, เวลาในการตอบกลับ |
เอกสารข้อกำหนดควรได้รับการอ่านทบทวนร่วมกับผู้ที่เกี่ยวข้อง และหากมีการแก้ไขให้บันทึกวันที่แก้ไขและเหตุผลไว้ด้วย การเปลี่ยนข้อกำหนดระหว่างทำ PoC ไม่ใช่เรื่องผิด แต่หากไม่มีการบันทึกการเปลี่ยนแปลงไว้ เมื่อจบโครงการจะทำให้ไม่ทราบว่าได้ตรวจสอบอะไรไปบ้าง แนวทางการดำเนินงานพื้นฐานของ PoC ได้สรุปไว้ใน PoC คืออะไร? ตั้งแต่พื้นฐานของแนวคิดการพิสูจน์ความเป็นไปได้ ไปจนถึงค่าใช้จ่าย วิธีการดำเนินงาน และการเลือกผู้รับจ้างที่ไม่ให้ล้มเหลว
Acceptance Test-Driven Development (ATDD): การกำหนดเกณฑ์การผ่าน-ไม่ผ่านเป็นแบบทดสอบก่อนเริ่มงาน
การพัฒนาโดยใช้การทดสอบยอมรับเป็นตัวนำ (Acceptance Test-Driven Development: ATDD) คือวิธีการทำงานที่ฝ่ายธุรกิจ ฝ่ายพัฒนา และฝ่ายทดสอบ ร่วมกันกำหนดเกณฑ์การยอมรับ (Acceptance Criteria) และเขียนออกมาเป็นชุดการทดสอบที่สามารถรันได้จริงก่อนที่จะเริ่มลงมือพัฒนา โดยเกณฑ์ดังกล่าวมักเขียนในรูปแบบ "เงื่อนไขเริ่มต้น-การกระทำ-ผลลัพธ์ที่คาดหวัง" (Given/When/Then) และการพัฒนาจะดำเนินไปโดยมีเป้าหมายเพื่อให้ผ่านการทดสอบเหล่านั้น
ในการทำ PoC ของ AI การทดสอบยอมรับนี้จะอยู่ในรูปแบบของชุดข้อมูลประเมินผล (Evaluation Dataset) และเงื่อนไขการผ่าน (Pass Criteria) โดยการรวบรวมกรณีตัวอย่างว่า "หากมีคำถามแบบนี้เข้ามา ควรตอบกลับอย่างไร" และกำหนดว่าต้องผ่านเงื่อนไขใดบ้างจึงจะถือว่าผ่านเกณฑ์ วิธีนี้จะช่วยให้เมื่อจบช่วง PoC เราสามารถตัดสินผลลัพธ์ได้จาก "จำนวนที่ผ่านจากทั้งหมดกี่รายการ" แทนที่จะใช้ความรู้สึกว่า "ดูเหมือนจะไปได้สวย"
สิ่งสำคัญคือการทดสอบยอมรับไม่ได้ถูกสร้างขึ้นโดยฝ่ายพัฒนาเพียงฝ่ายเดียว ผู้ที่ทราบว่าคำตอบที่ถูกต้องคืออะไรคือฝ่ายธุรกิจ ดังนั้นฝ่ายธุรกิจจึงเป็นผู้กำหนดเงื่อนไขการผ่าน และฝ่ายพัฒนาเป็นผู้ทำให้เงื่อนไขนั้นสามารถวัดผลได้โดยอัตโนมัติ โดยควรระบุการแบ่งหน้าที่นี้ไว้ในเอกสารโครงการด้วย
การเปลี่ยนเกณฑ์การยอมรับให้เป็นชุดข้อมูลประเมินผล
การสร้างชุดข้อมูลสำหรับการประเมินโดยแบ่งตามประเภทของกรณีจะช่วยลดการตกหล่นได้ หากยกตัวอย่างการตอบคำถามเบื้องต้น จะเป็นดังนี้
| ประเภทของกรณี | ตัวอย่างการป้อนข้อมูล | พฤติกรรมที่คาดหวัง | เงื่อนไขการผ่าน |
|---|---|---|---|
| คำถามที่พบบ่อย | 「」 | แนะนำขั้นตอนการตรวจสอบ | ขั้นตอนตรงกับชุดคำถาม |
| คำถามที่ตอบยาก | ประโยคที่มีคำผิดเยอะและมีเนื้อหาปนกัน 2 เรื่อง | ตอบทั้ง 2 เรื่องแยกกัน | ตอบครบทั้งสองเรื่อง |
| คำถามที่ไม่ควรตอบ | สอบถามเนื้อหาคำสั่งซื้อของลูกค้าท่านอื่น | ปฏิเสธการตอบและโอนสายให้เจ้าหน้าที่ | ไม่เปิดเผยข้อมูล |
| คำถามที่ไม่มีหลักฐานอ้างอิง | คำถามเกี่ยวกับค่าธรรมเนียมที่ไม่อยู่ในชุดคำถาม | ไม่ตอบโดยการคาดเดาและส่งต่อให้เจ้าหน้าที่ | ไม่ระบุจำนวนเงินที่แน่ชัด |
| การป้อนข้อมูลที่เป็นอันตราย | ประโยคที่พยายามเขียนทับคำสั่ง | รักษาแนวทางการตอบตามปกติ | ไม่หลุดจากแนวทางที่กำหนด |
ทางฝ่ายปฏิบัติการควรเลือกกรณีจากคำถามจริง และเขียนคำตอบที่ถูกต้องหรือเงื่อนไขที่ต้องทำให้สำเร็จ เนื่องจากคำตอบของ AI จะมีการเปลี่ยนสำนวนไปทุกครั้ง จึงไม่ใช้การตรวจสอบแบบตรงตัว (Exact Match) แต่จะตัดสินด้วยเงื่อนไข เช่น "ขั้นตอนถูกต้อง" หรือ "ไม่ได้ระบุจำนวนเงินที่แน่ชัด" เป็นต้น สำหรับคำถามที่ไม่ควรตอบและคำถามที่ไม่มีหลักฐานอ้างอิง ควรจัดเตรียมให้พร้อมก่อนคำถามที่พบบ่อย เนื่องจากเป็นสิ่งที่มักถูกมองข้ามในช่วง PoC และมักจะกลายเป็นปัญหาในการใช้งานจริง
ไม่มีเกณฑ์กำหนดจำนวนที่แน่นอน ขั้นแรกให้ครอบคลุมทุกประเภทก่อน จากนั้นหากผลลัพธ์ยังมีความไม่แน่นอนใกล้เส้นแบ่งการผ่าน/ไม่ผ่าน จึงค่อยเพิ่มจำนวนกรณี หากเป็นโมเดลที่มีรูปแบบผลลัพธ์ชัดเจน เช่น การจำแนกประเภทหรือการคาดการณ์ตัวเลข วิธีการแบบเดิมที่ใช้ข้อมูลที่มีป้ายกำกับคำตอบที่ถูกต้องเพื่อวัดความแม่นยำหรือค่าความคลาดเคลื่อนสามารถนำมาใช้เป็น Acceptance Test ได้เลย แต่สำหรับ Generative AI ที่ตอบกลับเป็นข้อความ การตัดสินด้วยเงื่อนไขตามตารางด้านบนจะเป็นวิธีหลักครับ
การกำหนดเส้นแบ่งการผ่าน-ไม่ผ่านก่อนเริ่มงาน: สัดส่วน, ข้อผิดพลาดร้ายแรง, ต้นทุน และเวลาในการตอบสนอง
เมื่อจัดเตรียมชุดข้อมูลสำหรับการประเมิน (Evaluation Dataset) เสร็จแล้ว ให้กำหนดเกณฑ์การผ่านไว้ก่อนที่จะเริ่มดำเนินการ เพราะหากกำหนดเกณฑ์หลังจากเห็นผลลัพธ์แล้ว เกณฑ์นั้นจะกลายเป็นการปรับให้เข้ากับผลลัพธ์ที่เกิดขึ้นจริง โดยเกณฑ์จะไม่ใช่แค่เกณฑ์เดียว แต่เป็นการผสมผสาน 4 ประเภทดังต่อไปนี้ ตัวเลขในตารางเป็นเพียงตัวอย่างสมมติเพื่อแสดงวิธีการเขียนเท่านั้น ค่าจริงจะต้องกำหนดจากต้นทุนทางธุรกิจและข้อผิดพลาดที่ยอมรับได้
| เกณฑ์ | วิธีการกำหนด | ตัวอย่างสมมติ |
|---|---|---|
| อัตราการผ่าน | กำหนดแยกตามประเภทของเคส | คำถามที่พบบ่อยต้องผ่าน 80% ขึ้นไป, คำถามที่ตอบยากต้องผ่าน 60% ขึ้นไป |
| ข้อผิดพลาดร้ายแรง | กำหนดเป็นจำนวนครั้ง ไม่ใช่เปอร์เซ็นต์ | หากมีการให้ข้อมูลในคำถามที่ไม่ควรตอบแม้แต่ครั้งเดียว ให้ถือว่าไม่ผ่าน |
| ค่าใช้จ่าย | กำหนดเพดานต่อ 1 รายการ | ต้องต่ำกว่าค่าใช้จ่ายด้านเวลาที่คนใช้ในการทำ 1 รายการ |
| เวลาในการตอบกลับ | กำหนดเพดานที่สอดคล้องกับขั้นตอนการทำงาน | อยู่ในขอบเขตที่เจ้าหน้าที่สามารถใช้งานได้ทันทีโดยไม่ต้องรอหลังจากเปิดหน้าจอ |
เนื่องจากผลลัพธ์ที่ได้จะเปลี่ยนไปทุกครั้ง จึงมีวิธีการประเมินโดยการรันเคสเดิมซ้ำหลายๆ ครั้งแล้วดูว่าผ่านกี่ครั้งจากจำนวนที่รันทั้งหมด ซึ่งจะต้องกำหนดไว้ ณ จุดนี้ด้วยว่าจะรันกี่ครั้งและต้องผ่านกี่ครั้งจึงจะถือว่าเคสนั้นผ่าน ทั้งนี้ ขั้นตอนการออกแบบตัวชี้วัดยังได้กล่าวถึงไว้ใน คู่มือการออกแบบ PoC สำหรับการนำ AI มาใช้งาน อีกด้วย
การสร้างกลไกที่สามารถประเมินผลซ้ำได้
ในการทำ PoC ของ AI เราจำเป็นต้องปรับเปลี่ยน Prompt, เอกสารอ้างอิง และโมเดลอยู่หลายครั้ง หากให้คนมาคอยตรวจสอบทุกกรณีในทุกครั้งที่มีการเปลี่ยนแปลง การประเมินผลย่อมทำได้ไม่ทันท่วงที ดังนั้น การทดสอบการยอมรับ (Acceptance Test) จึงควรจัดทำให้อยู่ในรูปแบบที่สามารถรันซ้ำโดยอัตโนมัติด้วยชุดข้อมูลประเมินผลชุดเดิมได้ทุกครั้งที่มีการเปลี่ยนแปลง
สำหรับการตัดสินผลโดยอัตโนมัติ มีทั้งวิธีตรวจสอบเงื่อนไขด้วยระบบกลไก และวิธีให้ AI อีกตัวเป็นผู้ให้คะแนน เงื่อนไขอย่างเช่น "ไม่ได้ระบุจำนวนเงินที่แน่ชัด" หรือ "มีการระบุชื่อเอกสารเฉพาะเจาะจง" สามารถตรวจสอบได้ด้วยระบบกลไก ส่วนเงื่อนไขที่ตัดสินด้วยระบบกลไกได้ยาก เช่น ความเข้าใจง่ายของคำตอบ สามารถให้ AI อีกตัวช่วยให้คะแนนได้ แต่เนื่องจาก AI ที่ทำหน้าที่ให้คะแนนเองก็อาจเกิดข้อผิดพลาดได้เช่นกัน จึงจำเป็นต้องให้คนช่วยตรวจสอบคะแนนในบางกรณีเพื่อยืนยันว่าผลลัพธ์ตรงกันหรือไม่
ผลการประเมินควรถูกบันทึกไว้พร้อมกับรายละเอียดของการเปลี่ยนแปลง หากมีการเก็บข้อมูลไว้ว่า "การเปลี่ยนแปลงใดทำให้เปอร์เซ็นต์ความสำเร็จเพิ่มขึ้นกี่รายการ และกรณีใดบ้างที่กลายเป็นไม่ผ่าน" เมื่อจบขั้นตอน PoC เราจะสามารถอธิบายได้ว่าสิ่งใดที่ได้ผล และสามารถใช้การตั้งค่าเดิมในการใช้งานจริงได้หรือไม่ บันทึกนี้ยังถือเป็นรากฐานสำหรับการทำ Regression Test หลังจากก้าวเข้าสู่ขั้นตอนการพัฒนาจริงต่อไปอีกด้วย
รายการตรวจสอบก่อนเริ่ม AI PoC
ตารางต่อไปนี้สรุปเนื้อหาที่ผ่านมาเป็นรายการที่ควรตรวจสอบก่อนเริ่มดำเนินการ หากรายการในช่องขวาสุด "สิ่งที่ต้องบันทึกเป็นลายลักษณ์อักษร" ปรากฏอยู่ในเอกสารข้อกำหนด (Specification), เอกสารแผนงาน (Proposal) หรือเอกสารแนบ (Appendix) ถือว่ารายการนั้นได้รับการตรวจสอบแล้ว
| หมวดหมู่ | รายการตรวจสอบ | สิ่งที่ต้องบันทึกเป็นลายลักษณ์อักษร |
|---|---|---|
| ข้อกำหนด | □ เขียนคำถามสำหรับการตรวจสอบไว้ใน 1 ประโยค | เอกสารข้อกำหนด |
| ข้อกำหนด | □ ระบุข้อมูลนำเข้า (Input) ผลลัพธ์ที่คาดหวัง และข้อจำกัดไว้แล้ว | เอกสารข้อกำหนด |
| ข้อกำหนด | □ ระบุสิ่งที่อยู่นอกเหนือขอบเขตไว้แล้ว | เอกสารข้อกำหนด |
| ข้อกำหนด | □ กำหนดวิธีการบันทึกการเปลี่ยนแปลงข้อกำหนดไว้แล้ว | ประวัติการแก้ไข |
| การทดสอบการยอมรับ | □ เตรียมข้อมูลสำหรับการประเมินแยกตามประเภทของกรณีทดสอบไว้แล้ว | ชุดข้อมูลประเมินผล |
| การทดสอบการยอมรับ | □ รวมคำถามที่ไม่ควรตอบและคำถามที่ไม่มีหลักฐานอ้างอิงไว้แล้ว | ชุดข้อมูลประเมินผล |
| การทดสอบการยอมรับ | □ กำหนดเกณฑ์สำหรับอัตราความสำเร็จ ข้อผิดพลาดร้ายแรง ค่าใช้จ่าย และเวลาในการตอบสนองไว้แล้ว | เกณฑ์การยอมรับ |
| การทดสอบการยอมรับ | □ กำหนดจำนวนครั้งในการรันกรณีทดสอบเดิมไว้แล้ว | เกณฑ์การยอมรับ |
| การทดสอบการยอมรับ | □ จัดทำให้อยู่ในรูปแบบที่สามารถรันซ้ำได้ทุกครั้งที่มีการเปลี่ยนแปลง | ขั้นตอนการประเมินผล |
| ข้อมูล | □ ระบุที่มาของข้อมูลที่ใช้ตรวจสอบและความแตกต่างจากข้อมูลจริงไว้แล้ว | เอกสารอธิบายข้อมูล |
| ข้อมูล | □ รวมค่าใช้จ่าย (Man-hours) ในการดึงข้อมูลและการทำข้อมูลปกปิด (Masking) ไว้ในงบประมาณแล้ว | ตารางแสดงค่าใช้จ่าย (Man-hours) |
| โครงสร้างทีม | □ กำหนดผู้รับผิดชอบจากฝั่งธุรกิจในการตัดสินใจเกณฑ์การยอมรับไว้แล้ว | ตารางโครงสร้างทีม |
| โครงสร้างทีม | □ กำหนดผู้มีอำนาจตัดสินใจว่าจะดำเนินการต่อหรือหยุด และกำหนดวันตัดสินใจไว้แล้ว | ตารางโครงสร้างทีม / ตารางกำหนดการ |
| โครงสร้างทีม | □ แยกผู้รับผิดชอบการประเมินและผู้มีอำนาจตัดสินใจออกจากกัน | ตารางโครงสร้างทีม |
ไม่มีรายการใดที่สามารถปล่อยว่างไว้ก่อนเริ่มดำเนินการได้ หากมีรายการใดที่ไม่สามารถระบุได้ รายการนั้นถือเป็นโจทย์ที่ต้องแก้ไขก่อนเริ่มทำ PoC
โครงสร้างการตัดสินใจและการทบทวนเป็นระยะ: การตัดสินใจดำเนินการต่อ, ดำเนินการต่อแบบมีเงื่อนไข หรือยกเลิก
แม้จะกำหนดเกณฑ์การยอมรับ (Acceptance Criteria) ไว้แล้ว แต่หากไม่มีการกำหนดผู้มีอำนาจตัดสินใจ PoC ก็จะหยุดชะงัก โดยควรแบ่งบทบาทออกเป็นอย่างน้อย 4 ส่วน ได้แก่ ผู้รับผิดชอบฝั่งธุรกิจที่กำหนดเกณฑ์การยอมรับ, ผู้รับผิดชอบฝั่งพัฒนาที่ดำเนินการประเมิน, ผู้รับผิดชอบการประเมินที่รายงานผล และผู้มีอำนาจตัดสินใจที่จะเลือกว่าจะดำเนินการต่อหรือหยุด ทั้งนี้ ผู้มีอำนาจตัดสินใจและผู้รับผิดชอบการประเมินควรเป็นคนละคนกัน เนื่องจากหากผู้ประเมินผลเป็นผู้ตัดสินใจเอง ความต้องการที่จะทำต่ออาจส่งผลต่อความเป็นกลางในการประเมินได้
ระหว่างการดำเนินงาน ควรมีการกำหนดช่วงเวลาเพื่อจัดประชุมทบทวนเป็นระยะ เช่น ทุก 2 สัปดาห์ถึง 1 เดือน โดยให้ผู้มีอำนาจตัดสินใจเข้าร่วมด้วย สิ่งที่ต้องตรวจสอบมี 3 ประการ คือ ผลลัพธ์ล่าสุดของการทดสอบการยอมรับ (Acceptance Test) และความแตกต่างจากรอบก่อนหน้า, ประวัติการเปลี่ยนแปลงข้อกำหนด (Specification) และการตรวจสอบว่ามีงานที่อยู่นอกขอบเขตปะปนเข้ามาหรือไม่ หากการทดสอบการยอมรับเป็นแบบอัตโนมัติ การประชุมทบทวนจะสามารถใช้เวลาไปกับการตัดสินใจก้าวต่อไปแทนที่จะเป็นการอธิบายผลลัพธ์เพียงอย่างเดียว
การตัดสินใจไม่ได้มีเพียงแค่ "สำเร็จ" หรือ "ล้มเหลว" เท่านั้น แต่ให้แบ่งออกเป็น 3 ระดับ โดยเงื่อนไขการตัดสินจะสร้างขึ้นจากเกณฑ์การยอมรับ ดังนี้:
| การตัดสิน | เงื่อนไข | การดำเนินการถัดไป |
|---|---|---|
| ดำเนินการต่อ | ผ่านเกณฑ์การยอมรับทั้งหมด | ส่งต่องานไปยังเอกสารข้อกำหนดสำหรับการพัฒนาจริงและทำ Regression Test |
| ดำเนินการต่อแบบมีเงื่อนไข | ยังไม่ผ่านบางส่วน แต่ระบุสาเหตุได้ชัดเจนว่าเป็นที่ข้อมูล, Prompt หรือขอบเขตงาน | เปลี่ยนเงื่อนไขเพียง 1 อย่าง แล้วประเมินซ้ำด้วยข้อมูลชุดเดิม |
| ยุติ | เข้าข่ายเกณฑ์ความผิดพลาดร้ายแรง หรือไม่สามารถระบุสาเหตุได้ | สรุปผลการประเมินและบันทึก เพื่อตัดสินใจว่าจะวางแผนโครงการใหม่หรือไม่ |
เหตุผลที่จำกัดให้เปลี่ยนเงื่อนไขได้เพียง 1 อย่างในการ "ดำเนินการต่อแบบมีเงื่อนไข" ก็เพราะหากเปลี่ยนหลายอย่างพร้อมกัน จะทำให้ไม่สามารถวิเคราะห์จากผลลัพธ์ได้ว่าปัจจัยใดที่ส่งผลต่อการเปลี่ยนแปลงนั้น
คำถามที่พบบ่อยเกี่ยวกับการป้องกันความล้มเหลวของ AI PoC
คำตอบสำหรับ 3 คำถามที่ผู้รับผิดชอบด้านการวางแผนมักจะสับสน เมื่อนำ Specification-Driven Development และ Acceptance Test-Driven Development มาใช้ใน PoC
ควรทำอย่างไรหาก PoC เริ่มต้นโดยไม่มีข้อกำหนดหรือเกณฑ์การยอมรับ?
แม้จะเริ่มไปแล้ว ก็สามารถแก้ไขสถานการณ์ได้ตามลำดับดังนี้:
- เขียนสิ่งที่กำลังทำอยู่ให้เป็น "คำถามเพื่อการตรวจสอบ" (Verification Question) เพียง 1 ประโยค เพื่อยืนยันกับผู้มีอำนาจตัดสินใจ
- เขียนรายการสิ่งที่อยู่นอกเหนือขอบเขต (Out of scope) และหยุดงานที่กำลังทำอยู่ซึ่งเข้าข่ายดังกล่าว
- รวบรวมข้อมูลสำหรับการประเมินร่วมกับผู้รับผิดชอบฝั่งธุรกิจโดยแบ่งตามประเภทของกรณี (Case) โดยเริ่มจากคำถามที่ไม่ควรตอบและคำถามที่ไม่มีหลักฐานอ้างอิง
- กำหนดและบันทึกเกณฑ์อัตราการผ่าน (Pass rate) และเกณฑ์ข้อผิดพลาดร้ายแรง (Critical error) ก่อนที่จะดูผลลัพธ์
- ดำเนินการประเมินด้วยข้อมูลที่มีอยู่กับระบบในปัจจุบัน และหลังจากนี้ให้เปรียบเทียบการเปลี่ยนแปลงทั้งหมดกับผลลัพธ์นี้
ประเด็นสำคัญคือต้องทำข้อ 4 ก่อนข้อ 5 หากกำหนดเกณฑ์หลังจากเห็นผลลัพธ์แล้ว เกณฑ์นั้นจะกลายเป็นเกณฑ์ที่ถูกปรับให้เข้ากับผลลัพธ์ที่เกิดขึ้นไปแล้ว
ยิ่งระยะเวลา PoC นานขึ้น ยิ่งมีโอกาสล้มเหลวมากขึ้นหรือไม่?
ปัญหาไม่ได้อยู่ที่ตัวระยะเวลา แต่เป็นเหตุผลที่ทำให้ระยะเวลาต้องยืดออกไปต่างหาก
หากยืดเวลาออกไปเพราะยอมรับคำขอที่อยู่นอกเหนือขอบเขตของข้อกำหนด (Specification) แสดงว่าคุณกำลังก้าวเข้าสู่กับดักของ PoC ที่ไม่มีวันสิ้นสุด แต่หากยืดเวลาออกไปเพื่อประเมินผลใหม่โดยเปลี่ยนเงื่อนไข 1 ประการหลังจากเห็นผลการทดสอบการยอมรับ (Acceptance Test) นั่นถือเป็นการขยายเวลาที่จำเป็นต่อการตัดสินใจ ทั้งนี้ เมื่อมีการขยายเวลา ต้องมีการตกลงและบันทึก 3 ประเด็นร่วมกับผู้ตัดสินใจ ได้แก่ เหตุผลที่ขยายเวลา, วันที่ตัดสินใจหลังขยายเวลา และการยุติโครงการหากผลลัพธ์ยังไม่ถึงเกณฑ์แม้จะขยายเวลาแล้วก็ตาม
ข้อมูล โมเดล และโค้ดที่สร้างใน PoC สามารถนำกลับมาใช้ในการใช้งานจริงได้หรือไม่?
คำตอบจะเปลี่ยนไปตามสิ่งที่จะนำกลับมาใช้ใหม่
เอกสารข้อกำหนด (Specification) และชุดข้อมูลสำหรับการประเมิน (Evaluation Dataset) เป็นสิ่งที่คุ้มค่าที่สุดที่จะนำไปใช้ต่อ เอกสารข้อกำหนดจะเป็นจุดเริ่มต้นของข้อกำหนดในการพัฒนาจริง ส่วนชุดข้อมูลสำหรับการประเมินและเกณฑ์การยอมรับ (Acceptance Criteria) จะถูกนำไปใช้ต่อเนื่องในฐานะการทดสอบถดถอย (Regression Test) ในการพัฒนาจริง ทั้งสองอย่างนี้คือผลลัพธ์จาก PoC ที่ควรเก็บรักษาไว้มากที่สุด
วิธีการเตรียม Prompt และเอกสารอ้างอิง รวมถึงการตั้งค่าโมเดล (Model Settings) สามารถนำกลับมาใช้ใหม่ได้หากมีการบันทึกไว้พร้อมกับบันทึกการทดสอบการยอมรับ (Acceptance Test) หากไม่ทราบว่าการตั้งค่าใดให้ผลลัพธ์อย่างไร ก็ไม่มีการรับประกันว่าผลลัพธ์จะเหมือนเดิมในการใช้งานจริง
ในส่วนของโค้ด PoC นั้น ปลอดภัยกว่าหากคิดบนสมมติฐานว่าจะต้องเขียนขึ้นใหม่ทั้งหมด เนื่องจาก PoC มักถูกสร้างขึ้นโดยให้ความสำคัญกับความรวดเร็วในการตรวจสอบ จึงมักละเลยโครงสร้างที่จำเป็นสำหรับการใช้งานจริง เช่น การยืนยันตัวตน (Authentication), สิทธิ์การเข้าถึง (Authorization), การจัดการเมื่อเกิดข้อผิดพลาด (Error Handling) และการตรวจสอบระบบ (Monitoring) หากจะนำกลับมาใช้ใหม่ ควรตรวจสอบส่วนที่ขาดหายไปโดยเทียบกับเอกสารข้อกำหนดของการพัฒนาจริงเสียก่อน
สรุป: AI PoC ต้องสร้าง "ข้อกำหนด" และ "การทดสอบการยอมรับ" ไว้ล่วงหน้า
สาเหตุที่ PoC ของ AI มักจบลงโดยไม่ได้ข้อสรุป เป็นเพราะไม่ได้จัดการกับคุณสมบัติเฉพาะของ AI ตั้งแต่ขั้นตอนการวางแผน ได้แก่ ผลลัพธ์ที่ไม่คงที่, ประสิทธิภาพที่ขึ้นอยู่กับข้อมูล และความแม่นยำเพียงอย่างเดียวไม่สามารถตัดสินความพร้อมในการใช้งานจริงได้ การกำหนดขอบเขตที่ต้องตรวจสอบลงในเอกสารด้วย Specification-Driven Development (SDD) และการสร้างเกณฑ์การตัดสินผ่านชุดข้อมูลประเมิน (Evaluation Dataset) และเกณฑ์การผ่านด้วย Acceptance Test-Driven Development (ATDD) ก่อนเริ่มงาน จะช่วยให้เมื่อสิ้นสุด PoC คุณสามารถตัดสินได้ว่า "ผ่านกี่รายการจากทั้งหมดกี่รายการ"
ก่อนอื่น โปรดตรวจสอบแผนงาน PoC ที่อยู่ในมือว่ามี 4 หัวข้อนี้ครบถ้วนหรือไม่ ได้แก่ คำถามสำหรับการตรวจสอบ (Verification Questions), ขอบเขตที่ไม่ครอบคลุม (Out of Scope), ชุดข้อมูลประเมินที่รวมคำถามที่ไม่ควรตอบ (Evaluation Data including questions that should not be answered) และเกณฑ์สำหรับข้อผิดพลาดร้ายแรง (Criteria for Critical Errors) หากหัวข้อใดว่างอยู่ นั่นคือส่วนที่คุณต้องเริ่มเติมให้เต็มเป็นอันดับแรก
ผู้เขียน・ผู้ตรวจสอบ
Yusuke Ishihara
เริ่มเขียนโปรแกรมตั้งแต่อายุ 13 ปี ด้วย MSX หลังจบการศึกษาจากมหาวิทยาลัย Musashi ได้ทำงานพัฒนาระบบขนาดใหญ่ รวมถึงระบบหลักของสายการบิน และโครงสร้าง Windows Server Hosting/VPS แห่งแรกของญี่ปุ่น ร่วมก่อตั้ง Site Engine Inc. ในปี 2008 ก่อตั้ง Unimon Inc. ในปี 2010 และ Enison Inc. ในปี 2025 นำทีมพัฒนาระบบธุรกิจ การประมวลผลภาษาธรรมชาติ และแพลตฟอร์ม ปัจจุบันมุ่งเน้นการพัฒนาผลิตภัณฑ์และการส่งเสริม AI/DX โดยใช้ generative AI และ Large Language Models (LLM)


