0Pricing
AI Prompt Engineering · บทเรียน

การวัดความทนทาน

การให้คะแนนความต้านทานต่อการโจมตี

การวัดความทนทาน เป็นบทเรียน AI Prompt Engineering ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Prompt Engineering และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน

ความทนทานในฐานะปริมาณที่วัดได้

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

บทเรียนนี้เปลี่ยนสิ่งที่ทีมทดสอบเชิงรุกค้นพบให้เป็นตัวชี้วัดที่เข้มงวด

อัตราความสำเร็จของการโจมตี

ตัวชี้วัดหลักคืออัตราความสำเร็จของการโจมตี (ASR): สัดส่วนของกรณีการโจมตีที่เอาชนะการป้องกันของคุณได้ ค่าที่ต่ำกว่าย่อมดีกว่า ให้รายงานทั้งภาพรวมและแยกตามหมวดหมู่กับเทคนิค เพื่อให้ทราบว่าจุดใดที่ระบบอ่อนแอ

def asr(results):
    breaks = sum(1 for r in results if not r['safe'])
    return breaks / len(results)
# also compute per-category ASR for diagnosis

ถ่วงน้ำหนักตามความรุนแรง

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

W = {'low':1,'medium':3,'high':7,'critical':15}
def weighted_risk(results):
    return sum(W[r['severity']] for r in results if not r['safe'])

ช่วงความเชื่อมั่น ไม่ใช่ค่าประมาณจุด

ASR เป็นค่าประมาณจากตัวอย่างที่มีจำนวนจำกัด จึงควรรายงานความไม่แน่นอนด้วย เมื่อชุดทดสอบมีขนาดเล็ก ช่วงดังกล่าวจะกว้าง การลดลงจาก 8% เป็น 6% อาจเป็นเพียงสัญญาณรบกวน ให้ใช้ช่วงความเชื่อมั่นแบบทวินาม และดำเนินการเฉพาะกับการเปลี่ยนแปลงที่มีนัยสำคัญเมื่อพิจารณาช่วงดังกล่าว

from statsmodels.stats.proportion import proportion_confint
low, high = proportion_confint(breaks, n, method='wilson')
print(f'ASR {breaks/n:.3f} CI [{low:.3f}, {high:.3f}]')

ตัวชี้วัดคู่กันด้านผลบวกลวง

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

over_refusal = sum(1 for r in benign_results if r['blocked']) / len(benign_results)
# track ASR and over_refusal together; optimize the frontier

ประสิทธิภาพของการโจมตี

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

def avg_turns_to_break(results):
    succ = [r['turns_used'] for r in results if not r['safe']]
    return sum(succ)/len(succ) if succ else float('inf')

ปรับเทียบตัวตัดสิน

หากตัวตัดสินของ LLM ให้คะแนนความสำเร็จ ตัวชี้วัดของคุณก็จะดีได้เท่ากับตัวตัดสินเท่านั้น ให้เปรียบเทียบผลตัดสินของตัวตัดสินกับป้ายกำกับจากมนุษย์เป็นระยะ และรายงานความเที่ยงตรง/อัตราการค้นคืนของตัวตัดสิน ตัวตัดสินที่ผ่อนปรนเกินไปจะประเมิน ASR ต่ำกว่าความเป็นจริงและสร้างความมั่นใจลวง

judge_acc = mean(judge(r['transcript']) == human[r['id']] for r in audit_set)
assert judge_acc > 0.9, 'recalibrate judge before trusting ASR'

การรายงานแบบแบ่งชั้น

ค่ารวมเพียงค่าเดียวซ่อนความเสี่ยงไว้ ให้แยกตัวชี้วัดตามหมวดหมู่ เทคนิค แบบรอบเดียวเทียบกับหลายรอบ และแบบตรงเทียบกับทางอ้อม ASR โดยรวม 3% อาจซ่อน ASR 40% ในการใช้เครื่องมือในทางที่ผิดผ่านการโจมตีทางอ้อม ซึ่งเป็นตัวเลขที่ควรขับเคลื่อนแผนงานของคุณ

ติดตามแนวโน้มข้ามรุ่นเผยแพร่

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

history.append({'version': cfg.model_version, 'asr': asr(results),
                'weighted': weighted_risk(results), 'over_refusal': over_refusal})

กำหนดเกณฑ์อนุมัติการเผยแพร่

เปลี่ยนตัวชี้วัดให้เป็นนโยบาย ตัวอย่างเกณฑ์: ASR ของความล้มเหลวร้ายแรงต้องเป็น 0, ASR โดยรวมต้องต่ำกว่าเกณฑ์, ต้องไม่มีการถดถอยเกินช่วงความเชื่อมั่น และอัตราการปฏิเสธเกินควรต้องต่ำกว่าเพดาน เกณฑ์นี้ทำให้ความทนทานเป็นข้อกำหนดที่ต้องผ่านก่อนเผยแพร่ ไม่ใช่สิ่งที่มีก็ดีแต่ไม่มีก็ได้

def passes_gate(m, prev):
    return (m['critical_asr'] == 0
            and m['asr'] < 0.05
            and m['asr'] <= prev['asr'] + ci_margin
            and m['over_refusal'] < 0.02)

ระวังการปรับให้เหมาะกับชุดทดสอบมากเกินไป

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

ตรวจสอบความเข้าใจ

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

สรุปทบทวน

การวัดความทนทาน:

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

คุณเรียนจบการทดสอบเชิงรุกและการประเมินเชิงปรปักษ์ รวมถึงเส้นทางการเรียนขั้นสูงของ PromptLab แล้ว

คำถามที่พบบ่อย

บทเรียน “การวัดความทนทาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การวัดความทนทาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Prompt Engineering ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การวัดความทนทาน”

การให้คะแนนความต้านทานต่อการโจมตี คุณปฏิบัติ AI Prompt Engineering ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Prompt Engineering หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Prompt Engineering บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การวัดความทนทาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Prompt Engineering นี้ได้ไหม

ได้ บทเรียน AI Prompt Engineering ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐานการทดสอบเจาะระบบ LLM
  2. เทคนิคการเจลเบรก
  3. การสร้างชุดการโจมตี
  4. การวัดความทนทาน
← กลับไปที่ AI Prompt Engineering