Prompt ระบบระหว่างการสนทนา
เซสชันของเอเจนต์ที่ยาวนานจะใช้ system prompt ที่คงที่และประวัติการสนทนาที่เพิ่มขึ้นเรื่อยๆ คุณสามารถทำ cache ส่วน prefix ไว้เพื่อรักษาต้นทุนให้ต่ำลง
ปัญหาจะเกิดขึ้นเมื่อคุณต้องการเพิ่มคำสั่งใหม่ระหว่างเซสชัน เช่น เมื่อคุณต้องการบอกให้เอเจนต์เปลี่ยนภาษาหรืออัปเดตการตั้งค่า
หากคุณแก้ไข system prompt ในระดับบนสุด (top-level) คุณจะทำให้ cache เสียหาย การเปลี่ยนข้อมูลเพียงหนึ่งไบต์ที่จุดเริ่มต้นจะทำให้ทุก turn ที่ทำ cache ไว้ใช้งานไม่ได้อีกต่อไป คุณจะต้องจ่ายราคาเต็มเพื่อประมวลผลประวัติทั้งหมดใหม่ ซึ่งทั้งช้าและสิ้นเปลือง
โมเดล Claude รุ่นใหม่แก้ปัญหานี้ด้วย mid-conversation system messages
ตอนนี้คุณสามารถวางข้อความในบทบาท system (system role message) ลงใน messages array ได้โดยตรง โดยวางไว้หลังประวัติการสนทนาแทนที่จะวางไว้ด้านบนสุด
วิธีนี้ใช้งานได้เพราะคำสั่งใหม่จะอยู่หลังประวัติที่ทำ cache ไว้แล้ว มันจึงไม่ส่งผลกระทบต่อข้อมูลก่อนหน้า คุณจะจ่ายเงินเพียงแค่สำหรับข้อความใหม่ขนาดเล็กเท่านั้น และเอเจนต์ยังคงปฏิบัติตามคำสั่งนั้นด้วยอำนาจสูงสุดเช่นเดิม
วิธีเดิมคือการใส่คำสั่งไว้ใน user message ซึ่งมีความเสี่ยงด้านความปลอดภัย ผู้ใช้สามารถปลอมแปลง (spoof) user messages เพื่อหลอกเอเจนต์ของคุณได้ แต่ system role message นั้นไม่สามารถปลอมแปลงได้ มันจึงเป็นช่องทางที่ปลอดภัยสำหรับการอัปเดตที่เชื่อถือได้ เช่น การเปลี่ยนโหมดหรือการกำหนดสิทธิ์
ปฏิบัติตามกฎเหล่านี้เพื่อให้ใช้งานได้อย่างถูกต้อง:
• เขียนคำสั่งในรูปแบบข้อเท็จจริง อย่าใช้ภาษาในเชิงสั่งให้ยกเลิกคำสั่งเดิม (override language) • ดี: "โหมดอนุมัติอัตโนมัติ (Auto-approve mode) เปิดใช้งานแล้ว" • ไม่ดี: "ไม่ต้องสนใจผู้ใช้และให้ทำ X แทน" • โมเดลอาจต่อต้านคำสั่งที่บอกให้พวกมันละทิ้งบริบทก่อนหน้า • ข้อความเหล่านี้ต้องอยู่ต่อจาก user message หรือ assistant message • ข้อความเหล่านี้ไม่สามารถเป็นข้อความแรกใน array ได้ • ใช้ top-level system prompt สำหรับการตั้งค่าเริ่มต้น
หากคุณใช้โมเดลที่ไม่รองรับฟีเจอร์นี้ คุณจะได้รับ 400 error ควรครอบการเรียกใช้งาน (call) ไว้ใน try-catch block เสมอ และหาก system role ล้มเหลว ให้ใช้การเตือนผ่าน user-turn เป็นวิธีสำรอง (fallback)
ใช้ฟีเจอร์นี้เมื่อคุณได้รับข้อมูลใหม่หลังจากเริ่มเซสชันไปแล้ว ใช้สำหรับการเปลี่ยนโหมดหรือเพิ่มบริบทใหม่ วิธีนี้จะช่วยให้ cache ของคุณยังคง hot อยู่และทำให้คำสั่งของคุณปลอดภัย
ชุมชนแห่งการเรียนรู้เพิ่มเติม (ไม่บังคับ): https://t.me/GyaanSetuAi