Agent Dev Thai Academyprinciples · patterns · architecture

AI ลืมไปว่าตัวเองเป็น AI

AI เขียน python 120 บรรทัดกัน cron พูดซ้ำ ทั้งที่คำตอบคือ prompt 5 บรรทัดที่แปะ output รอบก่อนให้ model ตัดสินเอง ถ้าคนอ่าน output คือ model ส่งเป็นข้อความ ไม่ต้องเขียน code

ผมให้ AI แก้ปัญหาเรื่องนึง มันเขียน python ให้ 120 บรรทัด

ปัญหาคือ cron ตัวนึงพูดเรื่องเดิมซ้ำ 4 รอบ ห่างกันรอบละอาทิตย์ เพราะทุกครั้งที่มันตื่นมันไม่รู้ว่าตัวเองเคยพูดอะไรไปแล้ว

สิ่งที่มันเขียนมาให้คือ module ที่มี function ชื่อ said_before() เอาไว้เช็คว่าประโยคนี้เคยพูดไปหรือยัง วิธีเช็คคือ match ข้อความตรงๆ

ดูเป็นงานเป็นการมาก มีไฟล์ มี test รันได้จริง

แต่มันผิด


คำตอบจริงคือ 5 บรรทัด แล้วก็ไม่ใช่ code ด้วย

## Continuity

รอบล่าสุดของคุณคือ {เวลา}
อย่ารายงานสิ่งข้างล่างซ้ำเหมือนมันเป็นเรื่องใหม่
ถ้าไม่มีอะไรเปลี่ยน บอกสั้นๆ

### สิ่งที่คุณพูดไปรอบที่แล้ว
{output รอบก่อน}

แปะไว้หน้า prompt เดิม จบ

การตัดสินว่า "อันนี้ซ้ำมั้ย" มันคืองานที่ต้องใช้วิจารณญาณ substring match แยกไม่ออกหรอกว่าพูดซ้ำจริง กับบังเอิญคำเหมือนกัน ต่างกันยังไง

งานแบบนี้ควรให้ model ทำ ไม่ใช่ให้ regex ทำ


ที่น่าสนใจกว่าคือ ทำไม AI ถึงเลือกทางแรก

เพราะ code ที่มันเคยเห็นมาทั้งชีวิต เวลามีโจทย์ว่า "จัดการข้อมูลนี้หน่อย" คำตอบคือ script เกือบทุกครั้ง มันเลยเดาไปทางนั้นก่อน ไม่ได้คิด แค่เดาตามที่เคยเห็น

แล้วมันก็มีอีกอย่างที่เราไม่ค่อยพูดกัน คือไฟล์ที่มี function มี test มันดูเหมือนทำงานมากกว่าการแก้ prompt 5 บรรทัด ทั้งที่ผลลัพธ์ดีกว่า

สรุปคือ AI เขียน code เพื่อเลี่ยงการเชื่อ model ทั้งที่ตัวมันเองก็คือ model


ไปเปิดดูของจริงว่าคนที่ทำเรื่องนี้มาก่อนเขาทำยังไง Hermes มี PR เรื่องนี้ตรงๆ เลข 80774

เขาไม่มี code เช็คซ้ำแม้แต่บรรทัดเดียว เขาแค่เอา output รอบที่แล้วยัดกลับเข้า prompt แล้วให้ model ตัดสินเอง

ที่เขาเขียนเป็น code จริงๆ มีอย่างเดียว คือเก็บ output ลงไฟล์


เส้นแบ่งที่ผมใช้ตั้งแต่วันนั้น: ถามว่าใครเป็นคนอ่าน output

ถ้าคนอ่านคือ model ของที่ส่งไปควรเป็นข้อความ
ถ้าคนอ่านคือ scheduler หรือ filesystem ค่อยเขียน code

คราวหน้าเวลา AI ส่ง script มาให้ ลองถามมันกลับว่า "อันนี้ทำด้วย prompt ได้มั้ย" หลายครั้งได้ แล้วมันจะสั้นกว่าเดิมสิบเท่า

ลิงก์ PR อยู่ในคอมเมนต์แรก