Kebijakan SanitizeModelResponse

Kebijakan yang dapat diperluas

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat dokumentasi Apigee Edge.

Kebijakan SanitizeModelResponse melindungi klien AI dari konten berbahaya atau menyinggung dengan membersihkan respons dari model AI generatif. Kebijakan ini menggunakan Model Armor untuk mengevaluasi respons model terhadap konten berbahaya atau menyinggung, sehingga memungkinkan perlindungan native untuk klien dan workload AI menggunakan Apigee. Model Armor adalah layanan Google Cloud yang menawarkan langkah-langkah keamanan dan keselamatan AI untuk memitigasi risiko yang terkait dengan model bahasa besar (LLM).

Kebijakan ini digunakan bersama dengan kebijakan SanitizeUserPrompt.

Kebijakan ini adalah Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin memiliki implikasi biaya atau pemanfaatan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaan, lihat Jenis kebijakan.

Sebelum memulai

Sebelum menggunakan kebijakan SanitizeModelResponse, Anda harus menyelesaikan tugas-tugas berikut:

  • Membuat template Model Armor. Langkah ini harus diselesaikan sebelum Anda membuat kebijakan SanitizeModelResponse.
  • Tetapkan endpoint API untuk layanan Model Armor.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk menerapkan dan menggunakan kebijakan SanitizeModelResponse, minta administrator untuk memberi Anda peran IAM berikut pada akun layanan yang Anda gunakan untuk men-deploy proxy Apigee:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Mengaktifkan API

Aktifkan API Model Armor, jika belum diaktifkan.

Peran yang diperlukan untuk mengaktifkan API

Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Service Usage Admin (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.

Aktifkan API

Elemen <SanitizeModelResponse>

Menentukan kebijakan SanitizeModelResponse.

Nilai Default Lihat tab Kebijakan Default di bawah
Wajib? Wajib
Jenis Objek kompleks
Elemen Induk T/A
Elemen Turunan <DisplayName>
<IgnoreUnresolvedVariables>
<ModelArmor>
<UserPromptSource>
<LLMResponseSource>
<FunctionCallSource>
<ContinuousScan>

Elemen <SanitizeModelResponse> menggunakan sintaksis berikut:

Sintaksis

<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>

Kebijakan Default

Contoh berikut menunjukkan setelan default saat Anda menambahkan kebijakan SanitizeModelResponse ke alur permintaan di UI 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>

Saat Anda menyisipkan kebijakan SanitizeModelResponse baru menggunakan UI Apigee, template akan berisi stub untuk semua operasi yang memungkinkan. Lihat informasi di bawah tentang elemen yang diperlukan.

Elemen ini memiliki atribut berikut yang umum untuk semua kebijakan:

Atribut Default Wajib? Deskripsi
name T/A Wajib

Nama internal kebijakan. Nilai atribut name dapat berisi huruf, angka, spasi, tanda hubung, garis bawah, dan titik. Nilai ini tidak boleh melebihi 255 karakter.

Secara opsional, gunakan elemen <DisplayName> untuk memberi label pada kebijakan di editor proxy UI pengelolaan dengan nama bahasa alami yang berbeda.

continueOnError false Opsional Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Perilaku ini wajar terjadi untuk sebagian besar kebijakan. Tetapkan ke true agar eksekusi alur berlanjut meskipun setelah kebijakan gagal. Lihat juga:
enabled benar Opsional Tetapkan ke true untuk menerapkan kebijakan. Tetapkan ke false untuk menonaktifkan kebijakan. Kebijakan tidak akan diterapkan meskipun tetap terlampir ke alur.
async   false Tidak digunakan lagi Atribut ini tidak digunakan lagi.

Tabel berikut memberikan deskripsi tingkat tinggi tentang elemen turunan <SanitizeModelResponse>:

Elemen Turunan Wajib? Deskripsi
<DisplayName> Opsional Nama kebijakan.

<IgnoreUnresolvedVariables> Opsional Menentukan apakah pemrosesan akan berhenti jika variabel yang digunakan untuk nama template atau payload Model Armor tidak terselesaikan.
<ModelArmor> Wajib Berisi informasi yang diperlukan untuk menentukan template Model Armor.
<UserPromptSource> Opsional Lokasi payload tempat mengekstrak teks perintah pengguna. Kebijakan ini mengirimkan teks ini ke Model Armor sebagai konteks untuk sanitasi respons. Jika Anda menghapus elemen ini, kebijakan hanya akan mengirimkan respons LLM ke Model Armor untuk sanitasi, dan kebijakan akan di-deploy dan dijalankan dengan berhasil. Hanya mendukung nilai teks string.

Kolom ini mendukung sintaksis template pesan Apigee, termasuk penggunaan variabel atau fungsi Jalur JSON.

Contoh:

{jsonpath('$.contents[-1].parts[-1].text',request.content,false)}
<LLMResponseSource> Opsional Lokasi payload untuk teks respons LLM yang akan diekstrak. Jika dihilangkan, jalur JSON generateContent Agent Platform default akan diterapkan: {jsonPath('$.candidates[-1].content.parts',response.content)}. Hanya nilai teks string yang didukung.

Kolom ini mendukung sintaksis template pesan Apigee, termasuk penggunaan variabel atau fungsi Jalur JSON.

Contoh:

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

<FunctionCallSource> Opsional Lokasi argumen panggilan fungsi yang akan diekstrak dari respons model. Kebijakan ini menggunakan elemen ini sebagai pengganti saat <LLMResponseSource> menampilkan nilai kosong pada giliran pemanggilan fungsi.

Default: {jsonPath('$.candidates[-1].content.parts[-1].functionCall.args',response.content)}

<ContinuousScan> Opsional

Menentukan apakah akan memeriksa seluruh respons streaming (SSE), mengirimkan setiap peristiwa ke klien hanya setelah Model Armor memeriksanya. Hanya berlaku jika kebijakan berjalan di EventFlow SSE.

Default: false

Membersihkan respons Peristiwa yang Dikirim Server (SSE) streaming

Dalam EventFlow SSE, gunakan <ContinuousScan> untuk memilih salah satu dari dua opsi: periksa setiap peristiwa secara terpisah (false, default), atau periksa seluruh streaming menggunakan pembersihan streaming Model Armor (true). Dengan true, respons lengkap biasanya selesai lebih cepat, karena kebijakan memeriksa streaming melalui satu koneksi saat model masih dibuat, alih-alih membuat permintaan terpisah untuk setiap peristiwa. Namun, waktu hingga token pertama bisa lebih lama. Untuk menambahkan kebijakan ke EventFlow, lihat Menggunakan kebijakan Apigee Model Armor di EventFlow.

Tabel berikut membandingkan kedua opsi tersebut:

Perilaku false (default): setiap peristiwa secara terpisah true: seluruh streaming
Cara teks diperiksa Setiap peristiwa secara terpisah, tanpa teks peristiwa sebelumnya. Seluruh streaming, dengan teks peristiwa sebelumnya sebagai konteks.
Saat klien menerima peristiwa Setelah pemeriksaan peristiwa itu sendiri. Setelah Model Armor memeriksanya.
Permintaan Model Armor Satu per peristiwa. Satu per respons.
Token limit (batas token) Per permintaan. Tidak ada batasan jumlah total token dalam respons.

Elemen <ContinuousScan> hanya ada di kebijakan SanitizeModelResponse, bukan di kebijakan SanitizeUserPrompt.

Mengonfigurasi pemindaian berkelanjutan

Tetapkan <ContinuousScan>true</ContinuousScan> dan arahkan <LLMResponseSource> ke teks dalam peristiwa saat ini, 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>

Gunakan ekspresi <LLMResponseSource> yang sesuai dengan format streaming model Anda:

Format streaming <LLMResponseSource>
Gemini (streamGenerateContent?alt=sse) {jsonPath('$.candidates[-1].content.parts[-1].text',response.event.current.data,true)}
Penyelesaian chat yang kompatibel dengan OpenAI {jsonPath('$.choices[-1].delta.content',response.event.current.data,true)}
Anthropic Claude {jsonPath('$.delta.text',response.event.current.data,true)}

Kecocokan dan error

Jika <ContinuousScan> ditetapkan ke true, error akan bersifat sementara atau terminal:

Jenis Contoh Cara penanganannya
Transien Koneksi ke Model Armor terputus, atau Model Armor tidak tersedia untuk sementara. Dicoba lagi. Apigee akan terhubung kembali dan memeriksa teks yang belum dikirim lagi, sehingga tidak ada peristiwa yang terlewat atau dikirim tanpa diperiksa. Hal ini terjadi hingga dua kali per respons, terlepas dari continueOnError. Jika terus gagal, error akan menjadi terminal.
Terminal Kecocokan filter, error autentikasi atau izin, kuota Model Armor terlampaui, atau tidak ada respons dari Model Armor dalam waktu tunggu 60 detik. Tidak dicoba lagi. Pemeriksaan berakhir, dan continueOnError menentukan apa yang diterima klien, seperti yang dijelaskan dalam tabel berikutnya.

Jika <ContinuousScan> ditetapkan ke true, kebijakan tidak akan mengirimkan teks yang di-de-identifikasi (disamarkan) oleh Sensitive Data Protection (SDP) dari Model Armor. Apigee merilis peristiwa tanpa perubahan dan menangani kecocokan de-identifikasi seperti kecocokan lainnya.

Pada error terminal, atribut continueOnError menentukan apa yang diterima klien:

continueOnError Yang diterima klien
false (default) Klien menerima peristiwa yang lulus pemeriksaan, lalu peristiwa SSE dengan kesalahan, seperti steps.sanitize.model.response.FilterMatched, steps.sanitize.modelarmor.ModelArmorAPIFailed, atau steps.sanitize.modelarmor.AuthenticationFailure. Streaming kemudian berakhir. Klien tidak menerima teks yang tidak diperiksa atau cocok.
true Klien menerima respons lengkap, termasuk teks yang cocok dan apa pun setelahnya. Error terminal tidak memunculkan kesalahan, dan respons lainnya diteruskan tanpa diperiksa. Kebijakan ini menetapkan SanitizeModelResponse.POLICY_NAME.failed ke true sehingga langkah selanjutnya dalam EventFlow dapat menindaklanjutinya.

Jika <ContinuousScan> ditetapkan ke false, setiap peristiwa adalah permintaan terpisah, dan tidak ada percobaan ulang untuk menghubungkan kembali. Dengan continueOnError="true", kecocokan hanya memengaruhi peristiwa tersebut, dan kebijakan masih memeriksa peristiwa berikutnya.

Kuota dan batas

  • Dengan <ContinuousScan>true</ContinuousScan>, seluruh respons yang di-streaming dihitung sebagai satu permintaan terhadap kuota Model Armor project Anda, ditambah satu untuk setiap koneksi ulang. Dengan false, setiap peristiwa SSE adalah permintaan terpisah.
  • Dengan <ContinuousScan>true</ContinuousScan>, tidak ada batasan jumlah total token dalam respons. Jika tidak, setiap permintaan akan tunduk pada batas token Model Armor.

Referensi elemen turunan

Bagian ini menjelaskan elemen turunan dari <SanitizeModelResponse>.

<DisplayName>

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, more natural-sounding name.

The <DisplayName> element is common to all policies.

Default Value N/A
Required? Optional. If you omit <DisplayName>, the value of the policy's name attribute is used.
Type String
Parent Element <PolicyElement>
Child Elements None

The <DisplayName> element uses the following syntax:

Syntax

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

Example

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

The <DisplayName> element has no attributes or child elements.

<IgnoreUnresolvedVariables>

Menentukan apakah pemrosesan berhenti saat variabel tidak terselesaikan. Tetapkan ke true untuk mengabaikan variabel yang belum terselesaikan dan melanjutkan pemrosesan.

Nilai Default Salah
Wajib? Opsional
Jenis Boolean
Elemen Induk <SanitizeModelResponse>
Elemen Turunan Tidak ada

<ModelArmor>

Berisi konfigurasi template Model Armor. Elemen turunan <TemplateName> menentukan template Model Armor yang digunakan untuk membersihkan respons LLM.

Nilai Default T/A
Wajib? Wajib
Jenis Objek kompleks
Elemen Induk <SanitizeModelResponse>
Elemen Turunan <TemplateName>

Elemen <ModelArmor> menggunakan sintaksis berikut:

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

<TemplateName>

Template Model Armor.

Nilai Default T/A
Wajib? Wajib
Jenis String
Elemen Induk <ModelArmor>
Elemen Turunan Tidak ada

Elemen <TemplateName> menggunakan sintaksis berikut:

Sintaksis

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

Contoh

Contoh ini menggunakan flow variable Apigee untuk mengisi informasi yang diperlukan.

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

<UserPromptSource>

Lokasi payload tempat mengekstrak teks perintah pengguna. Jika Anda menyediakan elemen ini, kebijakan akan mengirimkan perintah pengguna ke Model Armor bersama dengan respons model untuk pembersihan berbasis konteks. Jika Anda menghilangkan elemen ini, kebijakan hanya akan membersihkan respons model, dan kebijakan akan di-deploy serta dijalankan dengan berhasil. Hanya mendukung nilai teks string.

Kolom ini mendukung sintaksis template pesan Apigee, termasuk penggunaan variabel atau fungsi Jalur JSON. Contoh:

{jsonpath('$.input.prompt.text',request.content,false)}
Nilai Default T/A
Wajib? Opsional
Jenis String
Elemen Induk <SanitizeModelResponse>
Elemen Turunan Tidak ada

<LLMResponseSource>

Lokasi payload untuk respons LLM yang akan diekstrak. Hanya nilai teks string yang didukung.

Kolom ini mendukung sintaksis template pesan Apigee, termasuk penggunaan variabel atau fungsi Jalur JSON. Contoh:

{jsonpath('$.input.prompt.text',request.content,false)}
Nilai Default {jsonPath('$.candidates[-1].content.parts',response.content)}
Wajib? Opsional
Jenis String
Elemen Induk <SanitizeModelResponse>
Elemen Turunan Tidak ada

<FunctionCallSource>

Lokasi argumen panggilan fungsi yang akan diekstrak dari respons model. Kebijakan ini menggunakan elemen ini sebagai pengganti saat <LLMResponseSource> menampilkan hasil kosong, yang terjadi saat model menampilkan pemanggilan panggilan fungsi, bukan konten teks.

Kolom ini mendukung sintaksis template pesan, termasuk fungsi JSON Path.

Nilai Default {jsonPath('$.candidates[-1].content.parts[-1].functionCall.args',response.content)}
Wajib? Opsional
Jenis String
Elemen Induk <SanitizeModelResponse>
Elemen Turunan Tidak ada

<ContinuousScan>

Tetapkan ke true untuk memeriksa seluruh respons streaming (SSE) sebagai satu aliran, menggunakan pembersihan streaming Model Armor. Kebijakan ini memeriksa setiap peristiwa bersama dengan teks dari semua peristiwa sebelumnya, dan klien menerima setiap peristiwa secara utuh dan tidak berubah, hanya setelah Model Armor memeriksanya. Kebijakan ini tidak mengirimkan teks yang telah di-de-identifikasi (disamarkan) oleh Sensitive Data Protection (SDP) dari Model Armor.

Jika false atau dihilangkan, kebijakan akan memeriksa setiap peristiwa secara terpisah. Elemen ini hanya berlaku saat kebijakan berjalan di EventFlow SSE, dan tidak berpengaruh di tempat lain. Untuk mengetahui informasi selengkapnya, lihat Membersihkan respons Server-Sent Events (SSE) streaming.

Nilai Default Salah
Wajib? Opsional
Jenis Boolean
Elemen Induk <SanitizeModelResponse>
Elemen Turunan Tidak ada

Elemen <ContinuousScan> menggunakan sintaksis berikut:

<ContinuousScan>true</ContinuousScan>

Variabel alur

Variabel flow dapat digunakan untuk mengonfigurasi perilaku runtime dinamis untuk kebijakan dan flow, berdasarkan header HTTP atau konten pesan, atau konteks yang tersedia di Flow. Untuk mengetahui informasi selengkapnya tentang variabel flow, lihat Referensi variabel flow.

Kebijakan ini menyediakan kumpulan variabel flow hanya baca berikut selama eksekusi. Anda dapat menggunakan flow variable ini dengan kebijakan DataCapture untuk membuat laporan analisis kustom. Untuk mengetahui informasi selengkapnya, lihat Mengumpulkan data pelanggan dengan kebijakan Data Capture.

Nama variabel Deskripsi
SanitizeModelResponse.POLICY_NAME.templateUsed Menentukan template model armor yang digunakan. Contoh: projects/myproject/locations/us-west1/templates/mytemplate
SanitizeModelResponse.POLICY_NAME.userPrompt Menentukan konten perintah yang digunakan untuk panggilan ke Model Armor guna membersihkan konten.
SanitizeModelResponse.POLICY_NAME.modelResponse Menentukan konten respons LLM yang digunakan untuk panggilan ke Model Armor guna membersihkan konten.
SanitizeModelResponse.POLICY_NAME.responseFromModelArmor Menentukan respons JSON dari Model Armor. Jika <ContinuousScan> ditetapkan ke true, berisi respons terbaru.
SanitizeModelResponse.POLICY_NAME.filterMatchState Menentukan apakah filter cocok. Nilai yang valid mencakup MATCH_FOUND dan NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.invocationResult Kolom yang menunjukkan hasil pemanggilan, terlepas dari status kecocokan. Dapat berisi hal berikut:
  • SUCCESS: All filters executed successfully.
  • PARTIAL: Beberapa filter dilewati atau gagal dieksekusi.
  • FAILURE: All filters were skipped or failed execution.
SanitizeModelResponse.POLICY_NAME.raiFilterResult.executionState Hasil eksekusi filter RAI. Nilai yang valid mencakup EXECUTION_SUCCESS dan EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.raiFilterResult.matchState Status kecocokan filter Rai. Nilai yang valid mencakup MATCH_FOUND dan NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.executionState Status eksekusi hasil pemeriksaan filter SDP. Nilai yang valid mencakup EXECUTION_SUCCESS dan EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.matchState Status kecocokan hasil pemeriksaan filter SDP. Nilai yang valid mencakup MATCH_FOUND dan NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.executionState Status eksekusi hasil de-identifikasi filter SDP. Nilai yang valid mencakup EXECUTION_SUCCESS dan EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.matchState Status kecocokan hasil de-identifikasi filter SDP. Nilai yang valid mencakup MATCH_FOUND dan NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.executionState Status eksekusi hasil filter Prompt injection dan Jailbreak. Nilai yang valid mencakup EXECUTION_SUCCESS dan EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.matchState Status kecocokan hasil filter Prompt injection dan Jailbreak. Nilai yang valid mencakup MATCH_FOUND dan NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.executionState Status eksekusi filter CSAM. Nilai yang valid mencakup EXECUTION_SUCCESS dan EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.matchState Status kecocokan filter CSAM. Nilai yang valid mencakup MATCH_FOUND dan NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.executionState Status eksekusi filter URI berbahaya. Nilai yang valid mencakup EXECUTION_SUCCESS dan EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.matchState Status kecocokan filter URI berbahaya. Nilai yang valid mencakup MATCH_FOUND dan NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorCode Kode Error kustom yang diganti jika ada dalam respons Model Armor.
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorMessage Kode Error kustom yang diganti jika ada dalam respons Model Armor.
SanitizeModelResponse.POLICY_NAME.csamFilterMatched Nilai boolean yang menunjukkan apakah filter CSAM cocok.
SanitizeModelResponse.POLICY_NAME.maliciousURIs Daftar URI berbahaya yang ditambahkan yang terdeteksi oleh filter URI berbahaya.
SanitizeModelResponse.POLICY_NAME.maliciousURIsDetected Nilai boolean yang menunjukkan apakah filter URI berbahaya cocok.
SanitizeModelResponse.POLICY_NAME.matchesFound Nilai boolean yang menunjukkan apakah ada filter yang cocok.
SanitizeModelResponse.POLICY_NAME.promptInjectionDetected Nilai boolean yang menunjukkan apakah filter injeksi perintah cocok.
SanitizeModelResponse.POLICY_NAME.promptInjectionConfidence Tingkat keyakinan deteksi prompt injection.
SanitizeModelResponse.POLICY_NAME.raiMatchesFound Nilai boolean yang menunjukkan apakah filter RAI cocok.
SanitizeModelResponse.POLICY_NAME.requestSentToModelArmor Menentukan permintaan JSON yang dikirim ke Model Armor. Jika <ContinuousScan> ditetapkan ke true, berisi permintaan terbaru.
SanitizeModelResponse.POLICY_NAME.sanitizeOperation Menentukan operasi yang dilakukan oleh kebijakan. Nilai yang valid mencakup SANITIZE_USER_PROMPT dan SANITIZE_MODEL_RESPONSE.
SanitizeModelResponse.POLICY_NAME.streamReplacements Menentukan frekuensi kebijakan terhubung kembali ke Model Armor selama respons saat <ContinuousScan> ditetapkan ke true. Hanya ditetapkan jika kebijakan terhubung kembali.
SanitizeModelResponse.POLICY_NAME.lastStreamReplacementCause Menentukan error yang menyebabkan koneksi ulang terbaru saat <ContinuousScan> ditetapkan ke true. Hanya ditetapkan jika kebijakan terhubung kembali.

Referensi error

Bagian ini menjelaskan kode error dan pesan error yang ditampilkan serta variabel error yang ditetapkan oleh Apigee khusus untuk kebijakan <SanitizeModelResponse>. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Hal yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.

Error runtime

Kode error Status HTTP Penyebab
steps.sanitize.model.response.FilterMatched 400 Error ini terjadi jika perintah pengguna tidak lulus pemeriksaan template Model Armor.
steps.sanitize.model.response.SanitizationResponseParsingFailed 500 Error ini terjadi jika respons Model Armor tidak dapat diurai.
steps.sanitize.model.response.FailedToExtractUserPrompt 500 Error ini terjadi jika ekstraksi perintah pengguna otomatis untuk nilai default gagal.
steps.sanitize.model.response.FailedToExtractLLMResponse 500 Error ini terjadi jika ekstraksi respons model otomatis untuk nilai default gagal.
steps.sanitize.model.response.InternalError 500 Error ini terjadi jika ada error server internal.
steps.sanitize.model.response.ModelArmorTemplateNameExtractionFailed 500 Error ini terjadi jika nama template tidak dapat di-resolve.
steps.sanitize.model.response.AuthenticationFailure 500 Error ini terjadi jika akun layanan tidak memiliki izin untuk memanggil Model Armor API.
steps.sanitize.model.response.ModelArmorAPIFailed 500 Error ini terjadi jika Model Armor API menampilkan error.
steps.sanitize.model.response.ModelArmorCalloutError 500 Error ini terjadi jika panggilan API Model Armor gagal.
steps.sanitize.modelarmor.ServiceUnavailable 500 Error ini terjadi jika layanan Model Armor tidak tersedia.

Error saat deployment

Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.

Nama error Penyebab
The ModelArmor/TemplateName element is required. Terjadi jika elemen <TemplateName> di <ModelArmor> tidak ada.
The TemplateName element value is required. Terjadi jika nilai <TemplateName> kosong.

Variabel kesalahan

Variabel ini ditetapkan saat kebijakan ini memicu error saat runtime. Untuk mengetahui informasi selengkapnya, lihat Hal yang perlu Anda ketahui tentang error kebijakan.

Variabel Di mana Contoh
fault.name="FAULT_NAME" FAULT_NAME adalah nama kesalahan, seperti yang tercantum dalam tabel Error runtime di atas. Nama kesalahan adalah bagian terakhir dari kode kesalahan. fault.name Matches "UnresolvedVariable"
SanitizeModelResponse.POLICY_NAME.failed POLICY_NAME adalah nama kebijakan yang ditentukan pengguna yang memunculkan kesalahan. SanitizeModelResponse.sanitize-response.failed = true

Contoh respons error

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

Contoh aturan kesalahan

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

Kode error dan pesan error template Model Armor

Template Model Armor mendukung penggantian kode error dan pesan error yang ditampilkan oleh permintaan API kebijakan SanitizeModelResponse. Jika pengguna menetapkan penggantian, kode error dan pesan error Model Armor akan mengisi flow variable.

Misalnya, respons dengan kode dan pesan error Model Armor dapat terlihat seperti berikut:

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

Skema

Setiap jenis kebijakan ditentukan oleh skema XML (.xsd). Sebagai referensi, skema kebijakan tersedia di GitHub.