1 คะแนน โดย GN⁺ 2 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • HANDBOOK.md เป็นเบนช์มาร์ก 65 งานที่วัดว่าขั้นตอนการทำงานยาว 20–124 หน้าสามารถจำกัดพฤติกรรมของเอเจนต์ได้หรือไม่ แม้ในงานระยะยาวและงานที่ใช้หลายเครื่องมือ
  • ในสภาพแวดล้อมด้านการเงิน การเคลมการแพทย์ ประกันภัย โลจิสติกส์ และทรัพยากรบุคคล ได้เปลี่ยน ผู้มีอำนาจอนุมัติ·ค่าเกณฑ์·ขั้นตอน ในแต่ละงาน เพื่อบังคับให้เอเจนต์อ่านเอกสารนั้นโดยตรงแทนการนำกฎที่คุ้นเคยกลับมาใช้ซ้ำ
  • จากการประเมินการตั้งค่าโมเดล 30 แบบจากผู้ให้บริการ 11 ราย พบว่าในการ ให้คะแนนแบบเข้มงวด ที่ต้องผ่านทุกเกณฑ์ การตั้งค่าที่ดีที่สุดก็ได้เพียง 36.2% และการตั้งค่าแนวหน้าส่วนใหญ่อยู่ต่ำกว่า 25%
  • เอเจนต์แสดงรูปแบบซ้ำ ๆ เช่น ให้ความสำคัญกับคำขอในสภาพแวดล้อมมากกว่านโยบายระดับสูงกว่า, เพิกเฉยต่อผลการตรวจสอบที่บังคับ, ทำกฎหายไประหว่างงานยาว ๆ หรือ รายงานว่าสอดคล้องแล้ว ทั้งที่ยังไม่ปฏิบัติตามครบ
  • หากยอมให้ละเมิดเกณฑ์ได้เพียงข้อเดียว คะแนนของโมเดลชั้นนำจะเพิ่มขึ้นเกือบสองเท่า แสดงว่าแม้จะทำงานส่วนใหญ่สำเร็จ ก็ยังอาจพลาด ข้อกำหนดสำคัญเพียงข้อเดียว ที่มีผลชี้ขาดในสภาพแวดล้อมจริง

เบนช์มาร์กที่จำลองงานองค์กร

  • HANDBOOK.md ประเมินโดยตรงว่าเอกสารนโยบายระยะยาวสามารถควบคุมพฤติกรรมถัดไปของเอเจนต์ได้จนจบหรือไม่
    • เบนช์มาร์กเดิมมักวัดแค่ การบรรลุเป้าหมาย เช่น การแก้ issue การท่องเว็บไซต์ หรือการทำเวิร์กโฟลว์ให้เสร็จ
    • ยังประเมินไม่เพียงพอว่าเอกสารยาวที่มีผลผูกมัดจะยังจำกัดพฤติกรรมได้หรือไม่ เมื่อขัดกับคำขอเฉพาะหน้าทันที
    • การประเมินการปฏิบัติตามนโยบายก่อนหน้านี้ใช้ policy ที่สั้นและซ้ำ ๆ ทำให้มีโอกาสที่โมเดลจะเรียนรู้กฎจากการเห็นซ้ำ โดยไม่ต้องอ่านเอกสารปัจจุบัน
  • งานทั้ง 65 ครอบคลุม 5 โดเมน ได้แก่ การเงิน การเคลมการแพทย์ ประกันภัย โลจิสติกส์ และทรัพยากรบุคคล รวมถึงบริษัทสมมติ 10 แห่ง
    • แต่ละสภาพแวดล้อมมีพื้นที่ทำงานที่มีสเปรดชีต PDF และเอกสาร Office พร้อมบริการจำลองอย่างอีเมล, Slack, ปฏิทิน, Jira และ Shopify
    • บริการภายนอกถูกให้มาเป็นเครื่องมือ Model Context Protocol(MCP)
    • พรอมป์ต์เป็นงานประจำวันทั่วไป เช่น “ประมวลผลอีเมลที่ยังไม่ได้อ่านของวันนี้ตาม SOP” โดยความยากไม่ได้มาจากคำขอ แต่มาจากเอกสารที่ควบคุมคำขอนั้น
  • ขั้นตอนปฏิบัติงานมาตรฐานเป็นเอกสารยาว 20–124 หน้า ที่ผู้เชี่ยวชาญแต่ละโดเมนเขียน และให้มาในรูปแบบ PDF, Word และ HTML
    • เอเจนต์ต้องค้นหาข้อกำหนดที่เกี่ยวข้อง และต้องจำมันไว้ตลอดการอนุมานเฉลี่ยราว 17 ขั้นกับการเรียกใช้เครื่องมือ 30 ครั้ง
    • ต้องใช้ทั้งการกระทำที่จำเป็นและเงื่อนไขที่นโยบายกำหนดให้หยุดอย่างแม่นยำ
  • มีการสร้าง handbook พื้นฐาน 10 ชุด ชุดละ 2 ชุดต่อโดเมน และเปลี่ยนชื่อผู้มีอำนาจอนุมัติ ค่าเกณฑ์ และรายละเอียดขั้นตอนในทุกงาน
    • เพราะนโยบายต่างกันในแต่ละงาน จึงแก้ไม่ได้ด้วยแค่ การจับคู่รูปแบบ กับกฎที่คุ้นเคย
  • มีเกณฑ์แบบโปรแกรม 824 รายการที่ตรวจสถานะสุดท้ายของพื้นที่ทำงานและบริการภายนอกทั้งหมด
    • EXPECTED-OUTPUT ใช้ตรวจว่าได้ดำเนินการตามที่นโยบายกำหนดหรือไม่
    • INCORRECT-BEHAVIOR ตรวจทั้งพฤติกรรมต้องห้ามและผลข้างเคียงที่ไม่ได้ร้องขอ รวมถึงเงื่อนไขจำนวนครั้งอย่างแม่นยำ
    • การให้คะแนน ไม่ใช้ LLM judge
  • งานถูกจัดให้เป็นสภาพแวดล้อมแบบคอนเทนเนอร์ที่รีเซ็ตได้ในรูปแบบ Harbor จึงใช้ได้ไม่เพียงเพื่อการประเมิน แต่ยังใช้เป็น สภาพแวดล้อมสำหรับ reinforcement learning ได้ด้วย

ผลการประเมินและความล้มเหลวที่เกิดซ้ำ

  • มีการประเมิน 30 การตั้งค่าโมเดลจากผู้ให้บริการ 11 ราย ด้วยฮาร์เนสเดียวกันที่อิงกับ OpenHands
    • ในการให้คะแนนแบบเข้มงวดที่ต้องผ่านทุกเกณฑ์ การตั้งค่า adaptive/max reasoning ของ Claude Fable 5 ได้สูงสุดที่ 36.2%
    • การตั้งค่า frontier model ส่วนใหญ่อยู่ต่ำกว่า 25%
  • หากอนุญาตให้พลาดได้หนึ่งเกณฑ์ คะแนนของการตั้งค่านำจะเพิ่มขึ้นเกือบสองเท่า
    • หมายความว่าเอเจนต์มักทำงานส่วนใหญ่สำเร็จ แต่พลาด เงื่อนไขบังคับเพียงข้อเดียว ที่อาจสำคัญมากในสภาพแวดล้อมจริง
  • ระหว่างความล้มเหลว มีรูปแบบคล้ายกันเกิดซ้ำโดยไม่ขึ้นกับโดเมน ตระกูลโมเดล หรือระดับความพยายามในการอนุมาน
    • ให้ความสำคัญกับคำขอที่ดูน่าเชื่อถือในสภาพแวดล้อมมากกว่านโยบาย
    • แม้จะทำการตรวจสอบที่บังคับแล้ว ก็ยังลงมือสวนทางกับผลตรวจนั้น
    • ระหว่างงานยาว ๆ ทำ รายละเอียดของกฎ เสียหายหรือทำหาย
    • ในรายงานสุดท้ายอ้างว่าปฏิบัติตามนโยบายแล้ว ทั้งที่จริงยังไม่ครบ
  • งานทั้งหมด สภาพแวดล้อม เกณฑ์การประเมิน และฮาร์เนส เผยแพร่ไว้ในคลังสาธารณะ
    • จึงสามารถใช้วัดสมมติฐานของสภาพแวดล้อมการใช้งานปัจจุบันที่เชื่อว่าเอเจนต์ซึ่งได้รับนโยบายระยะยาวจะปฏิบัติตามได้จนจบ

1 ความคิดเห็น

 
GN⁺ 2 시간 전
ความคิดเห็นจาก Hacker News
  • ถึงจะโฆษณาว่ารองรับ บริบท 1 ล้านโทเค็น ก็ไม่ได้หมายความว่าการใช้ได้ถึงระดับนั้นจะเป็นเรื่องเหมาะสมหรือทำงานได้ดีจริง
    ปัญหานี้น่าจะยังคงอยู่ต่อไปเพราะการควอนไทซ์โมเดลและ KV cache แบบสุดขั้ว รวมถึงตัวสุ่มตัวอย่างที่อ่อนและการตัดตัวเลือกการปรับแต่งออกไป
    มองว่าถ้าควบคุมการอนุมานเองแบบโลคัล ก็สามารถลดข้อบกพร่อง LLM ที่พบบ่อยได้มากพอสมควร

    • LLM แบบโลคัล ที่รันบนฮาร์ดแวร์ระดับผู้บริโภคก็มีข้อบกพร่องเดียวกัน และการปรับค่าตั้งก็ไม่ได้แก้ได้ทั้งหมด
      ถ้าจะโฮสต์ Kimi K3 เองซึ่งใกล้เคียงโมเดลแนวหน้าที่สุด ก็ต้องใช้งบประมาณเกือบเท่าราคาบ้านดี ๆ หลังหนึ่งในเมืองใหญ่
      ผมชอบโมเดลโลคัลและใช้งานจนสำนักงานร้อนจากความร้อนของเครื่องคำนวณ แต่การบอกว่า LLM โลคัลแก้ข้อบกพร่องทั่วไปทั้งหมดได้ก็เป็นแค่ความคิดเชิงwishful thinking
      ที่จริงแล้วทั้งโมเดลโลคัลและโมเดลขนาดใหญ่ที่รันในบ้านไม่ได้กลับมี การเสื่อมของประสิทธิภาพบริบทยาว หนักกว่าโมเดลแนวหน้า และแม้ใน fp16/bf16 ขีดจำกัดความยาวบริบทที่ใช้งานได้จริงก็ต่ำกว่า
    • ในองค์กรที่พัฒนา AI agent มีคำแนะนำให้ใช้หน้าต่างบริบทของโมเดลไม่เกิน 50% และสำหรับโมเดลบริบทใหญ่มากไม่ควรเกิน 25%
      เพราะฉะนั้นพอเห็นคำว่า “หน้าต่างบริบท 1 ล้านโทเค็น” ก็จะตีความว่าช่วงที่ใช้ได้จริงคือ 250,000 โทเค็น
    • ไม่เข้าใจว่าทำไมพอเป็นโมเดลโลคัลแล้วปัญหาถึงควรหายไป นี่ไม่ใช่ความต่างระหว่างคลาวด์กับโลคัล แต่เป็น ข้อบกพร่องของ LLM ทุกตัว และโมเดลโลคัลที่ทดสอบที่นี่ก็ล้มเหลวเหมือนกัน
    • สิ่งที่ benchmark แบบหาเข็มในกองฟางแสดงให้เห็น มีแค่ว่าในบริบทที่ขยายออกมานั้น “สามารถเข้าถึงหรือระบุตำแหน่ง” ส่วนนั้นได้ประมาณหนึ่ง
      แต่ไม่เข้าใจว่าทำไมถึงไม่พูดถึง จำนวน attention head กันเลย
      จำนวน head มีจำกัด และสิ่งที่โมเดลจะโฟกัสพร้อมกันได้ก็มีได้มากสุด N อย่าง จึงเลี่ยงไม่ได้ที่จะมีเพดานสำหรับการรองรับบริบทยาว
      ยิ่งบริบทยาวขึ้น ก็ยิ่งมีสิ่งที่สูญเสียโฟกัสได้มากขึ้น และภาระในการจัดการทรัพยากร head ต่อโทเค็นก็เพิ่มขึ้น
    • ปีที่แล้วผมทดสอบโมเดลควอนไทซ์ 4 บิต mxfp4 ของ GPT-OSS 20B ซึ่งอ้างว่าเป็น บริบท 128k แต่ความสามารถในการเรียกคืนเริ่มแย่ลงตั้งแต่ราว 32k ตัวอักษร
      ผมใส่แฮชง่าย ๆ ไว้หน้าข้อความเติมเต็มของไฟล์พจนานุกรม แล้วสั่งให้ตอนท้ายพรอมป์ต์คืนค่าแฮชนั้นอย่างเดียว แต่พอเกิน 32k ตัวอักษรก็เริ่มพิมพ์ตัวอักษรผิดหรือไม่ก็หลอนแฮชขึ้นมาทั้งก้อน
      แค่ขนาดบริบทที่ใหญ่ไม่ได้ใช้ตัดสินความสามารถ การทำตามพรอมป์ต์ หรือคุณภาพด้านอื่นได้
  • ถ้าโมเดลไหนทำคะแนน benchmark นี้ได้ดี ก็แทบอ้างได้ว่ามี ความสามารถเหนือมนุษย์ เพราะมนุษย์เองก็แย่มากกับการได้รับเอกสารนโยบายยาว ๆ แบบกะทันหันแล้วต้องนำไปใช้ตรงตัว
    ไม่ควรทำให้โมเดลดูเป็นมนุษย์เกินไป แต่สาเหตุของความล้มเหลวอาจคล้ายมนุษย์ก็ได้
    working memory มีจำกัด ความลึกของการใช้เหตุผลและจำนวนสิ่งที่โฟกัสพร้อมกันได้ก็มีขีดจำกัด และนโยบายในโลกจริงก็มักไม่ได้เขียนมาเพื่อให้บังคับใช้ตามเอกสารตรง ๆ หรือไม่ได้ระบุเงื่อนไขยกเว้นไว้อย่างเพียงพอ
    สำหรับคน เราใช้ กระบวนการที่เทียบได้กับ RLHF คือการฝึกด้วยสถานการณ์จำลองและฟีดแบ็กจากงานจริง
    ไม่มีใครคาดหวังว่าจะยื่นเอกสารนโยบาย 124 หน้าให้พนักงานใหม่ แล้วให้เขานำไปใช้ได้ถูกต้องตั้งแต่งานแรกหรือรักษาไว้ได้อย่างเสถียรตลอดเดือนแรก

    • มนุษย์มีข้อแตกต่างคือ เรียนรู้ได้
      ต่อให้วันแรกพนักงานใหม่ยังทำตามนโยบายองค์กรไม่ได้ แต่ผ่านไป 3 เดือนหรือ 3 ปี ก็ย่อมต่างออกไป
      ในทางกลับกัน ตอนนี้ยังไม่มีวิธีที่สมเหตุสมผลในการ fine-tune LLM โดยอัตโนมัติหรือปรับปรุงสภาพแวดล้อมการรัน เพื่อให้บรรลุเป้าหมายขององค์กรมากขึ้น
      มันยังคงถูกครอบงำโดยค่าน้ำหนักร่วมที่ปรับมาสำหรับสถานการณ์เฉลี่ย และนโยบายของสภาพแวดล้อมการรัน
    • นโยบายด้านพฤติกรรมควรอยู่ใน ค่าน้ำหนักของโมเดล ไม่ใช่ในบริบท KV cache ที่ยาวขึ้นเรื่อย ๆ
      แทนที่จะยัดเอกสารนโยบายเข้าไปในหน่วยความจำอันคับแคบ ก็ควรสะท้อนมันเข้าไปในค่าน้ำหนักเดิมผ่าน online learning หรือ post-training
      ผมสงสัยว่ามีวิธีล้างบริบทโดยคำนวณส่วนเปลี่ยนแปลงของค่าน้ำหนักจากบริบทที่คำนวณแล้วหรือไม่ โดยไม่ต้องทำ pretraining ต่อแบบพฤตินัยในทุกเทิร์นของการสนทนา
    • วิธีที่ได้ผลที่สุดกับคนคือ แทนที่จะต้องถือเอกสารเชิงประกาศทั้งหมดไว้ ก็ให้ดู สคริปต์ขั้นตอนการทำงาน รายงานานนั้น ๆ แล้วอ้างอิงเฉพาะส่วนที่เกี่ยวข้องของเอกสาร
      ถ้า AI ถูกนำไปใช้กับงานอย่างประกันภัยในรูปแบบคล้ายกัน ก็น่าจะทำงานได้ดีกว่ามาก
    • อาจเป็นเพราะในนโยบายมีความขัดแย้งและความกำกวมมากเกินไปหรือเปล่า มนุษย์เองก็ยังไม่ใช้กฎทุกข้อพร้อมกัน จึงพอทำงานได้
    • ถ้า AI จะเติบโตในที่ทำงานได้ มันต้องทำตามขั้นตอนอย่างเคร่งครัดตามตัวอักษร แต่ Claude Code กลับลืมคำสั่งว่า “อย่า commit” ตั้งแต่เทิร์นที่สอง
      Claude Code เป็นสภาพแวดล้อมการรันแบบทั่วไปที่ไม่ค่อยดีซึ่งครอบอยู่บนโมเดลชั้นยอด จึงไม่เหมาะกับขั้นตอนราชการแบบเป็นพิธีรีตอง และดูเหมือนความสามารถของมันก็แย่ลงเรื่อย ๆ หลังจากจุดสูงสุดที่ Opus 4.6
  • Claude ทำตามคำสั่งได้ดีมากอยู่ประมาณ 10 นาที แต่หลังจากนั้นก็ดูเหมือนจะไม่สนใจสิ่งที่บอกไปก่อนหน้า
    ต่อให้ใส่คำสั่งที่ชัดเจนและหนักแน่นไว้ใน CLAUDE.md เช่น อย่าเขียนคอมเมนต์ยาว ๆ และให้ใช้ฟังก์ชันที่มีอยู่แล้ว แต่พอทำงานจริงกลับข้ามมันไปอย่างน่าตกใจเร็วมาก
    ในทางกลับกัน ถ้าคอยเตือนซ้ำด้วยพรอมป์ต์ระหว่างทำงานจะทำได้ดีกว่ามาก
    บางครั้งก็ทำตามได้ดี บางครั้งก็เมินเฉยจนพังไปเลย เลยพยายามกดความอยากที่จะเพิ่มกฎเข้าไปใน CLAUDE.md เรื่อย ๆ

    • สิ่งที่บทความพูดถึงไม่ใช่อาการลืมพรอมป์ต์เมื่อห้าเทิร์นก่อน แต่คือ การปฏิบัติตามเอกสารนโยบาย
      ในทางกลับกัน การคอยเพิ่มรายการลงใน CLAUDE.md นั่นแหละที่ใกล้เคียงกับประเด็นของบทความมากกว่า
    • ผมได้ผลดีจากการใส่ไว้ใน root Claude.md แค่ กฎระดับบนแบบ global ไม่กี่ข้อ แล้ววางกฎเฉพาะไว้ใน claude.md ระดับโมดูลของโฟลเดอร์ย่อย
      และยังใช้เทคนิค /code-review แบบกำหนดเองด้วยกฎเพื่อตรวจและบังคับใช้สิ่งที่พลาดไประหว่างการ implement
    • ผมมองว่าคำสั่งแบบคงที่ไม่ใช่เอกสารคู่มือสำหรับอ้างอิงต่อเนื่อง แต่ใช้เพื่อ ปรับโมเดลให้เป็นจุดเริ่มต้น ที่เหมาะกับประเภทโปรเจกต์นั้น
      ส่วนบทบาทในการทำให้สอดคล้องกับคำสั่งปัจจุบันอย่างต่อเนื่องเป็นหน้าที่ของสภาพแวดล้อมการรันสำหรับเขียนโค้ด และในโมเดลโลคัลความต่างนี้ชัดเจนเป็นพิเศษ
  • AI แบบเอเจนต์ เป็นความสามารถที่ถูกอัดใส่แบบประดิษฐ์ผ่านการทำ reinforcement learning ขนาดใหญ่ด้วยชุดข้อมูลเอเจนต์เฉพาะโดเมนที่สังเคราะห์ขึ้นในขั้น post-training
    ถ้าไม่ได้ post-train ด้วยคู่มือเฉพาะหรือกรณีการใช้งาน ก็จะทำงานได้ไม่ดีนัก เหตุผลที่ LLM เก่งงานเอเจนต์ด้านโค้ดเป็นพิเศษ ก็เพราะผู้สร้างเข้าใจเวิร์กโฟลว์นั้นอย่างลึกซึ้งและฝึกมันได้มากพอ
    ทางออกที่แท้จริงน่าจะเป็นการปรับจูนละเอียดได้ง่ายตามกรณีใช้งานเอเจนต์ของแต่ละฝ่าย แต่บริษัทใหญ่คงต้องสร้างชุดข้อมูลขนาดมหาศาลเกี่ยวกับวิธีทำงานภายในของตนเอง และดูเหมือนไม่มีใครอยากเป็นคนเริ่มก่อน
    ในบริบทยาว การดึงโทเคนช่วงต้นกลับมาอย่างแม่นยำทำได้ยากเพราะการขยาย RoPE positional encoding และแม้แต่ Kimi หรือ DeepSeek ที่ไม่ใช้วิธีนี้ก็ยังบีบอัดบริบทช่วงต้นอย่างหนัก ทำให้ข้อมูลที่แม่นยำสูญหาย
    แนวทางพื้นฐานควรเป็นการจัดงาน แบบครั้งเดียวจบ ด้วย system prompt แบบแคชขนาดใหญ่และ user prompt ที่มีแต่ข้อมูลแบบไดนามิก แล้วใช้โมเดลที่ถูกที่สุดซึ่งทำงานนั้นได้ ควรสร้างกราฟพรอมป์ต์แบบครั้งเดียวจบที่ชัดเจนเป็นขั้นตอนก่อน แล้วค่อยใช้งานเอเจนต์เมื่อวิธีนั้นยังแก้ไม่ได้ ซึ่งแม่นยำกว่าและถูกกว่า แต่ก็ต้องลงมือมากกว่าการปล่อยให้ AI ทำทั้งหมด

    • สงสัยว่า กราฟพรอมป์ต์แบบครั้งเดียวจบ หมายถึงอะไรอย่างเป็นรูปธรรม
    • มนุษย์ก็มีข้อจำกัดด้านบริบทเหมือน AI เช่นกัน ตามเนื้อเพลงของ Kenny Rogers ที่ว่า “เคล็ดลับของการอยู่รอดคือรู้ว่าอะไรควรทิ้งและอะไรควรเก็บไว้”
      ความต่างคืออย่างน้อยมนุษย์ก็ยังพอจะตัดสินได้เป็นบางครั้งว่าข้อมูลไหนสำคัญกว่า และเก็บมันไว้เป็นลำดับแรกในบริบท
    • เคยคิดว่าสาเหตุที่ Claude Code เขียนโค้ดได้ดี เป็นเรื่องที่รู้กันทั่วไปอยู่แล้วว่า Anthropic ซื้อข้อมูลโค้ดจำนวนมากจากบริษัทอย่าง Mercor
  • ข้อสรุปของ “Lost in the Middle: How Language Models Use Long Contexts” https://arxiv.org/abs/2307.03172 ที่ออกมาเมื่อหลายปีก่อน ดูเหมือนว่ายังใช้ได้อยู่จนถึงตอนนี้
    นี่เป็นหนึ่งในข้อสังเกตสำคัญที่คล้ายกับ ข้อจำกัดของหน่วยความจำใช้งานของมนุษย์ ที่พูดถึงใน “Engineering for Bounded Cognition”

  • เอกสารนโยบายยาว ๆ ก็ยากสำหรับมนุษย์เช่นกัน ถ้าไม่ได้ฝึกเฉพาะทาง ก็ไม่มีทางจำคู่มือ HR 180 หน้า กฎหมายดับเพลิง กฎความปลอดภัยของ OSHA ระเบียบของ FCC และประมวลกฎหมายสหรัฐฯ ทั้งหมดได้
    ถ้าความเสี่ยงสูงถึงขั้นทำผิดแล้วอาจติดคุก ก็จะเลือก ไม่ลงมือทำ แม้นโยบายจะเปิดช่องข้อยกเว้นไว้ก็ตาม แต่ถ้าความเสี่ยงต่ำ ก็จะเมินนโยบายไปเลยเพื่อใช้ทางที่ง่ายที่สุด

    • ถ้าอย่างนั้นทางออกคืออะไร ดูเหมือนตรงนี้จะขาดเรื่อง ดุลยพินิจ ไป และก็ไม่แน่ใจว่าจำเป็นต้องมีโมเดลแยกสำหรับตัดสินดุลยพินิจหรือไม่
  • โกรธที่ AI ฝ่าฝืนกฎที่เขียนไว้เรื่อย ๆ เลยให้ Claude ไล่ดูบันทึกของตัวเอง แล้วพบว่า พอฝ่าฝืนกฎหนึ่งครั้ง ความน่าจะเป็นของการฝ่าฝืนเพิ่มเติมก็สูงขึ้น
    ตรงข้ามกับ few-shot learning ที่ทำให้มันทำตามตัวอย่างที่ดี ดูเหมือนว่ายิ่งมีการฝ่าฝืนกฎและการแก้ไขสะสมอยู่ในบริบทมากเท่าไร ก็ยิ่งเพิ่มโอกาสที่จะฝ่าฝืน
    ลองเปิดเซสชันใหม่แล้วทดสอบสั้น ๆ โดยใส่กฎไว้ในพรอมป์ต์หรือใน CLAUDE.md หรือไม่ใส่เลย พบว่าในเซสชันใหม่ Opus 4.8, 5 และ Fable ทำตามได้ดีทั้งหมดไม่ว่าจะวางไว้ตรงไหน แม้แต่ Opus 4.8 ที่ปกติฝ่าฝืนกฎเป็นประจำในการคุยทั่วไปก็เช่นกัน
    เคยสงสัยว่าบริบทยาวทำลายการทำตามกฎ แต่พิสูจน์ไม่ได้เพราะยากจะสร้างบทสนทนายาวแบบเดิมซ้ำ งานวิจัยนี้ช่วยคลายข้อสงสัยได้ แม้โมเดลจะรันการตรวจสอบกฎและหาการฝ่าฝืนได้อย่างแม่นยำ ส่วนคำบรรยายก็ยังอาจยืนกรานกับผลลัพธ์ผิดเดิม
    ตอนนี้เลยแก้ด้วย hook แยกหรือการตรวจหลังบ้านแทน เพราะถ้าให้โมเดลแก้เองระหว่างการสร้าง มันอาจปฏิเสธข้อผิดพลาดตามกฎที่ตัวเองหาเจอในส่วนคำบรรยายหรือผลลัพธ์หลัก

    • ก่อนยุค LLM ก็มีปัญหา พื้นที่ที่ยังไม่ถูกปิดกั้นที่อยู่ใกล้ที่สุด อยู่แล้ว คือพอปิดปัญหาหนึ่งได้ ก็จะเจอปัญหาข้างเคียงหรือเส้นทางอื่นที่วนกลับมาสู่ปัญหาเดิมทันที
      โมเดลสามารถเรียนรู้พฤติกรรมระยะยาวใหม่ได้ จึงยากที่จะปรับแค่พฤติกรรมโดยไม่เปลี่ยนบริบทมากนัก
  • ใน Claude พอลองใช้ inject_rules.py ที่อ่าน RULES.md แล้วแปะไว้หน้าทุกพรอมป์ต์เป็น hook UserPromptSubmit ก็พบว่าอาการที่กฎเลือนหายเมื่อบริบทเต็มลดลง
    แม้จะกินโทเคนพรอมป์ต์เร็วขึ้นเล็กน้อย แต่การใช้โทเคนรวมกลับลดลง และใช้กับ Pro ได้ด้วย ไม่สมบูรณ์แบบแต่ดีกว่าเดิม และการล้างหน่วยความจำเพื่อไม่ให้ Claude แต่งเรื่องที่ขัดกับพฤติกรรมที่ต้องการก็ช่วยได้เช่นกัน
    RULES_PATH ชี้ไปที่ RULES.md และอ่านด้วย encoding='utf-8-sig' เพื่อลบ BOM จากนั้นก็ส่ง JSON ไปยัง standard output โดยให้ hookSpecificOutput.hookEventName = "UserPromptSubmit" และใส่กฎทั้งหมดไว้ใน additionalContext
    ในคำนำระบุว่ากฎยังมีผลในรอบนี้ด้วย และให้รันการตรวจสอบทั้งห้าของกฎข้อ 33 ก่อนจะยกเรื่องที่ไม่ได้ถูกร้องขอขึ้นมา ถ้าเกิด OSError ก็ให้คืนค่า 0 แบบเงียบ ๆ เพื่อให้รอบนั้นดำเนินต่อได้แม้ไม่มีไฟล์กฎ

    • สงสัยว่าเมื่อเทียบกับวิธีตรวจเอาต์พุตด้วย response hook แล้วค่อยฉีดกฎเฉพาะตอนที่ผลลัพธ์เริ่มออกนอกเส้นทาง วิธีนี้มีข้อดีอะไรบ้าง
  • บทความนี้ชี้ให้เห็นถึงปัญหาที่อาจเกิดขึ้นกับ การพัฒนาแบบอิงสเปก ขนาดใหญ่ด้วย ปัญหาที่ช่วงหลังยังอธิบายชัดไม่ได้คือการที่การอิมพลีเมนต์ของเอเจนต์ค่อย ๆ หลุดออกจากสเปก

    • เจออาการเดียวกันและเริ่มเรียกมันว่า vision drift
      ตัวติดตาม issue ที่ทำเองรองรับการ time travel ของบอร์ด จึงเหมาะกับปัญหานี้มาก ใช้คำสั่งอย่าง :replay 4h เพื่อดูได้ในพริบตาว่าเวิร์กโฟลว์เปลี่ยนไปอย่างไรในช่วงเวลาที่ผ่านมา และ checkout กลับไปยังสถานะก่อนหน้าที่ต้องการได้
      รายละเอียดอยู่ใน https://dev.to/ljtn/vision-drift-addressing-the-next-problem...
    • drift ระหว่างสเปกขนาดใหญ่กับการอิมพลีเมนต์ของเอเจนต์นั้นรุนแรงมาก ลองทดสอบมาเยอะแล้ว แต่ไม่ว่าโมเดลแบบไหน Fable หรือ Sol ก็ยังหลุดและตกหล่นรายละเอียดจำนวนมาก
      กำลังพัฒนา http://engine.build เพื่อปิดช่องว่างระหว่างสเปกกับการอิมพลีเมนต์ และทำให้การอิมพลีเมนต์สอดคล้องกับสเปก แม้จะไม่ให้ความพึงพอใจแบบเดียวกับการลงมือแก้ปัญหาซับซ้อนด้วยโค้ดโดยตรง แต่การเขียนสเปกที่ชัดเจนและคิดปัญหาอย่างลึกซึ้งก็ทำให้พึงพอใจได้มากเหมือนกัน
  • เจอพฤติกรรมนี้เมื่อหลายเดือนก่อนตอนที่ใช้ Sonnet 4.6 ในโปรเจกต์ส่วนตัวได้ตั้งกฎที่เข้มงวดกับคอมเมนต์ในโค้ดเพื่อลดจำนวนโทเค็น
    ตั้งแต่เวอร์ชันหนึ่งเป็นต้นมา Claude เริ่มเพิกเฉยต่อคำสั่งที่ระบุไว้อย่างชัดเจนใน CLAUDE.md และแทรก คอมเมนต์ขนาดมหึมา ที่อ้างถึงทิกเก็ตและงานอื่นที่ไม่เกี่ยวข้อง
    หลังจากนั้นก็พัฒนาเหมือนผู้จัดการหน้างานในสายการประกอบรถยนต์ โดยให้เซสชันหลักทำงานตามความรู้จาก CLAUDE.md เป็นต้น และให้ซับเอเจนต์หลายตัวที่เชี่ยวชาญเฉพาะทางสูงรับผิดชอบเพียงประเด็นเดียว เพื่อบังคับใช้กฎอย่างการห้าม/ลดคอมเมนต์ให้น้อยที่สุด หรือสะท้อนกฎเหล่านั้นในผลลัพธ์สุดท้าย