พื้นฐาน
Prompt Injection คืออะไร?
โมเดลภาษาไม่สามารถแยกแยะคำสั่งของคุณจากคำสั่งที่ซ่อนอยู่ในเนื้อหาที่มันอ่านได้อย่างน่าเชื่อถือ — เว็บเพจ เอกสาร หรือผลลัพธ์จากเครื่องมือ Prompt Injection คืออะไรจริงๆ ทำไมโมเดลที่ฉลาดกว่าจึงแก้ปัญหานี้ไม่ได้ทั้งหมด และอะไรที่จำกัดความเสียหายเมื่อมันเกิดขึ้น
บทความทั้งหมด · ตรวจสอบล่าสุด:
สองรูปแบบ: โดยตรงและโดยอ้อม
การฉีดโดยตรงคือมีคนพิมพ์คำสั่งลงในแชทโดยตรงเพื่อพยายามลบล้างพฤติกรรมที่ระบบตั้งใจไว้ — ขอให้โมเดลเพิกเฉยต่อคำสั่งของมัน เปิดเผยการตั้งค่าที่ซ่อนอยู่ หรือทำงานนอกขอบเขตที่ตั้งใจไว้ การฉีดโดยอ้อมเป็นรูปแบบที่ส่งผลร้ายแรงกว่า คือคำสั่งที่ฝังอยู่ในเนื้อหาที่โมเดลอ่านแทนคุณ — เว็บเพจ อีเมล ไฟล์ การตอบกลับจาก API — ที่ไม่เคยตั้งใจให้โมเดลถือเป็นคำสั่ง แต่โมเดลไม่มีวิธีที่น่าเชื่อถือในการแยกมันออกจากคำสั่ง
ทำไมโมเดลที่ฉลาดกว่าจึงแก้ปัญหานี้ด้วยตัวเองไม่ได้
ปัญหาไม่ได้อยู่ที่โมเดลฉลาดไม่พอ — มันเป็นเรื่องของสถาปัตยกรรม ทุกอย่างที่โมเดลเห็น ไม่ว่าจะเป็นคำขอของคุณหรือข้อความที่ดึงมาจากแหล่งที่ไม่น่าเชื่อถือ กลายเป็นลำดับโทเค็นชนิดเดียวกันทันทีที่เข้าสู่หน้าต่างบริบท ไม่มีช่องทางแยกต่างหากที่ป้องกันการปลอมแปลงสำหรับ "คำสั่งที่เชื่อถือได้" เทียบกับ "เนื้อหาที่ต้องอ่าน" โมเดลที่มีความสามารถมากกว่าอาจเก่งขึ้นในการจดจำถ้อยคำการฉีดทั่วไป แต่คำสั่งที่พรางตัวได้ดีพอ — กระจายอยู่ในข้อความ พูดโดยอ้อม ซ่อนอยู่ในการจัดรูปแบบ — ก็ยังลอดผ่านได้ เพราะสถาปัตยกรรมพื้นฐานไม่มีขอบเขตที่เข้มงวดให้บังคับใช้
ความเสี่ยงเพิ่มขึ้นอย่างมากเมื่อโมเดลสามารถเรียกใช้เครื่องมือได้
แชทบอทที่สร้างแค่ข้อความจำกัดการฉีดไว้แค่ผลลัพธ์ที่แย่หรือทำให้เข้าใจผิด — น่ารำคาญ แต่จำกัดวง เมื่อโมเดลสามารถเรียกใช้เครื่องมือได้ (ดู การเรียกใช้เครื่องมือ AI ทำงานอย่างไร) — ส่งอีเมล รันคำสั่ง แก้ไขไฟล์ — การฉีดที่สำเร็จอาจกลายเป็นการกระทำจริงที่ไม่พึงประสงค์ ไม่ใช่แค่ประโยคที่แย่ นี่คือเหตุผลที่ระบบที่รวมการท่องเว็บหรือการอ่านเอกสารเข้ากับการเข้าถึงเครื่องมือมีความเสี่ยงจากการฉีดมากกว่าแชทบอทธรรมดาอย่างชัดเจน
การกรองและการจำกัดขอบเขตลดความเสี่ยง แต่ไม่มีอันไหนกำจัดมันได้
การสแกนเนื้อหาที่ดึงมาเพื่อหารูปแบบการฉีดที่รู้จักจับความพยายามบางอย่างได้ แต่รายการรูปแบบที่ตายตัวใดๆ ก็สามารถหลบเลี่ยงได้ด้วยการเรียบเรียงคำสั่งแตกต่างออกไป — นี่คือตัวกรอง ไม่ใช่การรับประกัน สิ่งที่ลดความเสียหายจริงได้น่าเชื่อถือกว่าคือการจำกัดสิ่งที่โมเดลได้รับอนุญาตให้ทำ ไม่ว่ามันจะถูกบอกอะไรก็ตาม — จำกัดขอบเขตการเข้าถึงเครื่องมือให้แคบ กำหนดให้ต้องขออนุมัติก่อนการกระทำที่ทำลายล้างหรือส่งผลกระทบภายนอก และไม่มอบสิทธิ์ถาวรที่กว้างกว่างานเฉพาะที่อยู่ตรงหน้าให้กับโมเดลเลย
เนื้อหาที่โมเดลอ่านคืออินพุตที่ไม่น่าเชื่อถือ ไม่ใช่แหล่งข้อเท็จจริงที่เป็นกลาง
ระบบใดก็ตามที่ให้โมเดลอ่านเนื้อหาภายนอก — ผลการค้นหา หน้าที่ดึงข้อมูลมา เอกสารที่ผู้ใช้อัปโหลด — กำลังเปิดโอกาสให้มันเจอคำสั่งที่ไม่มีใครขอ นัยเชิงปฏิบัติคือให้ปฏิบัติต่อเนื้อหานั้นเหมือนที่คุณปฏิบัติต่ออินพุตของผู้ใช้ที่ยังไม่ผ่านการตรวจสอบในซอฟต์แวร์อื่นๆ สมมติว่ามันอาจมีสิ่งที่เป็นปฏิปักษ์อยู่ และออกแบบระบบโดยรอบให้การฉีดที่สำเร็จมีขอบเขตจำกัด แทนที่จะสมมติว่าการฉีดจะไม่เกิดขึ้น
คำถามที่พบบ่อย
- ป้องกัน Prompt Injection ได้อย่างสมบูรณ์ไหม?
- ไม่ได้ ไม่ใช่ด้วยสถาปัตยกรรมโมเดลปัจจุบัน ไม่มีการแยกที่ติดตัวมาแต่กำเนิดและป้องกันการปลอมแปลงระหว่างคำสั่งของผู้ใช้กับข้อความที่โมเดลอ่านมาจากที่อื่น ดังนั้นการกรองและการจำกัดขอบเขตจึงลดความเสี่ยงและจำกัดความเสียหายได้ แต่รับประกันการป้องกันไม่ได้
- Prompt Injection เหมือนกับ Jailbreak ไหม?
- มันซ้อนทับกันแต่ไม่เหมือนกัน Jailbreak มักหมายถึงผู้ใช้พยายามโดยตรงให้โมเดลเลี่ยงแนวทางของตัวเอง ส่วน Prompt Injection มักหมายถึงคำสั่งที่ซ่อนอยู่ในเนื้อหาที่โมเดลอ่านแทนผู้ใช้ โดยที่ผู้ใช้ไม่รู้ตัว
- Prompt Injection มีความสำคัญกับแชทบอทที่ใช้เครื่องมือไม่ได้ไหม?
- ความเสี่ยงน้อยกว่า — การฉีดที่สำเร็จอาจสร้างคำตอบที่ทำให้เข้าใจผิดหรือถูกบิดเบือน แต่ไม่สามารถลงมือทำอะไรได้นอกเหนือจากการสร้างข้อความ ความเสี่ยงเพิ่มขึ้นอย่างมากเมื่อโมเดลสามารถเรียกใช้เครื่องมือที่ทำอะไรบางอย่างนอกเหนือจากบทสนทนา
- การสแกนเนื้อหาเพื่อหารูปแบบการฉีดเพียงพอเป็นการป้องกันไหม?
- มันจับความพยายามที่รู้จักและจดจำได้ แต่รายการรูปแบบที่ตายตัวใดๆ ก็สามารถหลบเลี่ยงได้ด้วยการเรียบเรียงใหม่ การป้องกันที่แท้จริงยังมาจากการจำกัดสิ่งที่โมเดลได้รับอนุญาตให้ทำด้วย — ขอบเขตเครื่องมือที่แคบและการอนุมัติที่จำเป็นสำหรับการกระทำที่มีผลกระทบ — ไม่ใช่แค่การตรวจจับเพียงอย่างเดียว
ลองใช้ดีกว่าอ่านเฉยๆ
บริการวิจัยของ ClawAI สแกนเนื้อหาเว็บที่ดึงมาเพื่อหารูปแบบ prompt injection ที่รู้จัก และปกปิดโทเค็นที่ดูเหมือนความลับก่อนที่เนื้อหานั้นจะไปถึงโมเดล — บันทึกสิ่งที่ตรวจพบแทนที่จะบล็อกอย่างเงียบๆ เพราะไม่มีรายการรูปแบบที่ตายตัวใดจับความพยายามทุกครั้งได้ ชั้นการตรวจจับนี้เป็นเพียงส่วนหนึ่งของการป้องกันที่ยังขึ้นอยู่กับการจำกัดว่าโมเดลเรียกใช้เครื่องมือใดได้บ้างตั้งแต่แรก