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:
- Model Armor User (
roles/modelarmor.user) - Model Armor Viewer (
roles/modelarmor.viewer)
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.
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 Secara opsional, gunakan elemen |
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: |
<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 Default: |
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. Denganfalse, 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>
Gunakan selain atribut name untuk memberi label pada kebijakan di editor proxy UI pengelolaan dengan nama yang berbeda dan lebih terdengar alami.
Elemen <DisplayName> umum untuk semua kebijakan.
| Nilai Default | T/A |
| Wajib? | Opsional. Jika Anda menghilangkan <DisplayName>, nilai atribut name kebijakan akan digunakan. |
| Jenis | String |
| Elemen Induk | <PolicyElement> |
| Elemen Turunan | Tidak ada |
Elemen <DisplayName> menggunakan sintaksis berikut:
Sintaks
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
Contoh
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
Elemen <DisplayName> tidak memiliki atribut atau elemen turunan.
<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:
|
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.