הדף הזה רלוונטי ל-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:
- משתמש ב-Model Armor (
roles/modelarmor.user) - צפייה ב-Model Armor (
roles/modelarmor.viewer)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הפעלת ממשקי ה-API
מפעילים את ממשקי ה-API של Model Armor, אם הם עדיין לא מופעלים.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?
רכיב <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 |
לא רלוונטי | חובה |
השם הפנימי של המדיניות. הערך של מאפיין אפשר להשתמש ברכיב |
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> מחזיר ערך ריק בתורות של קריאה להפעלת פונקציות.
ברירת המחדל: |
<ContinuousScan> |
אופציונלי | מציין אם לבדוק את כל התגובה בסטרימינג (SSE), כך שכל אירוע נשלח ללקוח רק אחרי ש-Model Armor בודק אותו. ההגדרה רלוונטית רק כשהמדיניות פועלת ב-SSE ברירת המחדל: |
הסרת תוכן זדוני או רגיש מתגובות של אירועים שנשלחים מהשרת (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", התאמה משפיעה רק על האירוע הזה, והכלל עדיין בודק אירועים מאוחרים יותר.
מכסות ומגבלות
- ב-
<ContinuousScan>true</ContinuousScan>, תשובה מלאה בסטרימינג נספרת כבקשה אחת במכסה של "הגנה מוגברת על המודל" בפרויקט, ובנוסף בקשה אחת לכל חיבור מחדש. ב-false, כל אירוע SSE הוא בקשה נפרדת. - ב-
<ContinuousScan>true</ContinuousScan>אין הגבלה על מספר הטוקנים הכולל בתשובה. אחרת, כל בקשה כפופה למגבלות הטוקנים של Model Armor.
הפניה לרכיב צאצא
בקטע הזה מתוארים רכיבי הצאצא של <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.