ทำไม Agent คุยนานแล้วเริ่มหลงประเด็น: ออก⁠แบบ Context และ Memory อย่างไร

ออก⁠แบบ Context และ Memory ให้ Agent ใช้ข้อมูลปัจจุบัน แยกข้อเท็จจริงจากข้อสันนิษฐาน เก็บที่มา และทำงานต่อโดยไม่ปะปนข้อมูลลูกค้า

โดย เผยแพร่ อัปเดต อ่านประมาณ 7 นาที

ภาพประกอบชั้นใส่บัตรข้อมูล สมุดปิด และบัตรงานปัจจุบันที่แยกวางด้านหน้า
ในบทความนี้
  1. เริ่มจากงานที่ข้อมูลเปลี่ยนระหว่างทาง
  2. กำหนดขอบเขตให้ความจำแต่ละชนิด
  3. ทำสรุปสำหรับงานถัดไป ไม่ใช่ย่อทุกอย่างให้เล็กลง
  4. ออก⁠แบบสิ่งที่ Agent ควรลืมด้วย
  5. ทดสอบการ⁠ทำงานต่อเมื่อข้อมูลเปลี่ยน

ลูกค้าเปลี่ยนสถานที่ส่งของระหว่างการคุยงานที่ยาวขึ้น แต่เมื่อถึงเวลาสรุป Agent กลับใช้ที่อยู่เดิมอย่างมั่นใจ ปัญหาอาจอยู่ที่ข้อมูลซึ่งถูกเลือกมาให้ตัด⁠สิน⁠ใจในรอบนั้น ไม่ใช่เพียงความ⁠สามารถในการเข้าใจข้อความล่าสุด การเพิ่มขนาด Context อย่าง⁠เดียวไม่ได้ช่วยตัดสินว่าข้อมูลรุ่นใดเป็นข้อมูลที่ควรใช้

สำหรับ Agent ในธุรกิจ Context คือข้อมูลที่นำมาใช้กับการ⁠ตัด⁠สิน⁠ใจครั้งปัจจุบัน ส่วน Memory คือข้อมูลที่เก็บไว้ใช้ภายหลัง ทั้งสองอย่างไม่ควรทำหน้าที่แทนระบบที่เป็นเจ้าของออร์เดอร์ การอนุ⁠มัติ หรือข้อมูลลูกค้า สิ่งที่ต้องออก⁠แบบคือการเลือกข้อเท็จจริงที่เกี่ยวข้อง รู้ที่มาและขอบเขต และเลิกใช้สมมติฐานที่หมดอายุแล้ว

เริ่มจากงานที่ข้อมูลเปลี่ยนระหว่างทาง

ลองดูตัวอย่างสมมติของงานติดตั้ง ลูกค้าเริ่มจากขอเข้าบริการวันธรรมดาที่สำนักงานใหญ่ ต่อมาเปลี่ยนเป็นสาขาและขอวันหยุด ขณะที่ช่างประเมินสถานที่เดิมไปแล้ว Agent ต้องเก็บผลประเมินเดิมเป็นประวัติ ระบุว่าการเปลี่ยนสถานที่ทำให้ส่วนใดใช้ต่อไม่ได้ และขอตรวจเวลานัดใหม่ การนำผลประเมินเก่ามารวมกับสถานที่ใหม่แล้วเสนอแผนทันทีจึงผิดในสาระสำคัญ

ก่อนเรียก​โ⁠ม⁠เ⁠ด⁠ล ให้ระบุว่าการ⁠ตัด⁠สิน⁠ใจขั้นถัดไปต้องรู้อะไร เช่น สถานที่ปัจจุบัน ช่วงเวลาที่ต้องการ เงื่อนไขที่ยังไม่ตกลง การยืนยันล่าสุด และนโยบายบริการ ประวัติแชททั้งหมดอาจมีข้อมูลเหล่า⁠นี้ แต่มีตัวเลือกที่ยกเลิกไปแล้วปะปนด้วย ระบบจึงควรมีข้อมูลเคสปัจจุบัน และเรียกข้อความหลักฐานมาเพิ่มเมื่อจำเป็น

แยกคำ⁠ขอล่าสุด ข้อเท็จจริงที่ยืนยันแล้ว ข้อสันนิษฐาน และข้อมูลประกอบออกจากกัน สิ่งที่​โ⁠ม⁠เ⁠ด⁠ล​ตีความเองต้องอยู่ในกลุ่มข้อสันนิษฐานจนกว่าจะ​ต⁠ร⁠ว⁠จ⁠ส⁠อ⁠บ การ⁠เขียนข้อความเดิมซ้ำในสรุปหลายรอบไม่ได้ทำให้ข้อความนั้นกลายเป็นข้อเท็จจริง

กำหนดขอบเขตให้ความจำแต่ละชนิด

LangGraph แยกสถานะระดับบทสนทนาออกจากข้อมูลที่เก็บข้ามบทสนทนา และมีตัวอย่างใช้ฐานข้อมูลรองรับการเก็บสถานะในระบบจริง ความแตกต่างนี้ช่วยเลือกวิธีจัดเก็บ แต่ตัว​แ⁠อ⁠ป​ยังต้องกำหนดว่าข้อมูลแต่ละรายการเป็นของลูกค้า ผู้ใช้ หรือโครงการใด เอกสาร Memory ของ LangGraph

ตัวอย่างขอบเขตและเงื่อนไขใช้ข้อมูลที่ Agent จำ
ข้อมูลที่เก็บที่ควรพิจารณาเงื่อนไขก่อนใช้ซ้ำ
คำ⁠ขอปัจจุบันและคำถามค้างสถานะของเคสเป็นเคสเดียวกันและข้อมูลรุ่นปัจจุบัน
สถานที่ส่งของที่ยืนยันแล้วระบบออร์เดอร์หรือข้อมูลลูกค้าหลักอ่านค่าปัจจุบันก่อนสั่งงานที่มีผลจริง
รูป⁠แบบการ⁠เขียนที่ผู้ใช้ชอบที่เก็บความชอบแบบมีขอบเขตผู้ใช้และวัตถุประสงค์ตรงกัน ข้อมูลยังใช้ได้
สิ่งที่ผู้ขายกล่าวอ้างหลักฐานพร้อมแหล่งที่มายังถือเป็นคำกล่าวอ้างจนกว่าจะตรวจ
การอนุ⁠มัติให้ทำรายการหนึ่งบั⁠น⁠ทึ⁠ก​การอนุ⁠มัติราย⁠ละเอียดตรงกับที่อนุ⁠มัติและผู้⁠อนุ⁠มัติมีสิทธิ์

การแยกเช่นนี้ช่วยป้องกันการนำความจำว่าเคยอนุ⁠มัติเมื่อสัปดาห์ก่อน มาใช้กับอีกออร์เดอร์ในวันนี้ Memory ช่วยค้นการอนุ⁠มัติเก่าได้ แต่ไม่ทำให้ขอบเขตการอนุ⁠มัติขยายตามไปด้วย เช่นเดียวกับการจำว่าลูกค้าชอบรับ​อี⁠เ⁠ม⁠ล ไม่ได้ให้สิทธิ์ส่งเอกสารลับไปยังที่อยู่ที่พบใน​ไ⁠ฟ⁠ล์

เอกสาร Long-term memory ของ LangChain อธิบายการจัดข้อมูลด้วย Namespace และ Key สามารถนำมาแบ่งตามลูกค้า ผู้ใช้ หรือโครงการได้ แต่ต้องตรวจสิทธิ์ในตัว​แ⁠อ⁠ป​ด้วย ชื่อ Namespace ที่​โ⁠ม⁠เ⁠ด⁠ล​ส่งมาไม่ใช่หลักฐานว่าผู้ใช้มีสิทธิ์อ่านข้อมูลกลุ่มนั้น เอกสาร Long-term memory ของ LangChain

ภาพประกอบเอกสารแผนเดิมที่ขีดฆ่าหนึ่งรายการ คู่กับแผนที่แก้แล้วและบัตรข้อมูลต้นทาง
ภาพประกอบแนวคิด: รักษาข้อสรุปปัจจุบันพร้อมที่มา และระบุข้อมูลเดิมที่เลิกใช้แล้ว

ทำสรุปสำหรับงานถัดไป ไม่ใช่ย่อทุกอย่างให้เล็กลง

สรุปการ⁠ทำงานควรทำให้เข้าใจขั้นถัดไปได้ สำหรับเคสติดตั้ง อาจประกอบด้วยเป้าหมาย ข้อมูลปัจจุบันที่ยืนยันแล้ว ตัวเลือกที่ยกเลิก คำถามค้าง งานที่ทำเสร็จ และแหล่งหลักฐาน เก็บรหัสและรุ่นข้อมูลให้ตรง หากเปลี่ยนสถานที่ ต้องรักษาความ⁠สัมพันธ์ด้วยว่าผลประเมินก่อนหน้าใช้ไม่ได้แล้ว สรุปที่สั้นลงแต่ทำความหมายส่วนนี้หายย่อมไม่ช่วยงาน

Anthropic อธิบายการย่อบริบทหรือ Compaction และการจดข้อมูลที่เก็บต่อ⁠เนื่อง เพื่อจัดการงานที่กินเวลาหลายรอบ วิธีเหล่า⁠นี้ช่วยลดข้อมูลในหน้าต่างปัจจุบัน แต่ผลลัพธ์ขึ้นกับสิ่งที่ยังเหลืออยู่หลังย่อ แนวทางจัดการ Context จาก Anthropic

กำหนดช่องข้อมูลในสรุปให้ชัด แทนการขอให้​โ⁠ม⁠เ⁠ด⁠ล​เขียนย่อหน้าอิสระเพียงอย่าง⁠เดียว ข้อเท็จจริงสำคัญควรมีแหล่งอ้างอิง สถานะยืนยัน และเวลาที่ปรับล่าสุด ส่วนหลักฐานเต็มเก็บแยกไว้ให้ย้อนดูได้ ผู้ตรวจจึงแก้ความคลุมเครือได้โดยไม่ต้องนำประวัติทั้งหมดกลับเข้า​โ⁠ม⁠เ⁠ด⁠ล

เมื่อข้อมูลเปลี่ยนมาก ให้สร้างส่วนที่ได้⁠รับผลกระทบใหม่จากข้อมูลหลัก ไม่ควรย่อสรุปเก่าต่อกันไปเรื่อย ๆ จนความไม่แน่นอนหายไปจากถ้อยคำ ก่อนสั่งงานสำคัญให้เทียบข้อมูลที่จะส่งกับค่าปัจจุบันอีกครั้ง ไม่ถือว่าสรุปที่เตรียมไว้ก่อนหน้านั้นยังถูกต้องเสมอ

ออก⁠แบบสิ่งที่ Agent ควรลืมด้วย

ความจำถาวรมีภาระดูแล ต้องกำหนดว่าใครแก้ความชอบที่​บั⁠น⁠ทึ⁠ก​ไว้ได้ ข้อสันนิษฐานควรมีอายุเท่าไร และเมื่อผู้ใช้ออกจากโครงการจะจัดการข้อมูลอย่างไร ระยะ⁠เวลาเก็บควรสอดคล้องกับวัตถุประสงค์ ไม่จำเป็นต้องเก็บทุกบทสนทนาตลอดไปเพื่อให้งานต่อ⁠เนื่อง

หน้า⁠จอแก้ความจำที่ใช้⁠งานได้ควรแสดงข้อมูลที่จำ แหล่งที่มา และส่วนที่นำไปใช้ เมื่อเจ้าหน้าที่เปลี่ยนหรือลบข้อมูล ต้องปรับสรุปหรือดัชนีค้นที่เกี่ยวข้องด้วย มิฉะนั้นหน้า⁠จออาจบอกว่าลบแล้ว แต่สำเนาเก่ายังคงมีผลต่อคำ⁠ตอบ

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

หากเป็นผู้⁠ช่วยที่หลายทีมใช้ร่วม⁠กัน ต้องทดลองเรื่องการแยกลูกค้าโดยตรง ลูกค้าคนละรายอาจใช้สินค้าชื่อเดียวกัน และพนักงานอาจชื่อคล้ายกัน ตัวตนต้องมาจากการ​ล็⁠อ⁠ก⁠อิ⁠น​และข้อมูลที่ตรวจแล้ว ไม่ใช่ให้​โ⁠ม⁠เ⁠ด⁠ล​เดาว่าบทสนทนาเก่าใดฟังดูเกี่ยวข้อง

ทดสอบการ⁠ทำงานต่อเมื่อข้อมูลเปลี่ยน

การ⁠ทดสอบความจำควรมากกว่าถามว่า Agent จำชื่อได้หรือไม่ ลองทำงานเคสเดิมต่อหลังระบบเริ่มใหม่ เปลี่ยนข้อกำหนดสำคัญ ถอนสิทธิ์ เพิ่มเอกสารเก่าที่ขัดแย้ง และให้ Agent ระบุว่ายังติดเรื่องใดอยู่ คำ⁠ตอบที่ถูกอาจเป็นการขอตรวจใหม่ ไม่ใช่ทำงานต่อทันที

ดูว่าใช้ข้อมูลยืนยันล่าสุด รักษาข้อจำกัดสำคัญ และไม่นำข้อมูลจากอีกเคสเข้ามาหรือไม่ ตรวจรายการที่จะส่งให้ระบบจริงด้วย การตอบรับว่าเปลี่ยนที่อยู่แล้วไม่มีประโยชน์ หากคำสั่ง​อั⁠ป⁠เ⁠ด⁠ต​ออร์เดอร์ยังเป็นที่อยู่เดิม

เก็บ​บั⁠น⁠ทึ⁠ก​บทสนทนา Context ที่เลือก การอ่านและเขียน Memory รวม⁠ถึงสถานะเคสหลังทำงานไว้ในพื้นที่​ต⁠ร⁠ว⁠จ⁠ส⁠อ⁠บ​ที่ควบคุมสิทธิ์ ปัญหาอาจเกิดจากข้อมูลต้นทางผิด ค้นเจอรุ่นเก่า หรือ​โ⁠ม⁠เ⁠ด⁠ล​ไม่ทำตามสรุปที่ถูกต้อง ซึ่งต้องแก้คนละจุด

หากผู้⁠ช่วยต้องค้นเอกสารภายในด้วย ให้ออก⁠แบบร่วม⁠กับ ระบบค้นความ⁠รู้ของธุรกิจ และหากหลายทีมแก้ข้อมูลเดียวกัน ควรกำหนดก่อนว่า ระบบใดเป็นเจ้าของข้อมูลแต่ละชุด

Talvyn Labs ช่วย​พั⁠ฒ⁠น⁠า​จากต้นแบบแชทให้เป็น AI Product ที่เก็บบริบทของเคส ดึงหลักฐานตามสิทธิ์ และผูกคำสั่งกับข้อมูลปัจจุบันได้ นำตัวอย่างบทสนทนาที่ผู้⁠ช่วยหลงประเด็น พร้อมระบบที่ใช้อยู่มาเริ่มงาน เราจะใช้ปัญหานั้นกำหนดขอบเขตความจำ กรณีทดสอบ และขั้น⁠ตอนใช้⁠งานที่ทีมต้องการจริง

พั⁠ฒ⁠น⁠า Agent ที่ตามงานต่อได้ แม้ข้อมูลเปลี่ยนระหว่างทาง

ให้ Talvyn Labs ออก⁠แบบบริบท ความจำ และการเชื่อมข้อมูลหลักจากเคสจริงของคุณ พร้อมเกณฑ์ตรวจว่าผู้⁠ช่วยใช้ข้อมูลล่าสุดและไม่ข้ามสิทธิ์

เริ่ม​พั⁠ฒ⁠น⁠า Agent สำหรับงานต่อ⁠เนื่อง

มีโจทย์ธุรกิจ ที่ต้องการ⁠ปรึกษา?

ไม่ว่าจะเป็น​เ⁠ว็⁠บ⁠ไ⁠ซ⁠ต์​ใหม่ การ⁠พั⁠ฒ⁠น⁠า​ผลิตภัณฑ์ หรือการ⁠เชื่อม⁠ต่อระบบ สามารถแจ้งราย⁠ละเอียดทาง​อี⁠เ⁠ม⁠ล เพื่อนัดเวลาปรึกษาได้

ข้อมูลเบื้อง⁠ต้นก็เพียงพอ ราย⁠ละเอียดอื่นสามารถหารือร่วม⁠กันได้ภายหลัง

ติดต่อเรา
ส่ง​อี⁠เ⁠ม⁠ล​ถึงเรา
hello@talvynlabs.com
Facebook