מדיניות SanitizeModelResponse

מדיניות ניתנת להרחבה

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge.

המדיניות SanitizeModelResponse מגינה על לקוחות AI מפני תוכן פוגעני או מזיק על ידי הסרת תוכן זדוני או רגיש מתשובות של מודלים של AI גנרטיבי. המדיניות משתמשת ב-Model Armor כדי להעריך את התשובות של המודל ולזהות תוכן פוגעני או מזיק, וכך מאפשרת הגנה מובנית על לקוחות ועומסי עבודה של AI באמצעות Apigee. ‫Model Armor הוא Google Cloud שירות שמציע אמצעי אבטחה ובטיחות ל-AI כדי לצמצם את הסיכונים שקשורים למודלים גדולים של שפה (LLM).

המדיניות הזו משמשת בשילוב עם המדיניות SanitizeUserPrompt.

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

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

לפני שמשתמשים בכללי המדיניות SanitizeModelResponse, צריך לבצע את הפעולות הבאות:

  • יוצרים תבנית של Model Armor. צריך להשלים את השלב הזה לפני שיוצרים מדיניות SanitizeModelResponse.
  • מגדירים את נקודת הקצה ל-API של שירות Model Armor.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות בשביל להחיל את המדיניות SanitizeModelResponse ולהשתמש בה, אתם צריכים לבקש מהאדמין לתת לכם את התפקידים הבאים ב-IAM בחשבון השירות שמשמש לפריסת שרתי proxy של Apigee:

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

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

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

מפעילים את ממשקי ה-API של Model Armor, אם הם עדיין לא מופעלים.

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

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

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

רכיב <SanitizeModelResponse>

מגדירה מדיניות SanitizeModelResponse.

ערך ברירת המחדל מידע נוסף מופיע בקטע הכרטיסייה "מדיניות ברירת המחדל" שבהמשך.
חובה? חובה
סוג אובייקט מורכב
רכיב הורה לא רלוונטי
רכיבי צאצא <DisplayName>
<IgnoreUnresolvedVariables>
<ModelArmor>
<UserPromptSource>
<LLMResponseSource>
<FunctionCallSource>
<ContinuousScan>

הרכיב <SanitizeModelResponse> משתמש בתחביר הבא:

תחביר

<SanitizeModelResponse async="false" continueOnError="false" enabled="true" name="sanitize-response">
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <DisplayName>sanitize-response-sample</DisplayName>
  <ModelArmor>
    <TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
  </ModelArmor>
  <UserPromptSource>{jsonPath('$.contents[-1].parts[-1].text',request.content)}</UserPromptSource>
  <LLMResponseSource>{jsonPath('$.candidates[-1].content.parts',response.content)}</LLMResponseSource>
  <FunctionCallSource>{jsonPath('$.candidates[-1].content.parts[-1].functionCall.args',response.content)}</FunctionCallSource>
  <ContinuousScan>false</ContinuousScan>
</SanitizeModelResponse>

מדיניות ברירת המחדל

בדוגמה הבאה מוצגות הגדרות ברירת המחדל כשמוסיפים מדיניות SanitizeModelResponse לתהליך הבקשה בממשק המשתמש של Apigee:

<SanitizeModelResponse async="false" continueOnError="false" enabled="true" name="sanitize-response">
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <DisplayName>sanitize-response-sample</DisplayName>
  <ModelArmor>
    <TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
  </ModelArmor>
  <UserPromptSource>{jsonPath('$.contents[-1].parts[-1].text',request.content)}</UserPromptSource>
  <LLMResponseSource>{jsonPath('$.candidates[-1].content.parts',response.content)}</LLMResponseSource>
  <FunctionCallSource>{jsonPath('$.candidates[-1].content.parts[-1].functionCall.args',response.content)}</FunctionCallSource>
</SanitizeModelResponse>

כשמוסיפים מדיניות SanitizeModelResponse חדשה באמצעות ממשק המשתמש של Apigee, התבנית מכילה קטעי קוד לכל הפעולות האפשריות. בהמשך מופיע מידע על הרכיבים הנדרשים.

לרכיב הזה יש את המאפיינים הבאים שמשותפים לכל המדיניות:

מאפיין ברירת מחדל חובה? תיאור
name לא רלוונטי חובה

השם הפנימי של המדיניות. הערך של מאפיין name יכול להכיל אותיות, מספרים, רווחים, מקפים, קווים תחתונים ונקודות. הערך הזה לא יכול להיות ארוך מ-255 תווים.

אפשר להשתמש ברכיב <DisplayName> כדי לתת למדיניות תווית בשם אחר בשפה טבעית בכלי לעריכת פרוקסי בממשק המשתמש לניהול.

continueOnError FALSE אופציונלי מגדירים את הערך false כדי להחזיר שגיאה אם המדיניות נכשלת. זו התנהגות צפויה ברוב המקרים. הגדרה ל-true מאפשרת להמשיך את הביצוע של התהליך גם אחרי שמדיניות נכשלת. מאמרים קשורים:
enabled TRUE אופציונלי מגדירים את הערך true כדי לאכוף את המדיניות, או את הערך false כדי להשבית את המדיניות. המדיניות לא נאכפת גם אם היא עדיין משויכת לזרימה.
async   FALSE הוצא משימוש המאפיין הזה הוצא משימוש.

בטבלה הבאה מופיע תיאור כללי של רכיבי המשנה של <SanitizeModelResponse>:

רכיב צאצא חובה? תיאור
<DisplayName> אופציונלי שם המדיניות.

<IgnoreUnresolvedVariables> אופציונלי המדיניות הזו קובעת אם העיבוד ייפסק אם המשתנה שמשמש לשם התבנית או למטען הייעודי (payload) של Model Armor לא נפתר.
<ModelArmor> חובה מכיל את המידע הנדרש כדי לציין את התבנית של Model Armor.
<UserPromptSource> אופציונלי המיקום של המטען הייעודי (payload) שממנו צריך לחלץ את טקסט ההנחיה של המשתמש. המדיניות שולחת את הטקסט הזה ל-Model Armor כהקשר להסרת תוכן זדוני או רגיש מהתשובה. אם לא תכללו את הרכיב הזה, המדיניות תשלח רק את התשובה של ה-LLM ל-Model Armor כדי להסיר תוכן זדוני או רגיש, והמדיניות תיפרס ותפעל בהצלחה. תומך רק בערכי טקסט של מחרוזות.

השדה הזה תומך בתחביר של תבנית ההודעה של Apigee, כולל שימוש ב משתנים או בפונקציות של נתיב JSON.

לדוגמה:

{jsonpath('$.contents[-1].parts[-1].text',request.content,false)}
<LLMResponseSource> אופציונלי המיקום של המטען הייעודי (payload) לחילוץ טקסט התשובה של ה-LLM. אם משמיטים את השדה, המערכת מחילה את נתיב ה-JSON שמוגדר כברירת מחדל ב-Agent Platform: generateContent. {jsonPath('$.candidates[-1].content.parts',response.content)}. אפשר להשתמש רק בערכי טקסט מסוג מחרוזת.

השדה הזה תומך בתחביר של תבנית ההודעה של Apigee, כולל שימוש ב משתנים או בפונקציות של נתיב JSON.

לדוגמה:

{jsonpath('$.input.prompt.text',request.content,false)}

<FunctionCallSource> אופציונלי המיקום של הארגומנטים של בקשה להפעלת פונקציה שצריך לחלץ מהתשובות של המודל. המדיניות משתמשת ברכיב הזה כגיבוי כש-<LLMResponseSource> מחזיר ערך ריק בתורות של קריאה להפעלת פונקציות.

ברירת המחדל: {jsonPath('$.candidates[-1].content.parts[-1].functionCall.args',response.content)}

<ContinuousScan> אופציונלי

מציין אם לבדוק את כל התגובה בסטרימינג (SSE), כך שכל אירוע נשלח ללקוח רק אחרי ש-Model Armor בודק אותו. ההגדרה רלוונטית רק כשהמדיניות פועלת ב-SSE EventFlow.

ברירת המחדל: false

הסרת תוכן זדוני או רגיש מתגובות של אירועים שנשלחים מהשרת (SSE) בסטרימינג

ב-SSE EventFlow, משתמשים ב-<ContinuousScan> כדי לבחור אחת משתי אפשרויות: לבדוק כל אירוע בנפרד (false, ברירת המחדל), או לבדוק את כל הסטרימינג באמצעות הסרת תוכן זדוני או רגיש בסטרימינג של Model Armor‏ (true). בדרך כלל, עם true התגובה המלאה מסתיימת מהר יותר, כי המדיניות בודקת את הסטרימינג בחיבור אחד בזמן שהמודל עדיין יוצר, במקום לשלוח בקשה נפרדת לכל אירוע. עם זאת, הזמן עד ליצירת הטוקן הראשון יכול להיות ארוך יותר. כדי להוסיף את המדיניות ל-EventFlow, קראו את המאמר שימוש במדיניות של Apigee Model Armor ב-EventFlow.

בטבלה הבאה מוצגת השוואה בין שתי האפשרויות:

התנהגות false (ברירת מחדל): כל אירוע בנפרד ‫true: כל השידור
איך הטקסט נבדק כל אירוע בנפרד, בלי הטקסט של האירועים הקודמים. כל הסטרימינג, עם הטקסט של האירועים הקודמים כהקשר.
כשהלקוח מקבל אירוע אחרי הבדיקה של האירוע עצמו. אחרי שההגנה המוגברת על המודל בדקה אותה.
בקשות של Model Armor אחד לכל אירוע. אחת לכל תשובה.
מגבלת הטוקנים לפי בקשה. אין הגבלה על מספר הטוקנים הכולל בתשובה.

הרכיב <ContinuousScan> קיים רק במדיניות SanitizeModelResponse, ולא במדיניות SanitizeUserPrompt.

הגדרת סריקה רציפה

מגדירים את <ContinuousScan>true</ContinuousScan> ומפנים את <LLMResponseSource> לטקסט באירוע הנוכחי, response.event.current.data:

<SanitizeModelResponse async="false" continueOnError="false"
    enabled="true" name="SMR-ContinuousScan">
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <DisplayName>SMR-ContinuousScan</DisplayName>
  <ModelArmor>
    <TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
  </ModelArmor>
  <LLMResponseSource>{jsonPath('$.candidates[-1].content.parts[-1].text',response.event.current.data,true)}</LLMResponseSource>
  <ContinuousScan>true</ContinuousScan>
</SanitizeModelResponse>

משתמשים בביטוי <LLMResponseSource> שמתאים לפורמט הסטרימינג של המודל:

פורמט הסטרימינג <LLMResponseSource>
‫Gemini‏ (streamGenerateContent?alt=sse) {jsonPath('$.candidates[-1].content.parts[-1].text',response.event.current.data,true)}
השלמות צ'אט שתואמות ל-OpenAI {jsonPath('$.choices[-1].delta.content',response.event.current.data,true)}
Anthropic Claude {jsonPath('$.delta.text',response.event.current.data,true)}

התאמות ושגיאות

כשהערך של <ContinuousScan> מוגדר כ-true, השגיאות הן זמניות או סופיות:

סוג דוגמאות איך המידע מעובד
זמני החיבור ל-Model Armor נותק או ש-Model Armor לא זמין באופן זמני. בוצע ניסיון חוזר. ‫Apigee מתחבר מחדש ובודק שוב את הטקסט שעדיין לא נשלח, כדי שאף אירוע לא יתפספס או יישלח בלי בדיקה. הפעולה הזו מתבצעת עד פעמיים בכל תשובה, בלי קשר ל-continueOnError. אם הבעיה נמשכת, השגיאה הופכת לסופית.
טרמינל התאמה למסנן, שגיאת אימות או הרשאה, חריגה מהמכסה של Model Armor או חוסר תגובה מ-Model Armor במסגרת הזמן הקצוב לתפוגה של 60 שניות. לא בוצע ניסיון חוזר. הבדיקה מסתיימת, ו-continueOnError קובע מה הלקוח מקבל, כפי שמתואר בטבלה הבאה.

אם המדיניות <ContinuousScan> מוגדרת לערך true, היא לא מעבירה את הטקסט שהוסרו ממנו פרטי הזיהוי (צונזר) על ידי Sensitive Data Protection ‏ (SDP) מ-Model Armor. ‫Apigee משחררת אירועים ללא שינוי ומטפלת בהתאמה של הסרת פרטי הזיהוי כמו בכל התאמה אחרת.

במקרה של שגיאה סופית, המאפיין continueOnError קובע מה הלקוח מקבל:

continueOnError מה הלקוח מקבל
false (ברירת מחדל) הלקוח מקבל את האירועים שעברו את הבדיקה, ואז אירוע SSE עם התקלה, כמו steps.sanitize.model.response.FilterMatched,‏ steps.sanitize.modelarmor.ModelArmorAPIFailed או steps.sanitize.modelarmor.AuthenticationFailure. השידור יסתיים. הלקוח לא מקבל טקסט שלא נבדק או טקסט תואם.
true הלקוח מקבל את התשובה המלאה, כולל הטקסט התואם וכל מה שאחריו. שגיאות מסוף לא גורמות לתקלה, ושאר התגובה עוברת בלי בדיקה. המדיניות מגדירה את SanitizeModelResponse.POLICY_NAME.failed לערך true כדי ששלב מאוחר יותר ב-EventFlow יוכל לפעול בהתאם.

כשהערך של <ContinuousScan> מוגדר כ-false, כל אירוע הוא בקשה נפרדת, ואין ניסיונות חוזרים להתחברות מחדש. עם continueOnError="true", התאמה משפיעה רק על האירוע הזה, והכלל עדיין בודק אירועים מאוחרים יותר.

מכסות ומגבלות

הפניה לרכיב צאצא

בקטע הזה מתוארים רכיבי הצאצא של <SanitizeModelResponse>.

<DisplayName>

אפשר להשתמש במאפיין הזה בנוסף למאפיין name כדי לתת למדיניות שם אחר, שנשמע יותר טבעי, ב-UI של עורך ה-proxy לניהול.

הרכיב <DisplayName> משותף לכל סוגי המדיניות.

ערך ברירת המחדל לא רלוונטי
חובה? זה שינוי אופציונלי. אם לא מציינים את <DisplayName>, המערכת משתמשת בערך של מאפיין name של המדיניות.
סוג String
רכיב אב <PolicyElement>
רכיבי צאצא ללא

רכיב <DisplayName> משתמש בתחביר הבא:

תחביר

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

דוגמה

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

לרכיב <DisplayName> אין מאפיינים או רכיבי צאצא.

<IgnoreUnresolvedVariables>

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

ערך ברירת המחדל לא נכון
חובה? אופציונלי
סוג בוליאני
רכיב הורה <SanitizeModelResponse>
רכיבי צאצא ללא

<ModelArmor>

מכיל את הגדרת התבנית של Model Armor. הרכיב הצאצא <TemplateName> מציין באיזו תבנית של Model Armor משתמשים כדי להסיר תוכן זדוני או רגיש מהתשובה של ה-LLM.

ערך ברירת המחדל לא רלוונטי
חובה? חובה
סוג אובייקט מורכב
רכיב הורה <SanitizeModelResponse>
רכיבי צאצא <TemplateName>

הרכיב <ModelArmor> משתמש בתחביר הבא:

<ModelArmor>
  <TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
</ModelArmor>

<TemplateName>

התבנית של Model Armor.

ערך ברירת המחדל לא רלוונטי
חובה? חובה
סוג String
רכיב הורה <ModelArmor>
רכיבי צאצא ללא

הרכיב <TemplateName> משתמש בתחביר הבא:

תחביר

<ModelArmor>
  <TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
</ModelArmor>

דוגמה

בדוגמה הזו נעשה שימוש במשתני זרימה של Apigee כדי לאכלס את המידע הנדרש.

<ModelArmor>
  <TemplateName>projects/{organization.name}/locations/{system.region.name}/templates/{id}</TemplateName>
</ModelArmor>

<UserPromptSource>

המיקום של המטען הייעודי (payload) שממנו צריך לחלץ את טקסט ההנחיה של המשתמש. אם תספקו את הרכיב הזה, המדיניות תשלח את הנחיית המשתמש ל-Model Armor לצד התשובה של המודל, כדי להסיר תוכן זדוני או רגיש בהתאם להקשר. אם משמיטים את הרכיב הזה, המדיניות מסירה תוכן זדוני או רגיש רק מהתשובה של המודל, והמדיניות נפרסת ופועלת בהצלחה. תומך רק בערכי טקסט של מחרוזות.

השדה הזה תומך בתחביר של תבנית ההודעה של Apigee, כולל שימוש ב משתנים או בפונקציות של נתיב JSON. לדוגמה:

{jsonpath('$.input.prompt.text',request.content,false)}
ערך ברירת המחדל לא רלוונטי
חובה? אופציונלי
סוג String
רכיב הורה <SanitizeModelResponse>
רכיבי צאצא ללא

<LLMResponseSource>

המיקום של המטען הייעודי (payload) לחילוץ התגובה של ה-LLM. אפשר להשתמש רק בערכי טקסט של מחרוזות.

השדה הזה תומך בתחביר של תבנית ההודעה של Apigee, כולל שימוש ב משתנים או בפונקציות של נתיב JSON. לדוגמה:

{jsonpath('$.input.prompt.text',request.content,false)}
ערך ברירת המחדל {jsonPath('$.candidates[-1].content.parts',response.content)}
חובה? אופציונלי
סוג String
רכיב הורה <SanitizeModelResponse>
רכיבי צאצא ללא

<FunctionCallSource>

המיקום של הארגומנטים של בקשה להפעלת פונקציה שצריך לחלץ מהתשובה של המודל. המדיניות משתמשת ברכיב הזה כחלופה אם <LLMResponseSource> מחזיר ערך ריק, וזה קורה כשהמודל מחזיר קריאה להפעלת פונקציה במקום תוכן טקסט.

השדה הזה תומך בתחביר של תבניות הודעות, כולל פונקציות של נתיב JSON.

ערך ברירת המחדל {jsonPath('$.candidates[-1].content.parts[-1].functionCall.args',response.content)}
חובה? אופציונלי
סוג String
רכיב הורה <SanitizeModelResponse>
רכיבי צאצא ללא

<ContinuousScan>

מגדירים את הערך true כדי לבדוק את כל התגובה בסטרימינג (SSE) כסטרימינג אחד, באמצעות הסרת תוכן זדוני או רגיש בסטרימינג של Model Armor. המדיניות בודקת כל אירוע יחד עם הטקסט של כל האירועים הקודמים, והלקוח מקבל כל אירוע בשלמותו וללא שינוי, רק אחרי שהמודל Model Armor בודק אותו. המדיניות לא מעבירה את הטקסט שהוסרו ממנו פרטי הזיהוי (צונזר) באמצעות Sensitive Data Protection ‏ (SDP) מ-Model Armor.

כשהערך הוא false או שהמדיניות מושמטת, המדיניות בודקת כל אירוע בנפרד. הרכיב חל רק כשהמדיניות פועלת ב-SSE EventFlow, ואין לו השפעה במקומות אחרים. מידע נוסף זמין במאמר הסרת תוכן זדוני או רגיש מתשובות בסטרימינג של אירועים שנשלחים מהשרת (SSE).

ערך ברירת המחדל לא נכון
חובה? אופציונלי
סוג בוליאני
רכיב הורה <SanitizeModelResponse>
רכיבי צאצא ללא

הרכיב <ContinuousScan> משתמש בתחביר הבא:

<ContinuousScan>true</ContinuousScan>

משתני זרימה

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

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

שם המשתנה תיאור
SanitizeModelResponse.POLICY_NAME.templateUsed מציינת באיזו תבנית של Model Armor משתמשים. לדוגמה: projects/myproject/locations/us-west1/templates/mytemplate
SanitizeModelResponse.POLICY_NAME.userPrompt מציין את תוכן הפרומפט שמשמש לקריאה ל-Model Armor כדי להסיר תוכן זדוני או רגיש מהתוכן.
SanitizeModelResponse.POLICY_NAME.modelResponse מציין את תוכן התשובה של ה-LLM שמשמש לקריאה ל-Model Armor כדי להסיר תוכן זדוני או רגיש.
SanitizeModelResponse.POLICY_NAME.responseFromModelArmor מציינת את תגובת ה-JSON מ-Model Armor. כשהערך של <ContinuousScan> הוא true, השדה מכיל את התשובה האחרונה.
SanitizeModelResponse.POLICY_NAME.filterMatchState מציין אם הייתה התאמה למסנן. הערכים התקינים כוללים את MATCH_FOUND ו-NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.invocationResult שדה שמציין את תוצאת ההפעלה, בלי קשר לסטטוס ההתאמה. הוא יכול לכלול את הפרטים הבאים:
  • הצלחה: כל המסננים הופעלו בהצלחה.
  • חלקית: המערכת דילגה על חלק מהמסננים או שההפעלה שלהם נכשלה.
  • נכשל: כל המסננים דולגו או שההפעלה שלהם נכשלה.
SanitizeModelResponse.POLICY_NAME.raiFilterResult.executionState תוצאת ההפעלה של מסנן ה-RAI. הערכים התקינים כוללים את EXECUTION_SUCCESS ו-EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.raiFilterResult.matchState מצב ההתאמה של מסנן ה-RAI. הערכים התקינים כוללים את MATCH_FOUND ו-NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.executionState מצב ההפעלה של תוצאת הבדיקה של מסנן ה-SDP. הערכים התקינים כוללים את EXECUTION_SUCCESS ו-EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.matchState מצב ההתאמה של תוצאת הבדיקה של מסנן ה-SDP. הערכים התקינים כוללים את MATCH_FOUND ו-NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.executionState מצב הביצוע של תוצאת הסרת פרטי הזיהוי של מסנן SDP. הערכים התקינים כוללים את EXECUTION_SUCCESS ו-EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.matchState מצב ההתאמה של תוצאת הסרת פרטי הזיהוי של מסנן SDP. הערכים התקינים כוללים את MATCH_FOUND ו-NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.executionState מצב הביצוע של תוצאות הסינון של החדרת פרומפטים ו-Jailbreak. הערכים התקינים כוללים את EXECUTION_SUCCESS ו-EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.matchState מצב התאמה של תוצאות הסינון של החדרת פרומפטים ו-Jailbreak. הערכים התקינים כוללים את MATCH_FOUND ו-NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.executionState מצב ההפעלה של מסנן ה-CSAM. הערכים התקינים כוללים את EXECUTION_SUCCESS ו-EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.matchState מצב ההתאמה של מסנן ה-CSAM. הערכים התקינים כוללים את MATCH_FOUND ו-NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.executionState מצב ההפעלה של מסנן ה-URI הזדוני. הערכים התקינים כוללים את EXECUTION_SUCCESS ו-EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.matchState מצב ההתאמה של מסנן ה-URI הזדוני. הערכים התקינים כוללים את MATCH_FOUND ו-NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorCode קוד שגיאה מותאם אישית שמוחלף אם הוא קיים בתגובה של Model Armor.
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorMessage קוד שגיאה מותאם אישית שמוחלף אם הוא קיים בתגובה של Model Armor.
SanitizeModelResponse.POLICY_NAME.csamFilterMatched ערך בוליאני שמציין אם מסנן ה-CSAM תאם.
SanitizeModelResponse.POLICY_NAME.maliciousURIs רשימה מצורפת של מזהי URI זדוניים שזוהו על ידי מסנן ה-URI הזדוניים.
SanitizeModelResponse.POLICY_NAME.maliciousURIsDetected ערך בוליאני שמציין אם הייתה התאמה למסנן של כתובות ה-URI הזדוניות.
SanitizeModelResponse.POLICY_NAME.matchesFound ערך בוליאני שמציין אם אחד מהמסננים תואם.
SanitizeModelResponse.POLICY_NAME.promptInjectionDetected ערך בוליאני שמציין אם מסנן החדרת הפרומפטים תאם.
SanitizeModelResponse.POLICY_NAME.promptInjectionConfidence רמת הסמך של גלאי החדרת פרומפטים.
SanitizeModelResponse.POLICY_NAME.raiMatchesFound ערך בוליאני שמציין אם מסנן ה-RAI תאם.
SanitizeModelResponse.POLICY_NAME.requestSentToModelArmor מציינת את בקשת ה-JSON שנשלחה אל Model Armor. כשהערך של <ContinuousScan> הוא true, השדה מכיל את הבקשה האחרונה.
SanitizeModelResponse.POLICY_NAME.sanitizeOperation מציין את הפעולה שהמדיניות מבצעת. הערכים התקינים כוללים את SANITIZE_USER_PROMPT ו-SANITIZE_MODEL_RESPONSE.
SanitizeModelResponse.POLICY_NAME.streamReplacements מספר הפעמים שהמדיניות התחברה מחדש ל-Model Armor במהלך התגובה, כשהערך של <ContinuousScan> הוא true. צריך להגדיר רק אם המדיניות חוברה מחדש.
SanitizeModelResponse.POLICY_NAME.lastStreamReplacementCause מציינת את השגיאה שגרמה לחיבור מחדש האחרון כש-<ContinuousScan> מוגדרת לערך true. צריך להגדיר רק אם המדיניות חוברה מחדש.

הפניה לשגיאה

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

שגיאות זמן ריצה

קוד השגיאה סטטוס HTTP מטרה
steps.sanitize.model.response.FilterMatched 400 השגיאה הזו מתרחשת אם ההנחיה של המשתמש לא עוברת את בדיקת התבנית של Model Armor.
steps.sanitize.model.response.SanitizationResponseParsingFailed 500 השגיאה הזו מתרחשת אם אי אפשר לנתח את התגובה של Model Armor.
steps.sanitize.model.response.FailedToExtractUserPrompt 500 השגיאה הזו מתרחשת אם החילוץ האוטומטי של הנחיית המשתמש לערך ברירת המחדל נכשל.
steps.sanitize.model.response.FailedToExtractLLMResponse 500 השגיאה הזו מתרחשת אם חילוץ התשובה האוטומטי של המודל לערך ברירת המחדל נכשל.
steps.sanitize.model.response.InternalError 500 השגיאה הזו מתרחשת אם יש שגיאת שרת פנימית.
steps.sanitize.model.response.ModelArmorTemplateNameExtractionFailed 500 השגיאה הזו קורית אם אי אפשר לפתור את שם התבנית.
steps.sanitize.model.response.AuthenticationFailure 500 השגיאה הזו מתרחשת אם לחשבון השירות אין הרשאה לשלוח קריאה ל-Model Armor API.
steps.sanitize.model.response.ModelArmorAPIFailed 500 השגיאה הזו מתרחשת אם Model Armor API מחזיר שגיאה.
steps.sanitize.model.response.ModelArmorCalloutError 500 השגיאה הזו מתרחשת אם הקריאה ל-Model Armor API נכשלת.
steps.sanitize.modelarmor.ServiceUnavailable 500 השגיאה הזו מתרחשת אם שירות Model Armor לא זמין.

שגיאות בפריסה

השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שמכיל את המדיניות הזו.

שם השגיאה מטרה
The ModelArmor/TemplateName element is required. השגיאה הזו מתרחשת אם הרכיב <TemplateName> לא נמצא ב-<ModelArmor>.
The TemplateName element value is required. השגיאה הזו מתרחשת אם הערך של <TemplateName> ריק.

משתני תקלות

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

משתנים כאשר: דוגמה
fault.name="FAULT_NAME" ‫FAULT_NAME הוא שם התקלה, כמו שמופיע בטבלה שגיאות זמן ריצה שלמעלה. שם התקלה הוא החלק האחרון של קוד השגיאה. fault.name Matches "UnresolvedVariable"
SanitizeModelResponse.POLICY_NAME.failed ‫POLICY_NAME הוא השם שהמשתמש נתן למדיניות שגרמה לשגיאה. SanitizeModelResponse.sanitize-response.failed = true

דוגמה לתגובת שגיאה

{
  "fault": {
    "faultstring": "SanitizeModelResponse[sanitize-response]: unable to resolve variable [variable_name]",
    "detail": {
      "errorcode": "steps.sanitizemodelresponse.UnresolvedVariable"
    }
  }
}

דוגמה לכלל שגיאה

<FaultRule name="SanitizeModelResponse Faults">
    <Step>
        <Name>SMR-CustomSetVariableErrorResponse</Name>
        <Condition>(fault.name = "SetVariableFailed")</Condition>
    </Step>
    <Condition>(sanitizemodelresponse.failed = true)</Condition>
</FaultRule>

קודי שגיאה והודעות שגיאה בתבניות של "הגנה מוגברת על המודל"

התבנית של Model Armor תומכת בשינוי קודי השגיאה והודעות השגיאה שמופיעות בבקשות ה-API של המדיניות SanitizeModelResponse. אם המשתמש מגדיר את השינויים, קודי השגיאה והודעות השגיאה של Model Armor יאכלסו את משתני הזרימה.

לדוגמה, תגובה עם קודי שגיאה והודעות של Model Armor יכולה להיראות כך:

{
"sanitizationResult": {
  "filterMatchState": "MATCH_FOUND",
  "filterResults": {...},
  "sanitizationMetadata": {
    "errorCode": "890",
    "errorMessage": "get out"
  },
  "invocationResult": "SUCCESS"
  }
}

סכימות

כל סוג מדיניות מוגדר על ידי סכימת XML‏ (.xsd). לעיון, סכימות המדיניות זמינות ב-GitHub.