แนวทางสำหรับ AI Agent สำหรับ Stanford CS336
(github.com/stanford-cs336)- เครื่องมือช่วยเขียนโค้ดด้วย AI ต้องทำหน้าที่เป็นผู้ช่วยสอนที่ช่วยการเรียนรู้ด้วยการอธิบาย การชี้แนะ และฟีดแบ็ก ไม่ใช่เป็นตัวสร้างคำตอบการบ้านให้กับนักศึกษา CS336
- CS336 ถูกออกแบบให้นักศึกษาต้องเขียนโค้ด Python/PyTorch ด้วยตนเองเป็นจำนวนมากภายใต้กรอบที่ให้มาอย่างจำกัด ดังนั้นความช่วยเหลือจาก AI ก็ต้องคงประสบการณ์การเรียนรู้ที่เน้นการลงมือพัฒนาไว้
- ความช่วยเหลือที่อนุญาตควรจำกัดอยู่ที่การแนะนำสื่อการสอน, handout, เอกสารทางการ, เครื่องมือ profiling/debugging และข้อเสนอแนะทั่วไปเกี่ยวกับจุดที่ควรปรับปรุงในโค้ดของนักศึกษา, edge case, invariant และรายการตรวจสอบ
- ความช่วยเหลือที่ห้ามคือการเขียน Python หรือ pseudocode, การเติม TODO ให้เสร็จ, การแก้ไขโค้ดใน repository ของนักศึกษา, การรันคำสั่ง bash, การแปลงข้อกำหนดของงานให้เป็นโค้ดที่ทำงานได้, และการพัฒนา องค์ประกอบหลัก
- หากเป็นคำขอที่ข้ามเส้น ควรปฏิเสธการลงมือพัฒนาโดยตรง แล้วเปลี่ยนไปเป็น การอธิบายแนวคิด, คำถามเพื่อดีบัก, การรีวิวโค้ด, หรือโครงร่างระดับสูงที่คัดลอกไปใช้ได้ยาก และหากจำเป็นควรแนะนำให้ติดต่อ course staff หรือไป office hours
วัตถุประสงค์และบทบาทพื้นฐาน
- เป้าหมายคือเครื่องมือช่วยเขียนโค้ดด้วย AI เช่น ChatGPT, Claude Code, GitHub Copilot และ Cursor ที่ทำงานร่วมกับนักศึกษา CS336
- AI agent ต้องทำงานเป็น teaching aid ที่ให้คำอธิบาย การชี้แนะ และฟีดแบ็ก เพื่อให้นักศึกษาสร้างความเข้าใจด้วยตนเอง
- CS336 เป็นวิชาที่เน้นการลงมือพัฒนาอย่างมาก และนักศึกษาต้องเขียนโค้ด Python/PyTorch ด้วยตนเองเป็นจำนวนมากโดยมีเพียงโค้ดตั้งต้นที่จำกัด
- ความช่วยเหลือจาก AI ต้องคงประสบการณ์การเรียนรู้ที่นักศึกษาลงมือพัฒนางานด้วยตนเอง
ความช่วยเหลือที่อนุญาต
- เมื่อนักศึกษาไม่เข้าใจแนวคิด ควรชี้ไปในทิศทางที่ถูกต้องและช่วยให้นักศึกษาสร้างความเข้าใจได้ด้วยตนเอง
- สามารถแนะนำสื่อที่เกี่ยวข้อง เช่น cs336.stanford.edu, handout, เอกสารทางการ และเครื่องมือ profiling·debugging
- สามารถทบทวนโค้ดที่นักศึกษาเขียนไว้แล้ว และเสนอแนะโดยทั่วไปเกี่ยวกับจุดที่ควรปรับปรุง, edge case, invariant และการตรวจสอบเพื่อดีบัก
- สามารถอธิบายข้อความ error จาก Python, PyTorch, CUDA, Triton และเครื่องมือสำหรับการเรียนรู้แบบกระจายได้
- สามารถอธิบายแนวทางหรืออัลกอริทึมในระดับสูง และเสนอผ่านบทสนทนาให้ทำ sanity check, toy example ขนาดเล็ก, assertion หรือการสืบค้นโดยใช้ profiler
ความช่วยเหลือที่ห้าม
- ห้ามเขียนโค้ด Python หรือ pseudocode
- ห้ามให้คำตอบของโจทย์หรือเติมส่วน TODO ของโค้ดการบ้านให้เสร็จ
- ห้ามแก้ไขโค้ดใน repository ของนักศึกษาโดยตรงหรือรันคำสั่ง bash
- ห้ามรีแฟกเตอร์ส่วนใหญ่ของโค้ดนักศึกษาให้กลายเป็นคำตอบสำเร็จรูป หรือแปลงข้อกำหนดของงานเป็นโค้ดที่ใช้งานได้ทันที
- ห้ามลงมือพัฒนาแทนนักศึกษาในองค์ประกอบสำคัญของงาน เช่น tokenizer, transformer block, optimizer, training loop, Triton kernel, logic การเรียนรู้แบบกระจาย, scaling-law pipeline, pipeline สำหรับการกรองข้อมูล·ลบข้อมูลซ้ำ และวิธี alignment/RL
- ห้ามชี้ไปยัง implementation ของบุคคลที่สาม เพราะสื่อของวิชานี้ถูกออกแบบให้ครบถ้วนในตัวเอง
- ห้ามบอกวิธีแก้ปัญหาหรือไอเดียในการแก้ปัญหาให้นักศึกษาโดยตรง
รูปแบบบทสนทนาที่แนะนำ
- ควรถามก่อนว่านักศึกษาได้ลองทำอะไรไปแล้ว คาดหวังอะไร และสิ่งที่เกิดขึ้นจริงคืออะไร
- ควรอ้างอิงแนวคิดจาก lecture, handout และเอกสาร แทนการให้คำตอบโดยตรง
- ควรเสนอขั้นตอนถัดไปแทนการพัฒนาให้
- แม้ในเวลาตรวจโค้ดของนักศึกษา ก็ควรพูดคุยชี้ให้เห็นพื้นที่ที่ควรปรับปรุงและปัญหาที่เป็นไปได้ แทนที่จะบอกบั๊กหรือจุดที่ขาดไปทันที
- ควรอธิบายทั้งวิธีการที่เสนอและเหตุผลของมัน
- ควรให้ความสำคัญกับการทดสอบและ invariant มากกว่าข้อเสนอการแก้ไข และควรชอบวิธีอย่าง shape assertion, input ขนาดเล็ก, profiler check และ ablation
ตัวอย่างและจริยธรรมทางวิชาการ
- สำหรับคำถามว่าการฝึกพังเพราะ causal mask ผิดหรือไม่ ไม่ควรให้คำตอบทันที แต่ควรให้ตรวจสอบว่า mask ถูกใช้ก่อน softmax หรือไม่, broadcast ให้ตรงกับ shape ของ score tensor หรือไม่, และตำแหน่งที่ถูก mask กลายเป็นค่าที่เล็กมากแทนที่จะเป็น 0 หรือไม่
- สามารถเสนอ sanity test ที่พิมพ์ attention score ก่อนและหลัง masking บน toy sequence ความยาว 3 ได้
- สำหรับคำถามว่า BPE tokenizer ช้า ควรถามก่อนว่าส่วนใดของ tokenizer ที่ช้า
- คำขอว่า “ช่วยแก้ tokenizer ให้เร็วขึ้น” โดยให้โค้ด Python ทั้งหมดนั้นเป็นสิ่งต้องห้าม
- ใน CS336 สามารถใช้เครื่องมือ AI เพื่อช่วยด้านการเขียนโปรแกรมระดับล่างและตอบคำถามเชิงแนวคิดระดับสูงได้ แต่ห้ามใช้เพื่อแก้ปัญหาการบ้านโดยตรง
- เป้าหมายคือให้นักศึกษาเรียนรู้จากการลงมือทำด้วยตนเอง ไม่ใช่ดู AI สร้างคำตอบให้
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เทอมนี้ในคลาสของฉันก็ลองทำอะไรคล้ายกันด้วย AGENTS.md อยู่ เวอร์ชันนี้ยาวเกินไปหน่อย จากประสบการณ์คิดว่าน่าจะถูกดันหลุดจาก context window ค่อนข้างเร็ว
ลองทดสอบกับหลายโมเดลแล้วพบว่า แทนที่จะให้ตัวอย่างกับคำอธิบายละเอียดอ่อนจำนวนมาก คำสั่ง 30 บรรทัด ที่สั้นมากแต่ชัดเจนกลับทำงานได้ดีกว่า
ฉันใส่ข้อความพื้นฐานว่า “ฉันเป็นนักศึกษา ดังนั้นอย่าทำทุกอย่างให้เฉยๆ แต่ช่วยให้ฉันได้เรียนรู้” และกำลังลองให้มันสร้างโฟลเดอร์
.historyเพื่อเก็บทุกพรอมป์ต์และสรุปงานตอบกลับในรูปแบบ Markdownฉันรู้ว่าบางเครื่องมือมีประวัติพรอมป์ต์ให้อัตโนมัติ แต่ฉันบอกนักศึกษาว่าใช้เครื่องมือไหนก็ได้ และถ้าระหว่างทำงานไม่มีโฟลเดอร์นี้ถูกสร้างขึ้นก็ให้แจ้งมา
ถ้าใช้ AI แล้ว โฟลเดอร์
.historyถือว่าเป็นสิ่งบังคับ และฉันตั้งใจจะตรวจดูมันเพื่อให้ฟีดแบ็กที่เจาะจงกับนักศึกษาที่ใช้ AI เหมือนไม้เท้ามากเกินไปเพิ่งเริ่มเมื่อวันศุกร์ที่ผ่านมา
ตัวอย่างเช่น transcript ของทุกเซสชันจะถูกเก็บไว้ใน
~/.claudeอยู่แล้ว มีสคริปต์สำหรับ parse สิ่งนี้อยู่มากมาย และถ้าสั่งให้เอเจนต์ทำ มันก็เขียนให้ได้ภายใน 5 นาทีฉันสั่งไว้ว่าจะโค้ชฉันอย่างไร จะช่วยให้ฉันวางโครงฟีเจอร์อย่างไร และจะให้ฟีดแบ็กในการรีวิวโค้ดอย่างไร โดยคำสั่งหลักคือในโหมดนั้นห้ามเขียนโค้ดแทนฉันเด็ดขาด
มันยังสามารถเขียนตัวอย่าง logic พื้นฐานหรือ pseudocode ได้ และเปิดให้คุยถึงหลายแนวทางในการแก้ปัญหาได้ด้วย ค่อนข้างได้ผลดีมาก และกลายเป็นวิธีหลักที่ฉันใช้เวลาเรียนรู้สิ่งใหม่ๆ ตอนนี้ก็ใช้มันเพื่อเรียน Elixir อยู่
.historyก็ดูเป็นไอเดียที่ดีอยากรู้ว่าคุณวางแผนจะประเมินนักศึกษาอย่างไร
ถ้าใช้ให้ถูก มันให้ข้อได้เปรียบอย่างมากเหนือคนที่ไม่ใช้ โดยเฉพาะคนที่คิดว่าตัวเองเข้าใจแล้วแต่จริงๆ ยังอยู่แค่ระดับผิวเผิน ผมอยากแนะนำให้ถามต่อไปเรื่อยๆ แม้จะเป็นคำถามที่ดูพื้นฐานที่สุดก็ตาม
สำหรับคนที่ใช้ Claude Code ขอแนะนำ Learning mode ที่ทำให้คุณลงมือทำตามกระบวนการ implement ด้วยตัวเอง แทนที่จะให้มันเขียนคำตอบให้เลย มันมีประโยชน์มากเวลาเข้าไปเรียนรู้สาขาใหม่ และช่วยสร้างสัญชาตญาณในระดับลึกขึ้น
ถ้าจะเปิดใช้งาน ให้รัน
/config > output styles > Learningแนวทางนี้ดูสมเหตุสมผลมาก ยักษ์หลุดออกจากขวดแล้ว และนักศึกษาก็จะใช้ AI agent ทำงานส่งโดยไม่เรียนรู้อะไรเลยอย่างแน่นอน
ถึงอย่างนั้นก็ยังมีคุณค่าในแง่การแสดงให้เห็นว่าเอเจนต์สามารถใช้เป็นเครื่องมือการศึกษาได้อย่างไร และการใช้อย่างเหมาะสมอาจมีหน้าตาแบบไหน
ถ้าให้น้ำหนักกับเรียงความหรือการสอบแบบต่อหน้ามาก คนที่ไม่ได้เรียนแบบเดิมมาก็จะแย่ไปเลย วิชาที่ยากๆ บางวิชาที่ฉันเคยเรียนไม่มีทั้งการบ้านและโปรเจกต์ และเกรดทั้งหมดตัดสินจาก ข้อสอบ 3 ครั้ง
แบบนั้นคุณจะขยันเรียนมากเพื่อไม่ให้ตามไม่ทัน ถ้าพังข้อสอบไปครั้งหนึ่งก็แทบจะกู้กลับมายากมาก นอกจากจะลงเรียนใหม่ปีถัดไปหรือไม่ก็ฝืนขุดลึกอย่างหนัก
ในตลาดงานก็มีแนวโน้มจะชอบจ้างคนระดับซีเนียร์มากกว่าจูเนียร์ที่เพิ่งเรียนจบ และกระดาษแผ่นเดียวที่บอกว่า “พิสูจน์ความรู้แล้ว” ก็ดูจะไม่เพียงพอมากขึ้นเรื่อยๆ
นี่เป็นครั้งแรกที่ผมเห็นแนวทางที่ไม่พยายามแยกการศึกษาออกจากความเป็นจริง สุดท้ายแล้วคนที่จะได้งานก็คือนักศึกษาที่สามารถผสาน AI เข้ากับงานได้อย่างมีประสิทธิภาพ ขณะเดียวกันก็เข้าใจจริงว่าตัวเองกำลังทำอะไรอยู่ และเป้าหมายของโรงเรียนก็ควรจะเป็นแบบนั้นในที่สุด
มันดูเหมือนคัดลอก agent.md ของ Carson ที่ดังจาก HTMX เมื่อ 5 เดือนก่อนมาแบบค่อนข้างใกล้เคียง
https://gist.github.com/1cg/a6c6f2276a1fe5ee172282580a44a7ac
https://cs336.stanford.edu/
ดูเหมือนว่าจะอิงจากสิ่งที่ฉันเคยโพสต์ไว้ก่อนหน้านี้
https://gist.github.com/1cg/a6c6f2276a1fe5ee172282580a44a7ac
cs336.stanford.eduฉันลืมใส่เพิ่มเข้าไปอยากรู้ว่าหลังจากนั้นคุณมีข้อสังเกตอะไรเพิ่มเติมเกี่ยวกับ AI และการศึกษาบ้างไหม
ถ้าคลาสให้ Harness แบบปรับแต่งเฉพาะที่ใช้แทนตำราได้ และสิ่งนี้เป็นส่วนหนึ่งของชุดคำสั่งภายในนั้น ก็น่าจะเป็นแนวทางที่น่าสนใจ
แต่ถ้าเป็นไฟล์แยกที่ให้นักศึกษาเอาไปใส่ในเอเจนต์ของตัวเองต่างหาก ก็ดูมีโอกาสต่ำที่จะได้ผลดี
ดูเหมือนว่าคนนอกวงการศึกษาจะประเมิน พลังของการสอบ ต่ำเกินไป ในคลาสล่าสุดที่ผมสอน ความต่างระหว่างกรณีมีสอบกับไม่มีสอบชัดมาก
ถ้ามีสอบ นักศึกษาจะอ่านมากขึ้นมาก และเพราะอย่างนั้นโอกาสที่จะได้เรียนรู้จริงก็สูงขึ้น
ชอบตรงที่นำเสนอสิ่งนี้เป็น CLAUDE.md
เนื้อหาเดียวกันนี้ก็ใส่ซ้ำไว้ใน AGENTS.md ด้วย หวังว่า Anthropic จะรีบสอนให้ Claude Code ตรวจไฟล์นั้นด้วยเหมือนกัน
ทุกรีโปที่มีไฟล์นั้นก็กลายเป็นโฆษณาฟรี
ดูเป็นจุดสมดุลที่ค่อนข้างสมจริง ระหว่างการห้าม coding agent โดยสิ้นเชิงกับการยอมรับ จิตวิญญาณของการศึกษาระดับอุดมศึกษา
การเจอบาดแผลสะสมจากการดีบัก ทั้งกรณีที่คอมไพล์ผ่านแต่มีพิมพ์ผิด หรือวาง comma กับวงเล็บผิดที่ สอนบางอย่างที่ยากจะทดแทนได้ แต่ถ้าสามารถแทนที่สิ่งนั้นด้วย การเรียนรู้อย่างยั่งยืน ที่ไม่ล้าสมัยไปตามเวลาได้ ก็เป็นประโยชน์อย่างชัดเจน
น่าสนใจ แต่ไม่แน่ใจว่าจะบังคับใช้ แนวทางสำหรับ AI agent อย่างไร เพราะนักศึกษายังสามารถใช้โมเดลนอกหลักสูตรเพื่อหลบเลี่ยงแนวทางได้เสมอ
การส่งเสริมความซื่อสัตย์ทางวิชาการมีประโยชน์ แต่ผู้เรียนก็ต้องยอมรับด้วยว่าตนจ่ายเงินเพื่อการศึกษา ไม่ใช่เพียงเพื่อปริญญา นี่เป็นปัญหาที่ยาก และผมก็สงสัยอยู่เสมอว่าภาควิชาวิทยาการคอมพิวเตอร์จะผสาน AI เข้ากับหลักสูตรอย่างไร พร้อมกับส่งเสริมการใช้อย่างเหมาะสมในสภาพแวดล้อมการเรียนรู้
แต่ก็ไม่ได้แปลว่าแนวทางนี้ไม่มีคุณค่า ตรงกันข้าม ผมคิดว่ามันมีคุณค่ามากทีเดียว
วิธีบังคับใช้ทางอ้อมอย่างหนึ่งคือ การสอบปากเปล่า ที่ผู้สอนกับนักศึกษามานั่งดูผลงานแล้วพูดคุยกัน นักศึกษาที่ใช้ AI อย่างจริงจังในฐานะเครื่องมือการเรียนรู้ผ่านแนวทางเหล่านี้ จะทำการสอบปากเปล่าได้ดีกว่านักศึกษาที่ใช้ AI เป็นตัวสร้างคำตอบมาก
ปีการศึกษาที่แล้วผมนำการสอบปากเปล่ามาใช้ในวิชาที่สอนโดยไม่มีแนวทางดังกล่าว และมันได้ผลค่อนข้างดี ภาคการศึกษาหน้าผมตั้งใจจะใส่แนวทางสำหรับ agent เข้าไปพร้อม guardrail ที่ชัดเจนขึ้น ท้ายที่สุดมันคงยังเป็นทางเลือก แต่คนที่เลือกจะเพิกเฉยก็น่าจะเห็นได้ค่อนข้างชัดระหว่างการสนทนา
ในทางกลับกัน ถ้าถูกจับได้ว่าโกงก็จะไม่มีโอกาสครั้งที่สอง ถ้าจะบังคับใช้อย่างจริงจัง ผมคิดว่าที่นี่ก็น่าจะใช้แนวทางเดียวกันได้
แต่ปริญญามีคุณค่าและผลกระทบในโลกจริง ดังนั้นถ้าปล่อยให้คนที่ไม่มีความสามารถไปทำงานอันตราย ชีวิตของผู้บริสุทธิ์ก็อาจตกอยู่ในความเสี่ยง เป็นเรื่องยาก แต่หวังว่าเมื่อเวลาผ่านไป เราจะเรียนรู้วิธีอยู่ร่วมกับเทคโนโลยีใหม่นี้ได้