Model Armor के साथ एजेंट रनटाइम में एजेंट गेटवे का इनग्रेस

1. परिचय

इस कोडलैब में, Agent Runtime पर होस्ट किए गए एआई एजेंट के लिए, Agent Gateway के इनग्रेस गवर्नेंस के बारे में बताया गया है.

इनग्रेस (क्लाइंट से एजेंट) मोड में काम करने वाला एजेंट गेटवे, क्लाइंट (जैसे कि असली उपयोगकर्ता, डेस्कटॉप एजेंट, कोडिंग आईडीई, पीयर एजेंट वगैरह) और होस्ट किए गए एजेंट रनटाइम के बीच होने वाली बातचीत को कंट्रोल करता है. इस मोड का इस्तेमाल, एजेंट को क्लाइंट से मिले प्रॉम्प्ट इंजेक्शन अटैक या नुकसान पहुंचाने वाले कॉन्टेंट से बचाने के लिए किया जाता है. सभी एजेंट इंटरैक्शन के लिए नेटवर्क एंट्री पॉइंट को सुरक्षित करने के लिए, सभी इनबाउंड ट्रैफ़िक को अनुमति देने वाले एक्सटेंशन और मॉडल आर्मर का इस्तेमाल करके प्रोसेस किया जाता है.

आपने क्या बनाया है

  • इनग्रेस (क्लाइंट से एजेंट) मोड में एजेंट गेटवे
  • मॉडल के लिए तय किए गए सुरक्षा नियमों के उल्लंघन से जुड़ी अनुमति देने वाला एक्सटेंशन
  • एजेंट की पहचान के साथ एजेंट रनटाइम ADK एजेंट
  • MCP का इस्तेमाल करके एजेंट ने Cloud Storage फ़ाइल के डेटा के बारे में क्वेरी की
  • एलएलएम के प्रॉम्प्ट और जवाबों की जांच करने के लिए, मॉडल आर्मर टेंप्लेट
  • डेटा की पहचान छिपाने के लिए, संवेदनशील डेटा की सुरक्षा से जुड़े टेंप्लेट

figure1

पहली इमेज. कोडलैब का स्ट्रक्चर

आपको ये सब सीखने को मिलेगा

  • किसी एजेंट को भेजे जाने वाले ट्रैफ़िक की जांच करने के लिए, एजेंट गेटवे को कैसे डिप्लॉय करें
  • Model Armor की अनुमति देने वाले एक्सटेंशन और डेलिगेशन को कॉन्फ़िगर करने का तरीका
  • कस्टम मॉडल आर्मर टेंप्लेट बनाने और डिप्लॉय करने का तरीका
  • संवेदनशील डेटा की सुरक्षा के लिए कस्टम टेंप्लेट बनाने और उन्हें डिप्लॉय करने का तरीका
  • एलएलएम की जांच करने से जुड़ी नीतियों की जांच और पुष्टि कैसे करें

आपको इन चीज़ों की ज़रूरत पड़ेगी

  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट
  • नेटवर्किंग सेवाएं, BigQuery डेटासेट, और एजेंट प्लैटफ़ॉर्म के संसाधनों को उपलब्ध कराने के लिए IAM अनुमतियां
  • Google Cloud CLI (gcloud कॉम्पोनेंट) इंस्टॉल किया गया हो और POSIX के साथ काम करने वाला शेल (bash या zsh) हो
  • कमांड-लाइन टूल: git, curl, jq (JSON प्रोसेसर), Python 3, और uv (Python पैकेज मैनेजर)

2. कॉन्सेप्ट

ट्रैफ़िक की दिशा और गेटवे की भूमिकाएं

Agent Gateway, एजेंट के बारे में जानकारी रखने वाले नेटवर्क प्रॉक्सी के तौर पर काम करता है. हालांकि, ट्रैफ़िक की दिशा के आधार पर इसकी भूमिका बदल जाती है:

  • एजेंट-टू-एनीवेयर (ईग्रेस) मोड: यह आउटबाउंड प्रॉक्सी के तौर पर काम करता है. जब कोई एजेंट बाहरी डेटाबेस टूल, तीसरे पक्ष के एमसीपी सर्वर या एपीआई को कॉल करता है, तो इग्रेस गेटवे इन कामों को मैनेज करता है: सेवा की खोज, राउटिंग, म्यूचल टीएलएस (mTLS), OAuth क्रेडेंशियल का डाइनैमिक इंजेक्शन, और एंडपॉइंट के ऐक्सेस को कंट्रोल करना.
  • क्लाइंट-टू-एजेंट (इनग्रेस) मोड: यह फ़्रंटएंड सुरक्षा गेटवे के तौर पर काम करता है. इसका मुख्य मकसद, एजेंट के एक्ज़ीक्यूशन रनटाइम के ऐक्सेस को सुरक्षित रखना है. इसके लिए, यह आम बोलचाल की भाषा में लिखे गए प्रॉम्प्ट को एजेंटिक कोड या एआई मॉडल तक पहुंचने से पहले ही रोक देता है और उन्हें सुरक्षित बनाता है.

एजेंट रनटाइम का इनग्रेस पाथ

Agent Runtime पर होस्ट किए गए एजेंट को टारगेट करने वाले क्लाइंट के अनुरोध, aiplatform.googleapis.com एपीआई एंडपॉइंट पर भेजे जाते हैं.

POST https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}:query

एपीआई एंडपॉइंट को मिलने वाली यह इनबाउंड कम्यूनिकेशन स्ट्रीम, क्लाइंट से एजेंट तक पहुंचने का रास्ता दिखाती है.

Google के मैनेज किए गए इस इनग्रेस पाथ को सुरक्षित करने के लिए, Agent Gateway सीधे तौर पर एपीआई की सेवा देने वाले इन्फ़्रास्ट्रक्चर लेयर पर Google Front End (GFE) के साथ इंटिग्रेट होता है. मैनेज किए गए एजेंट को एजेंट रनटाइम पर डिप्लॉय करते समय, Google, नेटवर्क एज पर आने वाले क्लाइंट के अनुरोधों के साथ, इनग्रेस गेटवे की अनुमति देने वाली नीति को मूल रूप से बाइंड करता है.

figure2

दूसरी इमेज. एजेंट गेटवे से एजेंट रनटाइम तक इनग्रेस गवर्नेंस

जांच, अनुरोधों के एजेंट रनटाइम में जाने से पहले फ़्रंटएंड टियर पर होती है. इसलिए, इस आर्किटेक्चर में कोई अतिरिक्त नेटवर्किंग ओवरहेड या इंटरनल हॉप लेटेन्सी नहीं होती है. स्केलिंग को फ़्रंटएंड इन्फ़्रास्ट्रक्चर अपने-आप मैनेज करता है. इसलिए, इंटरनल आईपी रेंज, लोड बैलेंसर या कस्टम डीएनएस राउट को मैनेज करने की ज़रूरत नहीं होती.

Model Armor की मदद से, जवाब में मौजूद ख़तरनाक कॉन्टेंट को तुरंत हटाना

कॉल करने वाले के क्रेडेंशियल का आकलन करना और आईएएम ऐक्सेस कंट्रोल (roles/aiplatform.user) लागू करना, aiplatform API hosting tier की मूल सुविधा है. इनग्रेस गेटवे खुद पहचान की पुष्टि नहीं करता है. इसके बजाय, यह CONTENT_AUTHZ प्रोफ़ाइल के साथ कॉन्फ़िगर किए गए अनुमति देने वाले एक्सटेंशन का इस्तेमाल करके, कॉन्टेंट की सुरक्षा पर फ़ोकस करता है. यह गेटवे, नीति लागू करने वाले पॉइंट के तौर पर काम करता है. यह एआई एजेंट के रीज़निंग लूप या एलएलएम तक पहुंचने से पहले, नैचुरल लैंग्वेज में दिए गए प्रॉम्प्ट को इंटरसेप्ट करता है.

जब उपयोगकर्ता का कोई प्रॉम्प्ट, फ़्रंटएंड सेवा पर पहुंचता है, तो गेटवे, क्षेत्रीय Model Armor की अनुमति देने वाली एक्सटेंशन सेवा को ext_proc (बाहरी प्रोसेसिंग) कॉलआउट शुरू करता है. यह कॉल, Model Armor dataplane को स्ट्रीम करता है. Model Armor, नैचुरल लैंग्वेज फ़ायरवॉल के तौर पर काम करता है. यह टेक्स्ट का आकलन करके, चालू टेंप्लेट के हिसाब से सुरक्षा और सुरक्षा से जुड़े जोखिमों की जांच करता है:

  • इनडायरेक्ट प्रॉम्प्ट इंजेक्शन और जेलब्रेक करने की कोशिशें
  • खतरनाक यूआरएल, आपत्तिजनक भाषा या असुरक्षित कॉन्टेंट
  • व्यक्तिगत पहचान से जुड़ी जानकारी (PII) और संवेदनशील डेटा लीक होना

अगर टेम्प्लेट में संवेदनशील डेटा की सुरक्षा (SDP) फ़िल्टर शामिल हैं, तो Model Armor, Cloud SDP सेवा को एक और gRPC कॉल करता है. Cloud SDP, तय किए गए टेंप्लेट का इस्तेमाल करके पेलोड की जांच करता है. साथ ही, पहचान छिपाने या डेटा छिपाने के लिए किए गए अनुरोध को पूरा करता है. इसके बाद, सुरक्षित तरीके से आगे भेजने के लिए, साफ़ किया गया नतीजा वापस चेन में भेजता है.

अगर नीति के उल्लंघन या बिना छिपाए गए संवेदनशील डेटा के मैच होने का पता चलता है, तो गेटवे, रनटाइम में डेटा के पहुंचने से पहले ही पेलोड को ब्लॉक कर देता है या उसमें से संवेदनशील डेटा को छिपा देता है. इस वजह से, एआई एजेंट ऐप्लिकेशन सुरक्षित रहता है. साथ ही, यह कभी भी नुकसान पहुंचाने वाले या बिना बदलाव किए गए पेलोड को प्रोसेस नहीं करता.

यहां कॉन्सेप्ट वाला हिस्सा खत्म होता है... अब सेटअप सेक्शन पर जाएं.

3. सेटअप

ज़रूरी IAM भूमिकाएं

इस कोडलैब में संसाधन बनाने के लिए, इन भूमिकाओं की ज़रूरत होती है:

कैटगरी

ज़रूरी IAM भूमिका (आईडी)

ब्यौरा

एपीआई मैनेजमेंट

roles/serviceusage.serviceUsageAdmin

Google Cloud की एपीआई सेवाएं चालू करना

नेटवर्किंग और गेटवे

roles/networkservices.admin

एजेंट गेटवे को चालू करना

सेवा एक्सटेंशन

roles/serviceextensions.admin

रूटिंग एक्सटेंशन कॉन्फ़िगर करना

नेटवर्क सिक्योरिटी

roles/networksecurity.admin

अनुमति से जुड़ी नीतियां लागू करना

संवेदनशील डेटा की सुरक्षा

roles/dlp.admin

एसडीपी की जांच और पहचान छिपाने वाले टेंप्लेट मैनेज करना

मॉडल आर्मर

roles/modelarmor.admin

सुरक्षा से जुड़े टेंप्लेट बनाना और उन्हें मैनेज करना

एजेंट प्लैटफ़ॉर्म

roles/aiplatform.admin

एजेंट रनटाइम वर्कलोड डिप्लॉय करना

Cloud Storage

roles/storage.admin

डिप्लॉयमेंट और ग्राहक से जुड़ा डेटा बकेट मैनेज करें

IAM एडमिन

roles/resourcemanager.projectIamAdmin

एजेंट की पहचान के लिए, प्रोजेक्ट-लेवल की अनुमतियां बाइंड करना

लॉग और ऑडिटिंग

roles/logging.viewer

ट्रेस और ऑडिट लॉग की जांच करना

इसके अलावा, roles/admin या लेगसी भूमिका roles/owner जैसी सामान्य भूमिका का इस्तेमाल करें.

अपने प्रोजेक्ट को ऐक्सेस करना

इस कोडलैब में, Google Cloud के किसी एक प्रोजेक्ट का इस्तेमाल किया जाता है. कॉन्फ़िगरेशन के चरणों में, gcloud सीएलआई और Linux शेल कमांड का इस्तेमाल किया जाता है.

सबसे पहले, अपने Google Cloud प्रोजेक्ट की कमांड लाइन ऐक्सेस करें:

प्रोजेक्ट आईडी सेट करना

gcloud config set project SET_YOUR_PROJECT_ID_HERE

सेशन की पुष्टि करना

# login to gcloud cli
gcloud auth login
# login for gcloud api
gcloud auth application-default login

शेल एनवायरमेंट वैरिएबल सेट करना

# set custom var for slug (eg, "foo") and region preference
export SLUG="foo"
export REGION="us-central1"
echo ${SLUG}
echo ${REGION}
# create project vars (automatic)
export PROJ_ID=$(gcloud config list --format="value(core.project)")
export PROJ_NO=$(gcloud projects describe ${PROJ_ID} --format="value(projectNumber)")
export ORG_ID=$(gcloud projects get-ancestors ${PROJ_ID} --format="value(id)" | tail -n 1)
export USER_IDENTITY=$(gcloud config get-value account)
echo ${PROJ_ID}
echo ${PROJ_NO}
echo ${ORG_ID}
echo ${USER_IDENTITY}
# create resource vars (automatic)
export AGW_NAME="agw-${SLUG}-${REGION}-cta"
export AGW_URI="projects/${PROJ_ID}/locations/${REGION}/agentGateways/${AGW_NAME}"
export RE_AGENT_NAME="agent-crm"
export RE_AGENT_ID_SET="principalSet://agents.global.org-${ORG_ID}.system.id.goog/attribute.platformContainer/aiplatform/projects/${PROJ_NO}"
export STAGING_BUCKET="agent-staging-${PROJ_NO}"
export DATA_BUCKET="customer-data-${PROJ_NO}"
export MCP_URL="https://storage.mtls.googleapis.com/storage/mcp"
echo ${AGW_NAME}
echo ${AGW_URI}
echo ${RE_AGENT_NAME}
echo ${RE_AGENT_ID_SET}
echo ${STAGING_BUCKET}
echo ${DATA_BUCKET}
echo ${MCP_URL}
# create local dir for config files
mkdir -p cfg

अगर Google Cloud SDK को खुद से मैनेज किया जा रहा है (यानी कि Cloud Shell के बाहर), तो कॉम्पोनेंट को नए वर्शन में अपडेट करें.

# update gcloud cli
gcloud components update

एपीआई सेवाएं चालू करना

# enable google apis (agent platform bundle, part 1)
gcloud services enable \
  agentregistry.googleapis.com \
  aiplatform.googleapis.com \
  apphub.googleapis.com \
  apptopology.googleapis.com \
  cloudapiregistry.googleapis.com \
  cloudtrace.googleapis.com \
  compute.googleapis.com \
  dataform.googleapis.com \
  iam.googleapis.com \
  iamconnectors.googleapis.com \
  iap.googleapis.com \
  logging.googleapis.com \
  modelarmor.googleapis.com \
  monitoring.googleapis.com \
  networksecurity.googleapis.com \
  networkservices.googleapis.com \
  notebooks.googleapis.com \
  observability.googleapis.com
# enable google apis (agent platform bundle, part 2)
gcloud services enable \
  securitycenter.googleapis.com \
  saasservicemgmt.googleapis.com \
  storage.googleapis.com \
  telemetry.googleapis.com \
  texttospeech.googleapis.com
# enable google apis (all the rest)
gcloud services enable \
  dlp.googleapis.com

सेटअप का हिस्सा यहीं खत्म होता है... अब गेटवे सेक्शन पर जाएं.

4. गेटवे

Google की ओर से मैनेज किए जाने वाले एजेंट गेटवे को क्लाइंट-टू-एजेंट (CLIENT_TO_AGENT) मोड में डिप्लॉय करें. एग्रेस गेटवे को आउटबाउंड कॉल को रूट करने के लिए, एजेंट रजिस्ट्री के साथ असोसिएशन की ज़रूरत होती है. हालांकि, इनग्रेस गेटवे सीधे तौर पर फ़्रंटएंड टियर पर बाइंड होता है. इससे, एजेंट रनटाइम को टारगेट करने वाले इनकमिंग प्रॉम्प्ट के लिए, इनलाइन एनफ़ोर्समेंट पॉइंट के तौर पर काम किया जा सकता है.

डेटा बाहर जाने से रोकने वाली नीतियां, अक्सर गेटवे लेयर पर DRY_RUN मोड में शुरू होती हैं. हालांकि, डेटा आने से रोकने वाली नीतियां (CONTENT_AUTHZ) सीधे तौर पर लागू किए गए मोड में डिप्लॉय की जाती हैं. हालांकि, सिर्फ़ ऑडिट करने के लिए लॉगिंग या सक्रिय तौर पर ब्लॉक करने की सुविधा को, अलग-अलग Model Armor टेंप्लेट में अपस्ट्रीम के तौर पर कंट्रोल किया जाता है.

गेटवे बनाना

# create agent gateway config file
cat > cfg/${AGW_NAME}.yaml <<EOF
name: ${AGW_NAME}
protocols:
  - MCP
googleManaged:
  governedAccessPath: CLIENT_TO_AGENT
EOF
# import agent gateway config file (create gateway)
gcloud network-services agent-gateways import ${AGW_NAME} \
  --source="cfg/${AGW_NAME}.yaml" \
  --location=${REGION}

गेटवे की पुष्टि करना

# list agent gateways (in region)
gcloud network-services agent-gateways list --location=${REGION}
# show agent gateway details (verify deployment state)
gcloud network-services agent-gateways describe ${AGW_NAME} --location=${REGION}

गेटवे का हिस्सा यहीं खत्म होता है... अब मॉडल आर्मर सेक्शन पर चलते हैं.

5. मॉडल आर्मर

एसडीपी टेंप्लेट

Model Armor के जवाब वाले टेंप्लेट में इस्तेमाल करने के लिए, संवेदनशील डेटा की सुरक्षा (SDP) से जुड़ा डेटा की जांच करने और उसकी पहचान छिपाने वाला टेंप्लेट बनाएं. इस कॉन्फ़िगरेशन से, अमेरिका के सोशल सिक्योरिटी नंबर (एसएसएन) को छिपाने के लिए फ़्लैग किया जाता है.

डेटा की जांच करने वाला टेंप्लेट बनाना

जांच करने वाला टेंप्लेट, डेटा में मौजूद संवेदनशील जानकारी (US_SOCIAL_SECURITY_NUMBER) का पता लगाता है.

# create inspect template
curl -fsS -X POST "https://dlp.googleapis.com/v2/projects/${PROJ_ID}/locations/${REGION}/inspectTemplates" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" -H "x-goog-user-project: ${PROJ_ID}" \
  -d @- << EOF
{
  "templateId": "agw-ssn-inspect-template",
  "inspectTemplate": {
    "displayName": "ssn inspect template",
    "inspectConfig": {
      "infoTypes": [
        { "name": "US_SOCIAL_SECURITY_NUMBER" }
      ],
      "minLikelihood": "POSSIBLE"
    }
  }
}
EOF

पहचान छिपाने वाला टेंप्लेट बनाना

पहचान छिपाने वाले टेंप्लेट में, एसएसएन पर लागू होने वाले बदलाव के बारे में बताया जाता है. ये एसएसएन, जांच करने वाले टेंप्लेट से मिलते हैं. इस मामले में, एसएसएन को जानकारी के टाइप से बदला गया है.

# create de-identify template
curl -fsS -X POST "https://dlp.googleapis.com/v2/projects/${PROJ_ID}/locations/${REGION}/deidentifyTemplates" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" -H "x-goog-user-project: ${PROJ_ID}" \
  -d @- << EOF
{
  "templateId": "agw-ssn-redaction-template",
  "deidentifyTemplate": {
    "displayName": "SSN Redaction Template",
    "deidentifyConfig": {
      "infoTypeTransformations": {
        "transformations": [{
          "primitiveTransformation": { "replaceWithInfoTypeConfig": {} }
        }]
      }
    }
  }
}
EOF

एसडीपी टेंप्लेट की पुष्टि करना

# get (describe) inspect template
curl -fsS -X GET "https://dlp.googleapis.com/v2/projects/${PROJ_ID}/locations/${REGION}/inspectTemplates" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" -H "x-goog-user-project: ${PROJ_ID}" | jq
# get (describe) de-identify template
curl -fsS -X GET "https://dlp.googleapis.com/v2/projects/${PROJ_ID}/locations/${REGION}/deidentifyTemplates" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" -H "x-goog-user-project: ${PROJ_ID}" | jq

Model Armor के टेंप्लेट

Model Armor API का डिफ़ॉल्ट एंडपॉइंट, ग्लोबल (modelarmor.googleapis.com) होता है. हालांकि, टेंप्लेट और आकलन इंजन के लिए Model Armor के संसाधन, किसी खास भौगोलिक क्षेत्र के हिसाब से बनाए जाते हैं. Model Armor के लिए, Google Cloud Regional Endpoint Proxy (REP) या रीजनल एपीआई एंडपॉइंट https://modelarmor.${LOCATION}.rep.googleapis.com/ है.

डिफ़ॉल्ट रूप से, gcloud model-armor ... चलाने पर, सीएलआई स्टैंडर्ड ग्लोबल एंडपॉइंट (https://modelarmor.googleapis.com/) को एपीआई अनुरोध भेजने की कोशिश करता है. एपीआई एंडपॉइंट ओवरराइड का इस्तेमाल, Model Armor के लिए सभी एसडीके/सीएलआई एचटीटीपी अनुरोधों को सीधे तौर पर क्षेत्रीय rep.googleapis.com एपीआई टियर पर रीडायरेक्ट करने के लिए किया जाता है. इस टियर में, जगह के हिसाब से काम करने वाले टेंप्लेट बनाए, सेव किए, और क्वेरी किए जाते हैं.

एपीआई में बदलाव करने की सुविधा सेट करना

# set api endpoint override per location
gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.${REGION}.rep.googleapis.com/"

एपीआई में बदलाव की पुष्टि करना

# view api overrides on active gcloud config
gcloud config list api_endpoint_overrides/

अनुरोध फ़िल्टर करने वाला टेंप्लेट बनाना

नफ़रत फैलाने वाली भाषा, उत्पीड़न, साफ़ तौर पर सेक्शुअल ऐक्ट दिखाने वाले कॉन्टेंट, और यूआरआई इंजेक्शन के हमलों को रोकने के लिए, अनुरोध फ़िल्टर करने वाला टेंप्लेट बनाएं. नीति उल्लंघन ठीक करने के बारे में इवेंट की ज़्यादा जानकारी पाने के लिए, लॉगिंग की सुविधा चालू की जाएगी. अनुरोध ब्लॉक होने पर, कस्टम गड़बड़ी कोड और मैसेज भी कॉन्फ़िगर किए जाते हैं.

# create model armor template (request)
gcloud beta model-armor templates create ${AGW_NAME}-modar-req-template \
  --project=${PROJ_ID} \
  --location=${REGION} \
  --rai-settings-filters='[
    { "filterType": "HATE_SPEECH", "confidenceLevel": "MEDIUM_AND_ABOVE" },
    { "filterType": "HARASSMENT", "confidenceLevel": "MEDIUM_AND_ABOVE" },
    { "filterType": "SEXUALLY_EXPLICIT", "confidenceLevel": "MEDIUM_AND_ABOVE" }
  ]' \
  --pi-and-jailbreak-filter-settings-enforcement=enabled \
  --pi-and-jailbreak-filter-settings-confidence-level=medium-and-above \
  --template-metadata-enforcement-type=INSPECT_AND_BLOCK \
  --malicious-uri-filter-settings-enforcement=enabled \
  --template-metadata-custom-llm-response-safety-error-code=798 \
  --template-metadata-custom-llm-response-safety-error-message="ahoy! model response blocked by content filter :(" \
  --template-metadata-custom-prompt-safety-error-code=799 \
  --template-metadata-custom-prompt-safety-error-message="ahoy! the request was blocked by ye content filter... so rephrase the prompt and try again!" \
  --template-metadata-ignore-partial-invocation-failures \
  --template-metadata-log-operations \
  --template-metadata-log-sanitize-operations

जवाब के फ़िल्टर का टेंप्लेट बनाना

जवाब के लिए फ़िल्टर टेंप्लेट बनाएं, ताकि वह अनुरोध के लिए फ़िल्टर टेंप्लेट की तरह ही कॉन्टेंट को ब्लॉक कर सके. जवाब देने वाले लेग पर डीएलपी कॉन्फ़िगर किया जाता है, ताकि एजेंट से क्लाइंट को वापस भेजे जाने वाले मैसेज के लिए, एसएसएन की पहचान छिपाने की सुविधा चालू की जा सके.

# create model armor template (response)
gcloud beta model-armor templates create ${AGW_NAME}-modar-resp-template \
  --project=${PROJ_ID} \
  --location=${REGION} \
  --rai-settings-filters='[
      { "filterType": "HATE_SPEECH", "confidenceLevel": "MEDIUM_AND_ABOVE" },
      { "filterType": "HARASSMENT", "confidenceLevel": "MEDIUM_AND_ABOVE" },
      { "filterType": "SEXUALLY_EXPLICIT", "confidenceLevel": "MEDIUM_AND_ABOVE" }
  ]' \
  --malicious-uri-filter-settings-enforcement=enabled \
  --advanced-config-inspect-template=projects/${PROJ_ID}/locations/${REGION}/inspectTemplates/agw-ssn-inspect-template \
  --advanced-config-deidentify-template=projects/${PROJ_ID}/locations/${REGION}/deidentifyTemplates/agw-ssn-redaction-template \
  --template-metadata-enforcement-type=INSPECT_AND_BLOCK \
  --template-metadata-custom-llm-response-safety-error-code=798 \
  --template-metadata-custom-llm-response-safety-error-message="ahoy! model response blocked by content filter :(" \
  --template-metadata-custom-prompt-safety-error-code=799 \
  --template-metadata-custom-prompt-safety-error-message="ahoy! the request was blocked by ye content filter... so rephrase the prompt and try again!" \
  --template-metadata-ignore-partial-invocation-failures \
  --template-metadata-log-operations \
  --template-metadata-log-sanitize-operations

Model Armor टेंप्लेट की पुष्टि करना

# list model armor templates
gcloud model-armor templates list --location=${REGION}
# show request filter template details
gcloud model-armor templates describe ${AGW_NAME}-modar-req-template --location=${REGION}
# show response filter template details
gcloud model-armor templates describe ${AGW_NAME}-modar-resp-template --location=${REGION}

IAM अनुमतियां

Model Armor, संवेदनशील डेटा की सुरक्षा (SDP) सेवा को चालू करने के लिए एपीआई कॉल करता है. Model Armor सेवा की पहचान के लिए, आईएएम अनुमतियां दें, ताकि वह एसडीपी की जांच करने और पहचान छिपाने वाले टेंप्लेट का इस्तेमाल कर सके.

संवेदनशील डेटा की सुरक्षा के लिए IAM नीति बाइंड करना

# grant dlp (sdp) user role to the model armor service identity
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="serviceAccount:service-${PROJ_NO}@gcp-sa-modelarmor.iam.gserviceaccount.com" \
  --role="roles/dlp.user"

IAM अनुमतियों की पुष्टि करना

# show iam policy for all dlp (sdp) roles on project
gcloud projects get-iam-policy ${PROJ_ID} \
  --flatten="bindings[].members" \
  --filter="bindings.role:roles/dlp" \
  --format="table(bindings.role:label=ROLE, bindings.members:label=PRINCIPAL_IDENTITY)"

मॉडल आर्मर का यह हिस्सा पूरा हो गया है... अब अनुमति सेक्शन पर जाएं.

6. अनुमति देना

IAM अनुमतियां

मॉडल आर्मर का इस्तेमाल करके, इनलाइन ट्रैफ़िक की जांच करने के लिए, सर्विस एक्सटेंशन (DEP) सर्विस एजेंट को आईएएम बाइंडिंग की ज़रूरत होती है. भले ही, ये बाइंडिंग एक ही प्रोजेक्ट के संसाधनों के लिए हों:

  • roles/modelarmor.calloutUser और roles/serviceusage.serviceUsageConsumer: गेटवे प्रोजेक्ट पर, इनलाइन जांच वाले कॉलआउट की अनुमति देने के लिए दी जाती है.
  • roles/modelarmor.user: यह टेंप्लेट प्रोजेक्ट को दिया जाता है, ताकि Model Armor टेंप्लेट को ऐक्सेस किया जा सके और उनका आकलन किया जा सके.

Model Armor के लिए IAM नीति बाइंड करना

# grant model armor callout user role to dep (service extension) service agent
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="serviceAccount:service-${PROJ_NO}@gcp-sa-dep.iam.gserviceaccount.com" \
  --role="roles/modelarmor.calloutUser"

# grant service usage consumer role to dep (service extension) service agent
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="serviceAccount:service-${PROJ_NO}@gcp-sa-dep.iam.gserviceaccount.com" \
  --role="roles/serviceusage.serviceUsageConsumer"

# grant model armor user role to dep (service extension) service agent
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="serviceAccount:service-${PROJ_NO}@gcp-sa-dep.iam.gserviceaccount.com" \
  --role="roles/modelarmor.user"

IAM अनुमतियों की पुष्टि करना

# show iam policy on project for dep (service extension) service agent
gcloud projects get-iam-policy ${PROJ_ID} \
  --flatten="bindings[].members" \
  --filter="bindings.members:serviceAccount:service-${PROJ_NO}@gcp-sa-dep.iam.gserviceaccount.com" \
  --format="table(bindings.members:label=PRINCIPAL_IDENTITY, bindings.role:label=ROLE)"

पुष्टि करने वाला एक्सटेंशन

Agent Gateway के लिए, अनुमति देने वाले एक्सटेंशन का कॉन्फ़िगरेशन, इंटिग्रेशन की उन सेटिंग को तय करता है जो आने वाले और जाने वाले पेलोड ट्रैफ़िक पर लागू होंगी. कॉन्फ़िगरेशन, बाहरी प्रोसेसिंग सेवा (service) के बारे में बताता है. यह सेवा, क्षेत्रीय Model Armor API को रेफ़र करती है. साथ ही, model_armor_settings मेटाडेटा फ़ील्ड का इस्तेमाल करके, अनुरोध और जवाब के खास टेंप्लेट से लिंक करती है.

अनुमति देने वाला एक्सटेंशन बनाना

# create authz extension config file (enforced mode)
cat > cfg/${AGW_NAME}-svc-ext-authz-modar.yaml <<EOF
name: ${AGW_NAME}-svc-ext-authz-modar
service: modelarmor.${REGION}.rep.googleapis.com
metadata:
  model_armor_settings: '[
    {
      "request_template_id": "projects/${PROJ_ID}/locations/${REGION}/templates/${AGW_NAME}-modar-req-template",
      "response_template_id": "projects/${PROJ_ID}/locations/${REGION}/templates/${AGW_NAME}-modar-resp-template"
    }
  ]'
failOpen: true
timeout: 5s
EOF

Import authz extension

# import authz extension file
gcloud service-extensions authz-extensions import ${AGW_NAME}-svc-ext-authz-modar \
  --source=cfg/${AGW_NAME}-svc-ext-authz-modar.yaml \
  --location=${REGION}

Verify authz extension

# list authz extensions
gcloud service-extensions authz-extensions list --location=${REGION}
# show authz extension details
gcloud service-extensions authz-extensions describe ${AGW_NAME}-svc-ext-authz-modar \
  --location=${REGION}

प्राधिकरण नीति

अनुमति देने से जुड़ी नीतियां, नीति प्रोफ़ाइलों का इस्तेमाल करके यह तय करती हैं कि किस तरह का आकलन किया गया है. अनुरोध पर आधारित प्रोफ़ाइलें (REQUEST_AUTHZ) एचटीटीपी हेडर का आकलन करती हैं. वहीं, यह कॉन्फ़िगरेशन, कॉन्टेंट पर आधारित अनुमति वाली प्रोफ़ाइल (CONTENT_AUTHZ) का इस्तेमाल करता है, ताकि मॉडल आर्मर एक्सटेंशन को गेटवे से जोड़ा जा सके. इससे पेलोड की बारीकी से जांच की जा सकती है.

अनुमति देने से जुड़ी नीति बनाना

# create authz policy config file (attach dry-run authz extension)
cat > cfg/${AGW_NAME}-authz-policy-modar.yaml <<EOF
name: ${AGW_NAME}-authz-policy-modar
target:
  resources:
    - "projects/${PROJ_ID}/locations/${REGION}/agentGateways/${AGW_NAME}"
policyProfile: CONTENT_AUTHZ
action: CUSTOM
customProvider:
  authzExtension:
    resources:
      - "projects/${PROJ_ID}/locations/${REGION}/authzExtensions/${AGW_NAME}-svc-ext-authz-modar"
EOF

अनुमति देने की नीति इंपोर्ट करना

# import authz policy config file (enable authz policy)
gcloud beta network-security authz-policies import ${AGW_NAME}-authz-policy-modar \
  --source=cfg/${AGW_NAME}-authz-policy-modar.yaml \
  --location=${REGION}

अनुमति देने की नीति की पुष्टि करना

# list authz policies
gcloud beta network-security authz-policies list --location=${REGION}
# show authz policy details
gcloud beta network-security authz-policies describe ${AGW_NAME}-authz-policy-modar \
  --location=${REGION}

ऑथराइज़ेशन से जुड़ा हिस्सा यहीं खत्म होता है... अब कोडबेस सेक्शन पर जाएं.

7. कोडबेस

इस कोडलैब के लिए इस्तेमाल किए गए एजेंट कोड और फ़ाइल डेटा को, रिमोट Google Cloud GitHub रिपॉज़िटरी में सेव किया जाता है. यहां दिया गया तरीका अपनाने से, रिपॉज़िटरी को लोकल तौर पर क्लोन किया जाएगा. साथ ही, ज़रूरी फ़ाइलों को मौजूदा वर्किंग डायरेक्ट्री स्ट्रक्चर में कॉपी किया जाएगा. इसके बाद, अस्थायी फ़ाइलों को मिटा दिया जाएगा.

रिमोट आर्टफ़ैक्ट फ़ेच करना

# clone remote repository to temp local dir
git clone https://github.com/GoogleCloudPlatform/cloud-networking-solutions.git ./temp_agw_cuj_arun_ingress_modar
# copy agent runtime and endpoint definitions to working project dir
cp -r temp_agw_cuj_arun_ingress_modar/codelabs/agw-cuj-arun-ingress-modar/agent-crm ./agent-crm
# remove temporary directory
rm -rf temp_agw_cuj_arun_ingress_modar

स्टेजिंग के लिए स्टोरेज बकेट का इस्तेमाल, एजेंट रनटाइम करता है. इसका इस्तेमाल, पैकेज किए गए एजेंट ऐप्लिकेशन कोड और उसके डिपेंडेंसी आर्टफ़ैक्ट को अपलोड करने, बनाने, और डिप्लॉय करने के लिए किया जाता है.

स्टेजिंग के लिए स्टोरेज बकेट बनाएं

# create storage bucket
gcloud storage buckets create gs://${STAGING_BUCKET} --location=${REGION}

स्टोरेज बकेट की पुष्टि करना

# list storage buckets
gcloud storage buckets list --format="value(storage_url)"

कोडबेस का हिस्सा यहां खत्म होता है... अब GCS Customer Data सेक्शन पर जाएं.

ग्राहक से जुड़ा डेटा

ग्राहक से जुड़ा डेटा सेव करने के लिए, Cloud Storage बकेट बनाएं. एजेंट, Cloud Storage MCP एंडपॉइंट को कॉल करने वाली स्टैंडर्ड Google Cloud क्लाइंट लाइब्रेरी का इस्तेमाल करके, सीधे तौर पर पढ़ेगा.

ग्राहक से जुड़े डेटा के लिए स्टोरेज बकेट बनाना

# create storage bucket
gcloud storage buckets create gs://${DATA_BUCKET} --location=${REGION}

स्टोरेज बकेट की पुष्टि करना

# list storage buckets
gcloud storage buckets list --format="value(storage_url)"

ग्राहक से जुड़ा डेटा अपलोड करना

# copy local data to bucket
gcloud storage cp -r ./agent-crm/data/* gs://${DATA_BUCKET}/

ग्राहक से जुड़े डेटा की पुष्टि करना

# list bucket objects
gcloud storage ls gs://${DATA_BUCKET}/ --long

GCS के ग्राहक डेटा का हिस्सा यहां खत्म होता है... अब ADK एजेंट सेक्शन पर जाएं.

8. ADK एजेंट

Agent Runtime में डिप्लॉय किए गए agent-crm ADK एजेंट को, Agent Platform के साथ इंटिग्रेट करने के लिए डिप्लॉयमेंट स्क्रिप्ट में इन सेटिंग के साथ कॉन्फ़िगर किया जाता है:

  • "identity_type": types.IdentityType.AGENT_IDENTITY ताकि एजेंट के लिए यूनीक SPIFFE-आधारित प्रिंसिपल आइडेंटिटी उपलब्ध कराई जा सके
  • "client_to_agent_config": {"agent_gateway": "${AGW_URI}"}, ताकि एजेंट के सभी इनबाउंड ट्रैफ़िक को एजेंट गेटवे की नीति के उल्लंघन की समीक्षा और उल्लंघन ठीक करने के तरीके के लिए भेजा जा सके

एजेंट को Cloud Storage एमसीपी सर्वर के लिए, एमटीएलएस एमसीपी सर्वर का यूआरएल और डेटा बकेट का नाम भी दिया जाता है. इससे वह सुरक्षित कनेक्शन पर GCS एमसीपी टूल को चालू कर पाता है.

एजेंट को डिप्लॉय करना

# deploy agent
uv --directory agent-crm run python3 deploy_agent.py \
  --project=${PROJ_ID} \
  --region=${REGION} \
  --src-dir=./agent \
  --staging-bucket=${STAGING_BUCKET} \
  --display-name="${RE_AGENT_NAME}" \
  --description="agent for customer data" \
  --mcp-server-url="${MCP_URL}" \
  --data-bucket=${DATA_BUCKET} \
  --enable-telemetry \
  --enable-agent-identity \
  --agent-gateway-ingress=${AGW_URI} \
  --allow-token-sharing

डिप्लॉयमेंट की पुष्टि करना

डिप्लॉयमेंट की परफ़ॉर्मेंस से जुड़ी अहम जानकारी फ़ेच करना

# fetch agent runtime (reasoning engine) resource id
export RE_ENGINE_ID=$(curl -s -X GET "https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  | jq -r --arg name "${RE_AGENT_NAME}" '.reasoningEngines[] | select(.displayName==$name) | .name | split("/") | last')
echo ${RE_ENGINE_ID}
# fetch agent runtime (reasoning engine) agent identity
export RE_AGENT_IDENTITY=$(gcloud agent-registry agents list \
  --project=${PROJ_ID} --location=${REGION} --filter="displayName=${RE_AGENT_NAME}" \
  --format="value(attributes.'agentregistry.googleapis.com/system/RuntimeIdentity'.principal)")
echo ${RE_AGENT_IDENTITY}

गेटवे के कॉन्फ़िगरेशन की पुष्टि करना

# show agent runtime config details (gateway config)
curl -s -X GET "https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  | jq '{displayName: .displayName, name: .name, effectiveIdentity: .spec.effectiveIdentity, agentGatewayConfig: .spec.deploymentSpec.agentGatewayConfig}'

IAM अनुमतियां

एजेंट की पहचान के लिए आईएएम नीतियां बाइंड करना

# grant mcp tool user role to agent set (all agent runtime agents in project)
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_ID_SET}" \
  --role="roles/mcp.toolUser"
# grant storage object viewer role to agent identity
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/storage.objectViewer"

# grant aiplatform user role to agent identity
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/aiplatform.user"

# grant cloudtrace agent role to agent identity
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/cloudtrace.agent"

# grant cloud monitoring metric writer role to agent identity
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/monitoring.metricWriter"
# grant cloud logging log writer role to agent identity
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/logging.logWriter"

# grant telemetry writer role to agent identity
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/telemetry.writer"

# grant service usage consumer role to agent identity
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/serviceusage.serviceUsageConsumer"

# grant browser role to agent identity
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/browser"

IAM अनुमतियों की पुष्टि करना

# show agent identity roles on project
gcloud projects get-iam-policy ${PROJ_ID} \
  --flatten="bindings[].members" \
  --filter="bindings.members:${RE_AGENT_IDENTITY}" \
  --format="table(bindings.members.sub('^.*locations/', 'principal://agents.[...]/locations/'):label=PRINCIPAL_IDENTITY, bindings.role:label=ROLE)"
# show agent set roles on project
gcloud projects get-iam-policy ${PROJ_ID} \
  --flatten="bindings[].members" \
  --filter="bindings.members:${RE_AGENT_ID_SET}" \
  --format="table(bindings.members.sub('^.*platformContainer/', 'principalSet://agents.[...]/'):label=PRINCIPAL_IDENTITY, bindings.role:label=ROLE)"

एडीके एजेंट का यह हिस्सा पूरा हुआ... अब टेस्ट सेक्शन पर जाएं.

9. टेस्ट

सीएलआई से क्वेरी सबमिट करना

सुरक्षित प्रॉम्प्ट की जांच करना

# post query to agent streamQuery
curl --no-buffer -s -X POST "https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}:streamQuery" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" -H "X-Goog-User-Project: ${PROJ_ID}" \
  -d @- <<EOF | jq -r --unbuffered 'if type == "array" then .[] else . end | select(.content.parts != null) | .content.parts[].text // empty'
{
  "input": {
    "message": "what are the names of our west customers?",
    "user_id": "test-user"
  }
}
EOF

जवाब ऐसा दिखना चाहिए... "हमारे पश्चिमी इलाके के ग्राहक ये हैं: बॉब जॉनसन और ऐलिस ब्राउन."

डेटा हटाने के ट्रिगर की जांच करना

# post query to agent streamQuery
curl --no-buffer -s -X POST "https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}:streamQuery" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" -H "X-Goog-User-Project: ${PROJ_ID}" \
  -d @- <<EOF | jq -r --unbuffered 'if type == "array" then .[] else . end | select(.content.parts != null) | .content.parts[].text // empty'
{
  "input": {
    "message": "what are ssn's for bob johnson and alice brown?",
    "user_id": "test-user"
  }
}
EOF

सुरक्षित प्रॉम्प्ट का कोई दूसरा उदाहरण आज़माएं

# post query to agent streamQuery
curl --no-buffer -s -X POST "https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}:streamQuery" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" -H "X-Goog-User-Project: ${PROJ_ID}" \
  -d @- <<EOF | jq -r --unbuffered 'if type == "array" then .[] else . end | select(.content.parts != null) | .content.parts[].text // empty'
{
  "input": {
    "message": "what are bob johnson's and alice brown's email addresses?",
    "user_id": "test-user"
  }
}
EOF

ऑडिट लॉग

ट्रेस लॉग देखना

टेलीमेट्री चालू होने पर, एजेंट रनटाइम, स्ट्रक्चर्ड इवेंट स्ट्रीम करता है. ये इवेंट, उपयोगकर्ता की क्वेरी, टूल पैरामीटर, एक्ज़ीक्यूशन फ़्लो, और मॉडल के चुने गए आउटपुट को दिखाते हैं.

# show agent runtime (reasoning engine) telemetry and trace logs
gcloud logging read \
  "logName:\"projects/${PROJ_ID}/logs/aiplatform.googleapis.com%2Freasoning_engine_stdout\" AND labels.managed-by=\"reasoning-engine\"" \
  --project=${PROJ_ID} \
  --limit=15 \
  --format="table(
    timestamp.date(format=\"%I:%M:%S %p\", tz=LOCAL):label=TIME,
    trace.basename().sub('^(.{8}).*$', '\\1'):label=TRACE_ID,
    labels.\"event.name\".scope(-1):label=EVENT,
    jsonPayload.content.role:label=ROLE,
    jsonPayload.content.parts[0].text:label=TEXT_CONTENT,
    jsonPayload.content.parts[0].function_call.name:label=TOOL_CALL
  )"

TRACE_ID, उपयोगकर्ता की क्वेरी, इंटरमीडिएट टूल कॉल, और मॉडल के फ़ैसलों को एक ही टाइमलाइन में ग्रुप करता है:

TIME         TRACE_ID  EVENT                  ROLE   TEXT_CONTENT                                     TOOL_CALL
HH:MM:SS PM  3070a1fd  gen_ai.choice          model  Bob Johnson's SSN is 219-45-7895.
                                                     Alice Brown's SSN is 219-45-7896.
HH:MM:SS PM  3070a1fd  gen_ai.user.message    user
HH:MM:SS PM  3070a1fd  gen_ai.user.message    model                                                   read_customer_file
HH:MM:SS PM  3070a1fd  gen_ai.user.message    user
HH:MM:SS PM  3070a1fd  gen_ai.user.message    model                                                   read_customer_file
HH:MM:SS PM  3070a1fd  gen_ai.user.message    user
HH:MM:SS PM  3070a1fd  gen_ai.user.message    model                                                   list_customer_files
HH:MM:SS PM  3070a1fd  gen_ai.user.message    user   what are ssn's for bob johnson and alice brown?
HH:MM:SS PM  3070a1fd  gen_ai.system.message
HH:MM:SS PM  3070a1fd  gen_ai.choice          model                                                   read_customer_file

Model Armor के सैनिटाइज़ेशन लॉग देखना

इन लॉग से, रीयल-टाइम में दोनों दिशाओं में होने वाले इनलाइन थ्रेट और मॉडल आर्मर की ओर से किए गए सैनिटाइज़ेशन के बारे में पता चलता है. ऐसा तब होता है, जब ट्रैफ़िक एजेंट गेटवे से होकर गुज़रता है.

# show model armor logs
gcloud logging read \
  "logName:\"projects/${PROJ_ID}/logs/modelarmor.googleapis.com%2Fsanitize_operations\"" \
  --project=${PROJ_ID} \
  --limit=50 \
  --format="table(
    timestamp.date(format=\"%I:%M:%S %p\", tz=LOCAL):label=TIME,
    jsonPayload.sanitizationResult.sanitizationVerdict:label=VERDICT,
    jsonPayload.sanitizationInput.byteItem.byteData.decode(base64).decode(utf-8).sub('\n', ' \\\\\\\\n ').trailoff(123):label=INPUT_DATA
  )"

सफ़ाई किए गए और ब्लॉक किए गए अनुरोध के लिए, लॉग एंट्री देखें.

TIME         VERDICT                                 INPUT_DATA
HH:MM:SS PM  MODEL_ARMOR_SANITIZATION_VERDICT_ALLOW  Bob Johnson's email address is bob.j@example.com. \n Alice Brown's email address is alice.b...
HH:MM:SS PM  MODEL_ARMOR_SANITIZATION_VERDICT_ALLOW  what are bob johnson's and alice brown's email addresses?
HH:MM:SS PM  MODEL_ARMOR_SANITIZATION_VERDICT_BLOCK  6��
HH:MM:SS PM  MODEL_ARMOR_SANITIZATION_VERDICT_ALLOW  what are ssn's for bob johnson and alice brown?
HH:MM:SS PM  MODEL_ARMOR_SANITIZATION_VERDICT_ALLOW  Our west customers are: Bob Johnson and Alice Brown.
HH:MM:SS PM  MODEL_ARMOR_SANITIZATION_VERDICT_ALLOW  what are the names of our west customers?

टेस्ट वाला हिस्सा यहीं खत्म होता है... अब क्लीनअप सेक्शन पर जाएं.

10. साफ़-सफ़ाई सेवा

# remove agent iam bindings
gcloud -q projects remove-iam-policy-binding ${PROJ_ID} --member="${RE_AGENT_IDENTITY}" --role="roles/storage.objectViewer"
gcloud -q projects remove-iam-policy-binding ${PROJ_ID} --member="${RE_AGENT_IDENTITY}" --role="roles/aiplatform.user"
gcloud -q projects remove-iam-policy-binding ${PROJ_ID} --member="${RE_AGENT_IDENTITY}" --role="roles/cloudtrace.agent"
gcloud -q projects remove-iam-policy-binding ${PROJ_ID} --member="${RE_AGENT_IDENTITY}" --role="roles/monitoring.metricWriter"

# next
# remove more agent and agent set iam bindings
gcloud -q projects remove-iam-policy-binding ${PROJ_ID} --member="${RE_AGENT_IDENTITY}" --role="roles/logging.logWriter"
gcloud -q projects remove-iam-policy-binding ${PROJ_ID} --member="${RE_AGENT_IDENTITY}" --role="roles/telemetry.writer"
gcloud -q projects remove-iam-policy-binding ${PROJ_ID} --member="${RE_AGENT_IDENTITY}" --role="roles/serviceusage.serviceUsageConsumer"
gcloud -q projects remove-iam-policy-binding ${PROJ_ID} --member="${RE_AGENT_IDENTITY}" --role="roles/browser"

# next
# remove rest of iam bindings
gcloud -q projects remove-iam-policy-binding ${PROJ_ID} --member="${RE_AGENT_ID_SET}" --role="roles/mcp.toolUser"
gcloud -q projects remove-iam-policy-binding ${PROJ_ID} --member="serviceAccount:service-${PROJ_NO}@gcp-sa-modelarmor.iam.gserviceaccount.com" --role="roles/dlp.user"

# next
# delete agent runtime (reasoning engine) agent
curl -s -X DELETE "https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}?force=true" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json"

# next
# delete storage
gcloud -q storage rm --recursive gs://${STAGING_BUCKET}
gcloud -q storage rm --recursive gs://${DATA_BUCKET}

# next
# delete authz resources
gcloud -q beta network-security authz-policies delete ${AGW_NAME}-authz-policy-modar --location=${REGION}

gcloud -q beta service-extensions authz-extensions delete ${AGW_NAME}-svc-ext-authz-modar --location=${REGION} --async

# next
# remove dep (service extensions) service agent iam bindings
gcloud -q projects remove-iam-policy-binding ${PROJ_ID} \
  --member="serviceAccount:service-${PROJ_NO}@gcp-sa-dep.iam.gserviceaccount.com" \
  --role="roles/modelarmor.calloutUser"

gcloud -q projects remove-iam-policy-binding ${PROJ_ID} \
  --member="serviceAccount:service-${PROJ_NO}@gcp-sa-dep.iam.gserviceaccount.com" \
  --role="roles/serviceusage.serviceUsageConsumer"

gcloud -q projects remove-iam-policy-binding ${PROJ_ID} \
  --member="serviceAccount:service-${PROJ_NO}@gcp-sa-dep.iam.gserviceaccount.com" \
  --role="roles/modelarmor.user"

# next
# delete model armor templates
gcloud -q model-armor templates delete ${AGW_NAME}-modar-resp-template --location=${REGION}
gcloud -q model-armor templates delete ${AGW_NAME}-modar-req-template --location=${REGION}

# unset model armor api endpoint override
gcloud config unset api_endpoint_overrides/modelarmor

# next
# delete sdp (dlp) templates
curl -fsS -X DELETE "https://dlp.googleapis.com/v2/projects/${PROJ_ID}/locations/${REGION}/deidentifyTemplates/agw-ssn-redaction-template" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "x-goog-user-project: ${PROJ_ID}"

curl -fsS -X DELETE "https://dlp.googleapis.com/v2/projects/${PROJ_ID}/locations/${REGION}/inspectTemplates/agw-ssn-inspect-template" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "x-goog-user-project: ${PROJ_ID}"

# next
# delete agent gateway ingress
gcloud -q network-services agent-gateways delete ${AGW_NAME} --location=${REGION} --async

# end

सफ़ाई वाला हिस्सा यहीं खत्म होता है... अब निष्कर्ष सेक्शन पर चलते हैं.

11. नतीजा

बधाई हो! आपने एजेंट गेटवे को सफलतापूर्वक डिप्लॉय कर दिया है. साथ ही, एआई एजेंट को आने वाले ट्रैफ़िक को मैनेज कर लिया है!

cosmopup

Cosmopup को कोडलैब बहुत पसंद हैं!

आगे क्या करना है?

इस फ़ीडबैक फ़ॉर्म का इस्तेमाल करके, बेझिझक कोई टिप्पणी करें, सवाल पूछें या सुधार के बारे में बताएं.

धन्यवाद!