เราจะเชื่อถือ AI รีวิวได้แค่ไหน?
(medium.com)ขณะดำเนินการเครื่องมือ AI รีวิวภายในองค์กร ผู้เขียนได้แบ่งปันกระบวนการวัดคุณภาพเชิงปริมาณและปรับปรุงอย่างต่อเนื่อง เพื่อตอบคำถามว่า “เราจะเชื่อถือ AI รีวิวได้แค่ไหน?” และ “มันกำลังตรวจสอบได้ดีจริงหรือไม่?”
ภูมิหลัง
- โค้ดที่ AI สร้างมีจำนวน issue ต่อ PR มากกว่าโค้ดที่มนุษย์เขียน 1.7 เท่า และมี logic error มากกว่า 75% (CodeRabbit)
- Amazon บังคับให้ PR ต้องได้รับอนุมัติจากซีเนียร์หลังเกิดเหตุขัดข้องจากโค้ด AI ส่วน Shopify ห้าม auto-merge PR จาก AI
- AI รีวิวจึงถูกนำมาใช้เป็นหนึ่งในวิธีตรวจสอบเพื่อค้นหา issue และ error ได้ตั้งแต่เนิ่นๆ ในสถานการณ์แบบนี้
- แต่ตัว AI รีวิวเองก็ไม่เป็น deterministic ดังนั้นจึงต้องมีขั้นตอนวัดก่อนว่า “เครื่องมือตรวจสอบนี้กำลังตรวจสอบได้ดีจริงหรือไม่”
การสร้าง benchmark ภายใน
- ใช้วิธีย้อนรอยจาก Hotfix PR ไปยัง PR ต้นฉบับเพื่อวัดว่า “ถ้าเป็นตอน PR ต้นฉบับ AI รีวิวจะจับบั๊กนี้ได้หรือไม่”
- รวมเฉพาะเคสที่ตัดสินได้จาก PR diff เพียงอย่างเดียว และตัดเคสที่ต้องใช้บริบทภายนอกออก
- การให้คะแนนใช้ GPT-4o mini ในรูปแบบ LLM-as-a-Judge แม้ค่าผลลัพธ์แบบสัมบูรณ์อาจไม่แม่น แต่เพียงพอสำหรับการเปรียบเทียบเชิงสัมพัทธ์
- คะแนนแรกอยู่ที่ 33 คะแนน ความรู้สึกว่า “ทำได้ดีอยู่แล้ว” เป็นเพียงภาพลวงจากเคสที่สำเร็จไม่กี่กรณี
ความล้มเหลว 1 (sub-agent orchestration)
- ลองใช้โครงสร้างที่มี sub-agent ผู้เชี่ยวชาญแยกตามโดเมน และมี main agent คอยควบคุมภาพรวม
- ผลลัพธ์: อัตราการตรวจจับลดลง, ต้นทุนเพิ่มขึ้น 1.5~3 เท่า
- สาเหตุมี 3 ข้อ
- การสูญเสียข้อมูลจากการบีบอัดบริบท
- มุมมองแคบลงจากการจำกัดขอบเขตความสนใจ
- ช่องว่างของความรับผิดชอบในประเด็นข้ามโดเมน
ความล้มเหลว 2 (benchmark contamination)
- เมื่อปรับแต่ง prompt อัตโนมัติแบบวนลูป ระบบกลับลู่เข้าสู่การไล่รายการคำสั่งอย่าง “ให้ตรวจสอบ Division by Zero”
- แม้แต่ SWE-bench เองก็อยู่ในสภาพปนเปื้อนแล้ว
- จึงยืนยันได้ว่า benchmark ภายนอกไม่สามารถใช้เป็นหลักฐานในการตัดสินใจเลือกโมเดลได้
ตัวชี้วัดใหม่ (Adoption Rate)
- adopted: รีวิวนำไปสู่การเปลี่ยนแปลงโค้ดจริง
- engaged: ไม่มีการเปลี่ยนแปลง แต่มีการโต้ตอบผ่าน reply (ยอมรับว่ามีคุณค่าในการ cross-check)
- noised: ไม่มีทั้งการเปลี่ยนแปลงและไม่มี reply
- วิธีตัดสิน: เปรียบเทียบ commit SHA ตอนรีวิวกับ SHA ตอน merge และตัดสินเป็น adopted หากมีการเปลี่ยนแปลงภายในช่วง ±3 บรรทัดจากบรรทัดที่คอมเมนต์ไว้
Opus 4.6 vs GPT-5.2 Codex A/B
- แบ่งโมเดลตามเลข PR คู่/คี่ และเปรียบเทียบ PR ประมาณ 100 รายการ
- Opus 4.6: เร็วและสร้างสรรค์ แต่ละเอียดไม่พอ และ Approve ได้ง่าย
- GPT-5.2 Codex: ช้ากว่าแต่ละเอียด แม้ในจังหวะที่ขอรีวิวใหม่ก็ยังชี้ประเด็นเพิ่มเติมที่มีผลได้มาก
- หลังล็อกมาใช้ Codex พบว่าสถิติอัตราการนำไปใช้รายสัปดาห์สูงสุดแตะ 60%
3 มาตรการที่ช่วยเพิ่มอัตราการนำไปใช้
- Question: หากไม่มั่นใจ ให้ตั้งคำถามแทนการชี้เป็นข้อผิดพลาด
- ส่วน Intent/Decisions ใน PR template
- Intent: ใช้สกิล create-pr เพื่อแทรกคำตอบของคำถาม “ทำไมจึงจำเป็น”
- Decisions: ใช้ Claude Stop hook เพื่อดึง decision จากเซสชันสนทนาออกมาอัตโนมัติ
- false positive ที่เกิดจากรีวิวเวอร์ขาดบริบทลดลงได้ถึง 29%
- resolve thread อัตโนมัติ: เมื่อยืนยันได้ว่ารีวิวถูกนำไปใช้แล้ว AI จะปิด thread ให้อัตโนมัติ
ผลลัพธ์
- อัตราการนำไปใช้รายเดือนแตะ 63% (ณ วันที่ 2026-04-17)
- ทุก action อิงข้อมูล จึงสามารถตัดสินใจการทดลองถัดไปได้อย่างมีหลักฐานรองรับ
- อย่างไรก็ตาม Adoption Rate ก็ไม่ได้การันตีว่า “ถูกนำไปใช้ = คำตอบที่ถูกต้อง” ดังนั้นตัวชี้วัดนี้เองก็ต้องระวังการปนเปื้อนเช่นกัน
4 ความคิดเห็น
ฟังดูเหมือน "แล้วใครจะคอยตรวจสอบผู้เฝ้าตรวจสอบ?" เลยนะ
สิ่งที่ผมหมายถึงด้วย "วิธีการตรวจสอบ" ข้างต้นคือ AI reviewer ครับ จุดประสงค์คือเนื่องจาก AI มีความไม่เป็นเชิงกำหนด จึงจำเป็นต้องมี baseline (benchmark) สำหรับวัดคุณภาพของ AI review ก่อน แต่ในมุมของผู้อ่านก็อาจตีความได้ว่า ควรพิจารณาความสมเหตุสมผลของ benchmark เองก่อนเช่นกัน
ดูเหมือนว่าผมจะเขียนประโยคกำกวมจนทำให้เกิดความสับสน ขอบคุณที่ช่วยทักท้วงครับ..!
โดยส่วนตัวแล้ว ผมใช้คนละโมเดลกันระหว่างโมเดลที่เขียนโค้ดกับโมเดลที่รีวิวโค้ด
จากประสบการณ์ Claude มักมองว่าโค้ดที่ Claude เขียนเป็นโค้ดที่เขียนได้ดี ส่วน ChatGPT ก็มักมองว่าโค้ดที่ ChatGPT เขียนนั้นเขียนได้ดีกว่า
ผมใช้ Codex ทั้งในขั้นตอนการวางแผนและขั้นตอนการตรวจสอบอยู่แล้ว แบบนี้แปลว่าที่ทำมาก็ถูกทางแล้วสินะ