การตัด tool output ให้เหลือเฉพาะ field ที่เกี่ยวข้อง
แนวคิด
ผลลัพธ์จาก tool ไม่ได้หายไปหลังใช้งาน มันสะสมอยู่ใน context window เหมือนข้อความอื่น ๆ และปัญหาคือมันมักกิน token เยอะเกินกว่าคุณค่าที่แท้จริง ลองนึกถึง tool ที่ค้นออร์เดอร์แล้วคืนกลับมา 40 กว่า field ทั้งที่งานตรงหน้าต้องใช้แค่ 5 field ที่เกี่ยวกับการคืนสินค้า อีก 35 field ที่เหลือคือ token ที่นั่งกินพื้นที่ไปเปล่า ๆ
เทคนิคคือตัด verbose tool output ให้เหลือเฉพาะ field ที่เกี่ยวข้อง "ก่อน" ที่มันจะสะสมเข้า context ถ้างานคือการคืนสินค้า ก็เก็บเฉพาะเลขออร์เดอร์ วันที่สั่ง สถานะ ยอดเงิน และสิทธิ์คืนสินค้า ทิ้งที่อยู่จัดส่ง ประวัติการตลาด และ metadata ภายในที่ไม่เกี่ยว การตัดนี้ทำที่ชั้น agent หรือ hook ก่อนป้อนผลกลับให้โมเดล
นี่ต่างจากการเลือก tool ที่ดี ตรงที่แม้ tool จะถูกต้องแล้ว output ของมันก็ยังอาจใหญ่เกินจำเป็น การตัดจึงเป็นงานคนละชั้นกับการเลือก tool คือเป็นการดูแลสิ่งที่ tool คืนกลับมา ไม่ใช่การเลือกว่าจะเรียก tool ไหน
ทำไมสำคัญ
เอกสาร context windows ย้ำว่าทุกอย่างในคำขอนับรวมเข้า context ทั้ง system prompt ข้อความ และผลลัพธ์ tool และยิ่ง token มาก ความแม่นยำยิ่งเสื่อมแบบ context rot ถ้าปล่อยให้ผล tool ดิบ ๆ 40 field ทับถมกันหลายรอบเรียก context จะบวมเร็วมาก ทั้งเปลืองค่าใช้จ่ายและทำให้ finding สำคัญถูกกลบ
สำหรับ agentic workflow ที่เรียก tool เยอะ docs มี context editing เป็นกลไกช่วย คือกลยุทธ์ clear_tool_uses ที่ล้างผล tool เก่าออกอัตโนมัติเมื่อ context โตเกิน threshold ที่ตั้งไว้ และแทนที่ด้วยข้อความ placeholder ให้โมเดลรู้ว่ามีของถูกล้างไป จุดนี้ต้องแยกให้ออกจากการตัด field คือ context editing ล้าง "ผลเก่าทั้งก้อน" ตามอายุ ส่วนการตัด field ลด "ขนาดของแต่ละผล" ตั้งแต่ตอนที่มันเข้ามา สองอย่างนี้เสริมกัน ไม่ใช่แทนกัน
สิ่งที่ต้องเข้าใจให้ลึกคือ การตัดตั้งแต่ต้นทางได้ผลกว่าการล้างทีหลัง เพราะผลที่ตัดแล้วจะเล็กตั้งแต่แรก ทำให้ context โตช้าลง threshold ของ context editing ถูกแตะช้าลง และโมเดลเห็นแต่ field ที่เกี่ยวข้องจริง ลดโอกาสที่มันจะเสียสมาธิไปกับข้อมูลที่ไม่เกี่ยว docs ยังแนะนำให้ออกแบบผลลัพธ์ tool ให้คืนเฉพาะข้อมูลที่ high-signal คือให้ตัว tool เองคืนของที่กระชับตั้งแต่แรกถ้าทำได้
ตัวอย่าง
ผลดิบจาก lookup_order (40+ field):
{ order_id, customer_id, items[...], shipping_address, billing_address,
marketing_flags, internal_notes, warehouse_code, ... , status, total, refund_eligible }
หลังตัดให้เหลือเฉพาะที่เกี่ยวกับการคืนสินค้า:
{ order_id: "TH-88231", order_date: "2026-06-02",
status: "delivered", total_thb: 1240, refund_eligible: true }
จาก 40 กว่า field เหลือ 5 field context บวมช้าลงมาก และโมเดลเห็นเฉพาะสิ่งที่ต้องใช้
เช็คความเข้าใจ
ทำไมผลลัพธ์ tool จึงกิน token มากเกินคุณค่าที่แท้จริง และควรทำอย่างไร
การตัด field ต่างจาก context editing แบบ clear_tool_uses อย่างไร