הגדרת כללי החרגה ספציפיים לתבנית

אפשר להגדיר כללי החרגה ספציפיים לתבנית ב-Model Armor כדי לצמצם את מספר הזיהויים החיוביים הכוזבים. כללי החרגה הם כללים שספציפיים לתבנית מסוימת ומכילים ביטויים רגולריים או ביטויים שצריך להחריג מהזיהוי.

מסננים נתמכים

אפשר להשתמש בכללי החרגה עבור המסננים הבאים:

מתי כדאי להשתמש בכללי החרגה

משתמשים בכללי החרגה ספציפיים לתבנית כשרוצים להשתיק זיהויים ידועים של תוצאות חיוביות שגויות בעומסי עבודה ספציפיים, בלי להשבית מסנן לגמרי:

  • טרמינולוגיה ספציפית לתחום או טכנית: האפליקציה שלכם מעבדת אוצר מילים מיוחד – כמו פקודות של ניהול מערכת (kill process, abort transaction), טרמינולוגיה של בדיקות אבטחה (penetration testing), מונחים מדעיים (blast search) או ניבים בתעשייה – שיש להם חפיפה עם קטגוריות הבטיחות של אתיקה של בינה מלאכותית.
  • הוראות תפעול או פורמט תקינות: המשתמשים או תבניות ההנחיות שלכם כוללים הוראות לגיטימיות שמשתמשות בפעלים מצווים (כמו "ignore case when sorting this list", "ignore empty rows" או "Summarize my inbox and ignore the emails from the marketing vendor.") שגורמים לתוצאות חיוביות שגויות בזיהוי של הזרקת הנחיות ופריצה.
  • הפחתת הסיכון הממוקדת בזמן שממתינים לעדכוני המודל: אתם צריכים פתרון עקיף מיידי לתוצאת חיובית כוזבת מאומתת בתהליך עבודה ספציפי באפליקציה, תוך שמירה על פעילות המסנן לכל שאר הקלטים.

בטבלה הבאה מתואר מתי כדאי להשתמש בכל שילוב של סוג כלל והיקף התאמה. מידע נוסף על אופן הפעולה של התאמה למילון ולהתאמה לביטוי רגולרי זמין במאמרים כללים של מילון וביטוי רגולרי ואיך מתבצעת ההתאמה.

הגדרת הכלל מתי משתמשים דוגמה
כלל מילון עם התאמה חלקית (MATCHING_SCOPE_PARTIAL_MATCH) יש לכם רשימה קבועה של מילים או ביטויים סטטיים שיכולים להופיע בכל מקום בהנחיה או בתשובה. מידע נוסף על התנהגות של התאמה למילון זמין במאמר כללים של מילון וביטויים רגולריים.

המילון מכיל את הביטוי ignore empty rows

התאמות:

  • ignore empty rows
  • ignore EMPTY-rows
  • please ignore empty rows

לא תואם:

  • ignore rows
  • ignore the empty rows
כלל מילון עם התאמה מלאה (MATCHING_SCOPE_FULL_MATCH) האפליקציה שלכם משתמשת באפשרויות הנחיות מוגדרות מראש (כמו לחצני תשובה מהירה בממשק המשתמש או פקודות מוכנות מראש) שבהן הקלט כולו תואם לביטוי מוכר, ואתם רוצים למנוע מטקסט נוסף שלא נבדק לעקוף את המסנן. מידע נוסף על התנהגות של התאמה למילון מופיע במאמר כללים של מילון וביטויים רגולריים.

המילון מכיל את הביטוי ignore empty rows

התאמות:

  • ignore empty rows
  • ignore EMPTY-rows

לא תואם:

  • please ignore empty rows
  • ignore rows
כלל של ביטוי רגולרי עם התאמה חלקית (MATCHING_SCOPE_PARTIAL_MATCH) אתם צריכים להחריג דפוסים מובנים, מזהים דינמיים או שילובים ספציפיים של פועל ושם עצם בהנחיות או בתשובות גדולות יותר. מידע נוסף זמין במאמר דוגמאות לדפוסי החרגה של ביטויים רגולריים.

תבנית של ביטוי רגולרי: (?i)kill process [0-9]+

התאמות:

  • kill process 1234
  • How do I Kill Process 99?

לא תואם:

  • kill process abc
  • kill the process 1234
כלל של ביטוי רגולרי עם התאמה מלאה (MATCHING_SCOPE_FULL_MATCH) מטען הייעודי (payload) של הקלט כולו הוא בפורמט מבני קפדני (כמו מזהה של בדיקה אוטומטית או פקודה מובנית).

תבנית של ביטוי רגולרי: (?i)^test_case_[0-9]+$

התאמות:

  • test_case_42
  • TEST_CASE_001

לא תואם:

  • run test_case_42
  • test_case_alpha

שימוש בנקודת קצה אזורית או רב-אזורית

כשעובדים עם תבנית הגנה מוגברת על המודל, צריך להשתמש בנקודת קצה אזורית או רב-אזורית (modelarmor.LOCATION.rep.googleapis.com) שתואמת למיקום של התבנית.

נקודת הקצה הגלובלית (modelarmor.googleapis.com) לא תומכת בניהול תבניות של הגנה מוגברת על המודל או בניקוי של הנחיות ותשובות.

לפני שמתחילים

לפני שמתחילים, צריך לבצע את המשימות הבאות.

קבלת ההרשאות הנדרשות

כדי לקבל את ההרשאות שנדרשות להגדרת כללי החרגה בתבניות של Model Armor, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Model Armor Admin (roles/modelarmor.admin) בפרויקט שמכיל את תבנית Model Armor. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

הפעלת ממשקי ה-API

כדי להשתמש בהגנה מוגברת על המודל, צריך להפעיל את Model Armor API.

המסוף

  1. מפעילים את הגנה מוגברת על המודל API, אם הוא עדיין לא מופעל.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    להפעלת ה-API

  2. בוחרים את הפרויקט שבו רוצים להפעיל את הגנה מוגברת על המודל.

gcloud

לפני שמתחילים, צריך לבצע את השלבים הבאים באמצעות Google Cloud CLI עם Model Armor API:

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. מפעילים את Model Armor API, אם הוא עדיין לא מופעל:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable modelarmor.googleapis.com

  3. הגדרת החלפה של נקודת הקצה ל-API באמצעות ה-CLI של gcloud

הגדרת שינוי מברירת המחדל של נקודת קצה ל-API באמצעות ה-CLI של gcloud

השלב הזה נחוץ רק אם משתמשים ב-CLI של gcloud עם הגנה מוגברת על המודל ורוצים להשתמש באזור או במספר אזורים שונים מאזור ברירת המחדל us. כדי לוודא שה-CLI של gcloud מנתב את הבקשות לשירות Model Armor בצורה נכונה, צריך להגדיר ידנית את החלפת נקודת הקצה של ה-API.

מריצים את הפקודה הבאה כדי להגדיר את נקודת קצה ל-API לשירות הגנה מוגברת על המודל.

gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"

מחליפים את LOCATION באזור או במספר אזורים שבהם רוצים להשתמש בהגנה מוגברת על המודל.

איך כללי החרגה פועלים

כדי להגדיר כללי החרגה, משתמשים ב-API של הגנה מוגברת על המודל.

כללים של מילון וביטויים רגולריים

אפשר להגדיר שני סוגים של כללי החרגה בתבנית הגנה מוגברת על המודל:

  • כללי מילון: מציינים רשימה של מילים או ביטויים (wordList, עד 128KB לכל מילון) להחרגה. מילון חייב להכיל לפחות ביטוי אחד, וכל ביטוי חייב להכיל לפחות שני תווים שהם אותיות או ספרות. התאמה למילון פועלת באופן הבא:
    • לא תלוי-רישיות: מילים וביטויים במילון לא תלויים באותיות רישיות.
    • תווים לא אלפאנומריים: כשסורקים התאמות, כל התווים שאינם אותיות או ספרות במישור הבסיסי הרב-לשוני של Unicode מוחלפים ברווחים. לדוגמה, הביטוי במילון Sam Johnson תואם לביטויים sam johnson, Sam, Johnson ו-Sam (Johnson). יכול להיות שביטויים במילון שמכילים הרבה תווים שהם לא אותיות או ספרות יניבו התאמות לא צפויות, כי המערכת מתייחסת לתווים האלה כאל רווח לבן.
    • גבולות של תווים: התווים שמסביב להתאמה צריכים להיות מסוג שונה מהתווים הסמוכים במילה במילון. אותיות צריכות להיות צמודות לתווים שהם לא אותיות, וספרות צריכות להיות צמודות לתווים שהם לא ספרות. לדוגמה, המילה במילון jen תואמת לשלוש האותיות הראשונות של jen123, אבל לא תואמת ל-jennifer.
  • כללים של ביטויים רגולריים: מציינים דפוס של ביטוי רגולרי (עד 1,000 תווים) להתאמה ולהחרגה. כברירת מחדל, התאמות של ביטויים רגולריים הן תלויות אותיות רישיות. כדי לבצע התאמה לא תלוית-אותיות רישיות, כוללים את הדגל (?i) בתבנית. לדוגמה, (?i)kill process [0-9]+ תואם ל-kill process 1234 ול-Kill Process 1234.

איך מתבצעת ההתאמה למילות מפתח

כל כלל החרגה תומך בשדה matchingScope, שמציין איך Model Armor מתאים תוכן קלט לכלל:

  • התאמה חלקית (MATCHING_SCOPE_PARTIAL_MATCH, ברירת מחדל):
    • כללי מילון: מתקבלת התאמה כשמילה או ביטוי במילון תואמים למחרוזת משנה בתוכן הקלט, בכפוף לכללי הגבולות של התווים במילון. לדוגמה, הביטוי במילון ignore empty rows תואם ל-ignore empty rows, ל-ignore EMPTY-rows ול-Please ignore empty rows and summarize this table, אבל לא ל-ignore rows או ל-ignore the empty rows.
    • כללים של ביטויים רגולריים: מתבצעת התאמה כשמחרוזת משנה כלשהי בתוכן הקלט תואמת לתבנית הביטוי הרגולרי.
  • התאמה מלאה (MATCHING_SCOPE_FULL_MATCH):
    • כללי מילון: התאמה רק אם הערך במילון מכסה את כל תוכן הקלט. לדוגמה, הביטוי במילון ignore empty rows תואם ל-ignore empty rows ול-ignore EMPTY-rows, אבל לא ל-please ignore empty rows או ל-ignore rows.
    • כללים של ביטויים רגולריים: התאמה מתבצעת רק כשדפוס הביטוי הרגולרי תואם לכל תוכן הקלט.

ביטול כללי החרגה במהלך ניקוי

אם תבנית כוללת כללי החרגה, הגנה מוגברת על המודל מעריך את הכללים האלה במהלך ניקוי ההנחיה ותגובת המודל בכל פעם שסינון של החדרה של פרומפטים ופריצת דרך (PROMPT_INJECTION_AND_JAILBREAK) או סינון של אתיקה של בינה מלאכותית (RESPONSIBLE_AI) מזהה התאמה פוטנציאלית:

  • הכלל תואם לקלט: אם כלל החרגה תואם למחרוזת משנה (MATCHING_SCOPE_PARTIAL_MATCH, ברירת מחדל) או לקלט כולו מההתחלה ועד הסוף (MATCHING_SCOPE_FULL_MATCH), ‏ הגנה מוגברת על המודל מבטל את matchState ומגדיר אותו ל-NO_MATCH_FOUND עבור כל סוג המסנן הנתמך (כולל כל קטגוריות הבטיחות של אתיקה של בינה מלאכותית עבור RESPONSIBLE_AI), במקום להחריג ביטויים או טווחים בודדים בתוך הקלט. אם אף מסנן פעיל אחר לא מזהה הפרה, הפונקציה filterMatchState מחזירה NO_MATCH_FOUND. אם כלל החרגה מבטל את המסנן matchState, הגנה מוגברת על המודל לא מתעדת אינדיקטור ב-Cloud Logging ולא כוללת אות בתגובת החיטוי.
  • הכלל לא תואם לקלט המלא (MATCHING_SCOPE_FULL_MATCH): אם הקלט מכיל טקסט נוסף מעבר לביטוי או לדפוס שהוגדרו, הכלל לא תואם והמסנן שומר על MATCH_FOUND.
  • הקלט גדול מ-0.5MB: כללי ההחרגה בודקים רק את 0.5MB הראשונים של טקסט הקלט. אם הקלט גדול מ-0.5MB ומסנן מזהה התאמה מחוץ לחלק שנסרק בהתחלה, המסנן מחזיר EXECUTION_SKIPPED. פרטים על ערכי messageItems ומגבלות על מטען ייעודי זמינים במאמר מגבלות המערכת של כללי החרגה.

דוגמאות לניקוי פרומפטים ותשובות של מודלים באמצעות כללי החרגה מופיעות במאמרים ניקוי פרומפט באמצעות כלל החרגה וניקוי תשובה באמצעות כלל החרגה.

לתשומת ליבכם

כשמגדירים כללי החרגה, חשוב לשים לב לנקודות הבאות:

  • כללי החרגה חלים רק על התבנית שבה מגדירים אותם. אי אפשר לשתף כללי החרגה בין תבניות.
  • אפשר להגדיר כללי החרגה לסוג מסנן נתמך רק אם המסנן הזה מופעל בתבנית. כדי לזהות החדרת פרומפטים ופריצת Jailbreak‏ (PROMPT_INJECTION_AND_JAILBREAK), מגדירים את filterEnforcement ל-ENABLED ב-piAndJailbreakFilterSettings. כדי להפעיל מסנני בטיחות של אתיקה של בינה מלאכותית (RESPONSIBLE_AI), צריך להגדיר לפחות קטגוריה אחת של בטיחות אתיקה של בינה מלאכותית ב-raiSettings.raiFilters.
  • ‫הגנה מוגברת על המודל לא תומך בכללי החרגה בממשקי API של סטרימינג או בהגדרות אבטחה מינימליות.
  • ‫Model Armor מעריך את כללי ההחרגה ביחס לטקסט הקלט הגולמי לפני ביצוע טרנספורמציות של טקסט, כמו הסרת פרטים מזהים או תרגום. כללי החרגה לא תומכים בזיהוי רב-לשוני או בתרגום אוטומטי. כדי להחריג תוכן בכמה שפות, צריך להוסיף ביטויים ספציפיים לשפה או תבניות של ביטויים רגולריים לכל שפת יעד.
  • יש תמיכה מוגבלת בשפות עם כתב לא לטיני ובתווים רב-בייטיים בקידוד UTF-8 בכללי ההחרגה. בפרט, יכול להיות שכללי מילון (wordList) לא יתאימו כמו שציפיתם לסקריפטים שמשתמשים בסימנים משולבים (כמו סקריפטים הודיים) או לסקריפטים ללא רווחים בין מילים (כמו סינית ויפנית). כללים של התאמה מלאה (MATCHING_SCOPE_FULL_MATCH) לא מתאימים לקלט שמכיל תווים רב-בייטיים בקידוד UTF-8. כשמגדירים החרגה של תוכן בסקריפטים שאינם לטיניים או בקלטים עם תווים מרובי-בייט, צריך להשתמש בכללי ביטוי רגולרי (regex) עם MATCHING_SCOPE_PARTIAL_MATCH.
  • כללי ההחרגה כפופים למגבלות המערכת. מידע נוסף זמין במאמר בנושא מגבלות המערכת של כללי החרגה.

יצירת תבנית עם כללי החרגה

כדי ליצור תבנית עם כללי החרגה, צריך לכלול את האובייקט filterRuleSettings בתוך filterConfig בבקשה POST.

בדוגמה הבאה נוצרת תבנית שמאפשרת זיהוי של הזרקת הנחיות ופריצת דרך, וגם מסנני בטיחות של AI אחראי. בנוסף, מוגדרים שני כללי החרגה עם התאמה חלקית (MATCHING_SCOPE_PARTIAL_MATCH):

  • זיהוי של החדרת פרומפטים ופריצה (PROMPT_INJECTION_AND_JAILBREAK): משתמש בכלל מילון כדי להחריג קלטים שמכילים ביטויים ספציפיים, כמו ignore case when sorting this list או ignore empty rows, מזיהוי של החדרת פרומפטים ופריצה.
  • אתיקה של בינה מלאכותית (RESPONSIBLE_AI): משתמש בכלל של ביטוי רגולרי כדי להחריג מהזיהויים של בטיחות האתיקה של בינה מלאכותית קלטים שתואמים לדפוס שצוין, כמו (?i)kill process [0-9]+.
export TEMPLATE_WITH_EXCLUSIONS='{
  "filterConfig": {
    "piAndJailbreakFilterSettings": {
      "filterEnforcement": "ENABLED",
      "confidenceLevel": "LOW_AND_ABOVE"
    },
    "raiSettings": {
      "raiFilters": [
        {
          "filterType": "DANGEROUS",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "HARASSMENT",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "HATE_SPEECH",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "SEXUALLY_EXPLICIT",
          "confidenceLevel": "LOW_AND_ABOVE"
        }
      ]
    },
    "filterRuleSettings": {
      "ruleSets": [
        {
          "filterTypes": [
            "PROMPT_INJECTION_AND_JAILBREAK"
          ],
          "rules": [
            {
              "exclusionRule": {
                "dictionary": {
                  "wordList": {
                    "words": [
                      "EXCLUDED_PHRASE_1",
                      "EXCLUDED_PHRASE_2"
                    ]
                  }
                },
                "matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
              }
            }
          ]
        },
        {
          "filterTypes": [
            "RESPONSIBLE_AI"
          ],
          "rules": [
            {
              "exclusionRule": {
                "regex": {
                  "pattern": "EXCLUDED_REGEX_PATTERN"
                },
                "matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
              }
            }
          ]
        }
      ]
    }
  }
}'

curl -X POST \
  -d "$TEMPLATE_WITH_EXCLUSIONS" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates?template_id=TEMPLATE_ID"

מחליפים את מה שכתוב בשדות הבאים:

  • ‫EXCLUDED_PHRASE_1 and EXCLUDED_PHRASE_2: המילים או הביטויים במילון שרוצים להחריג מזיהוי של החדרת פרומפטים ופריצת חומות – לדוגמה, ignore case when sorting this list and ignore empty rows.
  • ‫EXCLUDED_REGEX_PATTERN: התבנית של הביטוי הרגולרי שרוצים להחריג מזיהוי בטיחות ה-AI האחראי – לדוגמה, (?i)kill process [0-9]+.
  • ‫PROJECT_ID: מזהה הפרויקט שאליו שייך התבנית.
  • ‫LOCATION: המיקום של התבנית.
  • ‫TEMPLATE_ID: מזהה התבנית.

התגובה אמורה להיראות כך:

{
  "filterConfig": {
    "raiSettings": {
      "raiFilters": [
        {
          "filterType": "DANGEROUS",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "HARASSMENT",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "HATE_SPEECH",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "SEXUALLY_EXPLICIT",
          "confidenceLevel": "LOW_AND_ABOVE"
        }
      ]
    },
    "piAndJailbreakFilterSettings": {
      "filterEnforcement": "ENABLED",
      "confidenceLevel": "LOW_AND_ABOVE"
    },
    "filterRuleSettings": {
      "ruleSets": [
        {
          "filterTypes": [
            "PROMPT_INJECTION_AND_JAILBREAK"
          ],
          "rules": [
            {
              "exclusionRule": {
                "dictionary": {
                  "wordList": {
                    "words": [
                      "ignore case when sorting this list",
                      "ignore empty rows"
                    ]
                  }
                },
                "matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
              }
            }
          ]
        },
        {
          "filterTypes": [
            "RESPONSIBLE_AI"
          ],
          "rules": [
            {
              "exclusionRule": {
                "regex": {
                  "pattern": "(?i)kill process [0-9]+"
                },
                "matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
              }
            }
          ]
        }
      ]
    }
  },
  "templateMetadata": {
    "dataResidencyCompliant": true
  }
}

עדכון כללי החרגה בתבנית

כדי לעדכן את כללי ההחרגה בתבנית קיימת, שולחים בקשת PATCH עם updateMask שמוגדר ל-filterConfig.filterRuleSettings. העדכון מחליף את כל השדה filterRuleSettings, לכן צריך לכלול בו את כל הכללים שרוצים לשמור, בנוסף לשינויים.

בדוגמה הבאה אנחנו מעדכנים את כללי ההחרגה מהדוגמה הקודמת על ידי הוספת כלל של ביטוי רגולרי לקבוצת הכללים PROMPT_INJECTION_AND_JAILBREAK והסרת קבוצת הכללים RESPONSIBLE_AI:

export EXCLUSION_RULES_UPDATE='{
  "filterConfig": {
    "filterRuleSettings": {
      "ruleSets": [
        {
          "filterTypes": [
            "PROMPT_INJECTION_AND_JAILBREAK"
          ],
          "rules": [
            {
              "exclusionRule": {
                "dictionary": {
                  "wordList": {
                    "words": [
                      "EXCLUDED_PHRASE_1",
                      "EXCLUDED_PHRASE_2"
                    ]
                  }
                },
                "matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
              }
            },
            {
              "exclusionRule": {
                "regex": {
                  "pattern": "EXCLUDED_REGEX_PATTERN"
                },
                "matchingScope": "MATCHING_SCOPE_FULL_MATCH"
              }
            }
          ]
        }
      ]
    }
  }
}'

curl -X PATCH \
  -d "$EXCLUSION_RULES_UPDATE" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID?updateMask=filterConfig.filterRuleSettings"

מחליפים את מה שכתוב בשדות הבאים:

  • ‫EXCLUDED_PHRASE_1 and ‫EXCLUDED_PHRASE_2: המילים או הביטויים במילון שרוצים להחריג מזיהוי של החדרה פרומפטים ופריצה – לדוגמה, ‫ignore case when sorting this list and ‫ignore empty rows.
  • ‫EXCLUDED_REGEX_PATTERN: תבנית הביטוי הרגולרי להחרגה מזיהוי של החדרה פרומפטים ופריצה. לדוגמה, (?i)\\b(?:ignore\\s+(?:the\\s+)?(?:emails?|spams?|warnings?|drafts?|typos?|duplicates?|noise))\\b.
  • ‫PROJECT_ID: מזהה הפרויקט שאליו שייך התבנית.
  • ‫LOCATION: המיקום של התבנית.
  • ‫TEMPLATE_ID: מזהה התבנית.

דוגמאות לתבניות החרגה של ביטויים רגולריים

כשכותבים כללי החרגה של ביטויים רגולריים, צריך להגדיר את ההיקף של הדפוסים למונחי דומיין ספציפיים או לשמות עצם של יעדים, כדי ש-Model Armor יחריג תוצאות חיוביות שגויות מוכרות בלי להתעלם מהפרות אמיתיות של אבטחה או בטיחות. כשמעבירים תבניות של ביטויים רגולריים בגופי בקשות JSON ‏("pattern"), צריך להוסיף תו בריחה לכל קו נטוי הפוך באמצעות קו נטוי הפוך שני (לדוגמה, משתמשים ב-\\b וב-\\s).

דוגמאות לזיהוי של החדרת פרומפטים ופריצה

פעלים בציווי כמו ignore,‏ disregard,‏ bypass או override מופיעים לעיתים קרובות גם בהחדרות של פרומפטים זדוניים וגם בהוראות לגיטימיות למיון אימיילים, לעיצוב נתונים, לטיפול בשגיאות או להגדרת מערכת. כדי להימנע מהחרגה של קטגוריות רחבות של הנחיות, משלבים בין גבולות מילים (\\b), קבוצות שאינן לוכדות ((?:...)) והדגל לאבחנה בין אותיות רישיות לאותיות קטנות ((?i)) עם MATCHING_SCOPE_PARTIAL_MATCH כדי לעגן את הביטוי הרגולרי לשמות עצם ספציפיים של יעדים תפעוליים.

בטבלה הבאה מופיעה דוגמה של תבנית ביטוי רגולרי להתאמה חלקית (עם לוכסנים הפוכים שמוגנים באמצעות JSON) ודוגמה לפרומפט לתרחיש נפוץ של החדרה פרומפטים ופריצה שמובילים לתוצאת חיובי כוזב.

קטגוריית ההוראה תנאי ההפעלה תרחישים של תוצאות חיוביות כוזבות דוגמה לתבנית של ביטוי רגולרי עם התאמה חלקית הנחיה לדוגמה
מיון וסינון של תוכן ignore, disregard תעדוף אימיילים, טיפול בשגיאות ובדיקת טיוטות (?i)\\b(?:ignore\\s+(?:the\\s+)?(?:emails?|spams?|warnings?|drafts?|typos?|duplicates?|noise))\\b Summarize my inbox and ignore the emails from the marketing vendor.

דוגמאות למסנני בטיחות של אתיקה של בינה מלאכותית

במסמכים טכניים, בפקודות של ניהול מערכת ובניבים נפוצים יש לעיתים קרובות מילים שחופפות לקטגוריות של אתיקה של בינה מלאכותית. כדי לצמצם את מספר התוצאות החיוביות השגויות בפרומפטים או בתשובות ארוכים יותר, אפשר לשלב בין גבולות מילים (\\b), קבוצות לא לוכדות ((?:...)) והדגל לא תלוי-רישיות ((?i)) עם MATCHING_SCOPE_PARTIAL_MATCH.

בטבלה הבאה מופיעות דוגמאות לתבניות של ביטויים רגולריים להתאמה חלקית (עם לוכסנים הפוכים שמוגדרים ב-JSON) ודוגמאות לפרומפטים לתרחישים נפוצים של תוצאות חיוביות שגויות באתיקה של בינה מלאכותית.

קטגוריית סיכון תנאי ההפעלה תרחישים של תוצאות חיוביות כוזבות דוגמה לתבנית של ביטוי רגולרי עם התאמה חלקית הנחיה לדוגמה
אלימות או פגיעה kill סיום תהליך, מתגים חשמליים או מתגי בקרת אקלים, וביטויים נפוצים (?i)\\b(?:kill\\s+(?:-9|all|process(?:es)?|switch(?:es)?|jobs?|pods?|sessions?|bill|lights?)|time\\s+to\\s+kill|dressed\\s+to\\s+kill)\\b Please kill all pods in the namespace.
שפה רעילה או פוגענית abort, terminate עסקאות במסד נתונים, מחזור חיים של משימה ותנאי תעסוקה או חוזה (?i)\\b(?:abort\\s+(?:transactions?|missions?|requests?|connections?|retry|retries)|terminate\\s+(?:contracts?|sessions?|threads?|instances?|connections?))\\b Abort retry.
התאמות של מחרוזות משנה במונחים של דומיין מחרוזות משנה חופפות של תווים מונחים אקדמיים, בוטניקה, אורניתולוגיה, תעופה ושמות פרטיים (?i)\\b(?:class(?:room|ic)?|assess(?:ment)?|associate|passive|peacock|cockpit|cocktail|dickens)\\b I love reading Dickens.
כלי נשק או חומרי נפץ bomb, blast, detonate ביואינפורמטיקה, ניבים מעולם הבידור, ציוד תעשייתי או ניקוי (?i)\\b(?:blast\\s+(?:search|alignment|radius|furnace)|box\\s+office\\s+bomb|had\\s+a\\s+blast)\\b Run a blast search on the genetic sequence.

שיטות מומלצות להגדרת כללי החרגה

כדי למזער את התוצאות החיוביות הכוזבות בלי לפגוע במצב האבטחה של התבנית, כדאי לפעול לפי השיטות המומלצות הבאות:

  • הגדרת כללים בהיקף מצומצם להקשרים ספציפיים: מומלץ להימנע מהחרגה של פעלים בודדים או מונחים כלליים (כמו ignore,‏ kill או abort) או משימוש בתווים כלליים לא מוגבלים (כמו .*ignore.*). הסיבה לכך היא שהכלל MATCHING_SCOPE_PARTIAL_MATCH מבטל את הכלל matchState עד NO_MATCH_FOUND לכל המסנן בכל פעם שיש התאמה למחרוזת משנה. כללים רחבים מדי עלולים להסתיר הפרות אמיתיות במקומות אחרים באותה הנחיה או תשובה. תמיד משייכים פעלים מעוררי פעולה לשמות עצם ספציפיים (לדוגמה, ignore case when sorting this list או (?i)kill process [0-9]+).
  • שימוש בגבולות מילים ואיחוד דפוסים: בכללים של ביטויים רגולריים, כדאי להשתמש בגבולות מילים (\b) כדי למנוע התאמות מקריות של מחרוזות משנה בתוך מילים לא קשורות. כדי לא לחרוג ממגבלת המערכת של 10 כללים לכל קבוצת כללים, אפשר לאחד ביטויים קשורים לביטוי רגולרי אחד באמצעות קבוצות שאינן לכידות ((?:...)) ושימוש בסימן 'או' (|).
  • מומלץ להשתמש ב-MATCHING_SCOPE_FULL_MATCH כדי לקבל קלט צפוי: כשמוציאים מכלל אפשרות הנחיות מוגדרות מראש בממשק המשתמש, פקודות מוכנות מראש או מטען ייעודי למבחן אוטומטי, צריך להגדיר את matchingScope ל-MATCHING_SCOPE_FULL_MATCH (או לעגן ביטויים רגולריים עם ^ ו-$). הגדרת היקף של התאמה מלאה מונעת מהמשתמשים לצרף הוראות מתנגדות לביטוי מוחרג כדי לעקוף את הזיהוי.
  • כתיבת כללים לטקסט גולמי שלא עבר טרנספורמציה: Model Armor מעריך כללי החרגה לפני הסרת הפרטים המזהים או התרגום. חשוב לוודא שהדפוסים שלכם תואמים לפורמט המקורי לפני הסרת הפרטים המזהים, ולהוסיף ביטויים ספציפיים לשפה או דפוסי ביטוי רגולרי לכל שפה שהאפליקציה שלכם תומכת בה.
  • בדיקה והוצאה משימוש של כללים זמניים אחרי שדרוג המסננים: כשמשדרגים תבנית לגרסה חדשה יותר של מסנן, צריך להעריך מחדש את מקרי הבדיקה של תוצאות חיוביות שגויות ולהסיר כללי החרגה שנפתרו על ידי מודלים מעודכנים של זיהוי.

המאמרים הבאים