نشر وكيل Enterprise Governance-Aware Agent باستخدام MCP وCloud Run

1- مقدمة

هذا الدرس التطبيقي حول الترميز هو جزء من سلسلة مكوّنة من جزأين، ويستكشف كيفية إنشاء وكيل ذكاء اصطناعي توليدي يستوعب معايير الحوكمة.

(يمكنك قراءة الجزء الأول من هذه السلسلة الذي يوضّح كيفية إنشاء أساس البيانات من خلال تطبيق جوانب Dataplex على جداول BigQuery واختبار القواعد محليًا باستخدام Gemini CLI. ‫👈 قراءة الجزء الأول)

ومع ذلك، فإنّ الاختبار في واجهة سطر الأوامر المحلية ليس سوى البداية. لتطبيق ذلك على شركتك بأكملها، تحتاج إلى أمان مركزي واتصالات موحّدة بأدوات الذكاء الاصطناعي وإطار عمل مناسب لتنسيق منطق الوكيل وتوفير واجهة محادثة مألوفة.

في هذا الجزء الثاني، ستحلّ هذه التحديات وتوسّع نطاق الحلّ ليصبح جاهزًا للاستخدام في مرحلة الإنتاج. ستنشر قواعد الحوكمة في خادم MCP مركزي مستضاف على Cloud Run. بعد ذلك، ستستخدم حزمة تطوير الوكلاء (ADK) من Google لإنشاء تطبيق الوكيل الفعلي وربطه بأدوات MCP، مع واجهة مستخدم احترافية على الويب.

be15d5f41f0d716c.png

المتطلبات الأساسية

  • مشروع على Google Cloud تم تفعيل الفوترة فيه
  • فهم أساسي لـ Cloud Run وحسابات الخدمة في إدارة الهوية وإمكانية الوصول (IAM) ولغة Python
  • مجموعات بيانات BigQuery وجوانب Dataplex التي تم إنشاؤها في الجزء الأول (لا تقلق إذا حذفتها، نوفّر لك أدناه نصًا برمجيًا سريعًا لإعادة إنشائها)

ما ستتعلمه

  • كيفية استخدام بروتوكول سياق النموذج (MCP) لتوحيد طريقة تفاعل وكلاء الذكاء الاصطناعي مع بيانات Google Cloud
  • كيفية نشر خادم MCP آمن على Cloud Run
  • كيفية إنشاء وكيل ذكاء اصطناعي باستخدام حزمة تطوير الوكلاء (ADK) وربطه بخادم MCP الخلفي
  • كيفية تشغيل واجهة مستخدم المطوّرين المضمّنة في حزمة تطوير الوكلاء (ADK) للتفاعل مع الوكيل الخاضع للحوكمة

ما ستحتاج إليه

  • الوصول إلى Google Cloud Shell

المفاهيم الأساسية

  • بروتوكول سياق النموذج (MCP): يمكنك اعتبار MCP "كابل USB-C عالمي" لوكلاء الذكاء الاصطناعي. بدلاً من كتابة رمز برمجي مخصّص لدمج واجهة برمجة التطبيقات لكل نموذج ذكاء اصطناعي، يوفّر MCP طريقة موحّدة للذكاء الاصطناعي للاتصال بأمان بأدوات بيانات مؤسستك (مثل Dataplex وBigQuery).
  • حزمة تطوير الوكلاء (ADK): إطار عمل مرن ومفتوح المصدر من Google مصمّم لتبسيط عملية تطوير وكلاء الذكاء الاصطناعي من البداية إلى النهاية. يطبّق هذا الإطار مبادئ هندسة البرامج على إنشاء الوكلاء، ما يتيح لك تنسيق الأدوات المعقّدة وإدارة الحالة وتشغيل واجهة مستخدم المطوّرين المضمّنة بسهولة للاختبار والنشر.

2. الإعداد والمتطلبات

بدء Cloud Shell

يمكن تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ولكن في هذا الدرس التطبيقي حول الترميز، ستستخدم Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

تفعيل Cloud Shell

سيستغرق توفير البيئة والاتصال بها بضع لحظات فقط. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

لقطة شاشة لواجهة سطر الأوامر في Google Cloud Shell توضّح أنّه تم ربط البيئة

يتم تحميل هذا الجهاز الافتراضي مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الآلة دليلًا رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل على Google Cloud، ما يحسّن بشكل كبير أداء الشبكة والمصادقة. يمكنك إكمال جميع المهام في هذا الدرس التطبيقي حول الترميز داخل متصفّح. ولست بحاجة إلى تثبيت أي شيء.

إعداد البيئة

افتح Cloud Shell واضبط متغيّرات مشروعك لضمان استهداف جميع الأوامر للبنية التحتية الصحيحة.

export PROJECT_ID=$(gcloud config get-value project)
gcloud config set project $PROJECT_ID
export REGION="us-central1"

نقطة تفتيش: هل تريد استئناف العمل أو إعادة إنشائه؟

بما أنّ هذا هو الجزء الثاني، يحتاج الوكيل إلى البيانات الخاضعة للحوكمة من الجزء الأول لكي يعمل. يُرجى اختيار المسار:

المسار "أ": لقد انتهيتُ للتو من الجزء الأول ولا تزال مواردي قيد التشغيل.

رائع! انتقِل إلى دليل العمل وأنت جاهز للمتابعة.

cd ~/devrel-demos/data-analytics/governance-context

المسار "ب": لقد تخطيتُ الجزء الأول أو حذفتُ مواردي (نظّفتُها).

لا مشكلة. لقد وفّرنا أدناه كتلة أوامر "سريعة". سيؤدي ذلك إلى إعادة إنشاء مستودع بيانات BigQuery تلقائيًا وتطبيق بيانات الحوكمة الوصفية في Dataplex تمامًا كما فعلنا في الجزء الأول.

# 1. Clone the repo and navigate to the working directory
git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos
git sparse-checkout set data-analytics/governance-context
cd data-analytics/governance-context

# 2. Rebuild the messy data lake with Terraform
cd terraform
terraform init
terraform apply -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve

# 3. Generate and apply Dataplex Aspects (Governance rules)
cd ..
chmod +x ./generate_payloads.sh ./apply_governance.sh
./generate_payloads.sh
./apply_governance.sh

3- التوسّع باستخدام MCP: إنشاء مستوى التحكّم في البيانات

حتى الآن، اختبرت منطق الحوكمة بنجاح باستخدام Gemini CLI. هذا ممتاز لإنشاء النماذج الأولية بسرعة، ولكن يتم تشغيله محليًا باستخدام بيانات اعتماد المستخدم الشخصية.

في بيئة المؤسسة الفعلية، تحتاج إلى مستوى تحكّم مركزي في البيانات. لإنشاء ذلك، سنستخدم GenAI Toolbox for Databases، وهو مشروع رسمي مفتوح المصدر من Google. توفّر هذه الحزمة خادم MCP تم إنشاؤه مسبقًا ومصمّمًا خصيصًا لربط وكلاء الذكاء الاصطناعي بأمان بقواعد بيانات Google Cloud وخدمات البيانات الوصفية مثل Dataplex.

من خلال نشر هذه الحزمة كخادم MCP على Cloud Run، نحقق ما يلي:

  1. هوية مركزية: يتم تشغيل الوكيل كحساب خدمة محدود، وليس كحساب المستخدم الشخصي.
  2. التوحيد: يمكن لأي عميل (حزمة تطوير الوكلاء (ADK) أو Gemini أو التطبيقات المخصّصة) "الاتصال" بهذا الخادم باستخدام بروتوكول MCP العادي.
  3. النطاق الخاضع للتحكّم (الحد الأدنى من الامتيازات): لا نمنح النموذج اللغوي الكبير إذن وصول مفتوح إلى BigQuery. نفرض عليه الانتقال أولاً من خلال كتالوج البيانات الوصفية في Dataplex.

ضبط تعريف الأداة (tools.yaml)

تتطلب GenAI Toolbox ملف إعداد تصريحيًا، وهو tools.yaml. يحدّد هذا الملف sources (مكان الاتصال) وtools (ما يُسمح للذكاء الاصطناعي بفعله).

  1. انتقِل إلى دليل الخادم وأدخِل رقم تعريف مشروعك في ملف الإعداد:
cd ~/devrel-demos/data-analytics/governance-context/mcp_server
envsubst < tools.yaml > tools.tmp && mv tools.tmp tools.yaml
cat tools.yaml

من المفترض أن يبدو مطابقًا للمقتطف التالي. تأكَّد من أنّ حقل المشروع يتطابق الآن مع رقم تعريف مشروع Google Cloud الفعلي.

sources:
  dataplex:
    kind: dataplex
    project: YOUR-PROJECT-ID

tools:
  search_entries:
    kind: dataplex-search-entries
    source: dataplex
    description: Search for entries in Dataplex Catalog.

  lookup_entry:
    kind: dataplex-lookup-entry
    source: dataplex
    description: Retrieve a specific entry from Dataplex Catalog.

  search_aspect_types:
    kind: dataplex-search-aspect-types
    source: dataplex
    description: Find aspect types relevant to a query.

toolsets:
  dataplex-toolset:
    - search_entries
    - lookup_entry
    - search_aspect_types

من خلال تحديد هذه الأدوات الثلاث، يمكننا فرض أن يكون الذكاء الاصطناعي "للقراءة فقط" و"يركّز على الحوكمة أولاً".

تأمين الإعداد (Secret Manager)

في بنية المؤسسة، يجب ألا يتم تضمين ملفات الإعداد مباشرةً في صور الحاويات. سنخزّن tools.yaml بأمان في Google Cloud Secret Manager.

gcloud services enable secretmanager.googleapis.com
gcloud secrets create dataplex-tools-config --data-file=tools.yaml

تطبيق مبدأ الحد الأدنى من الامتيازات (إدارة الهوية وإمكانية الوصول)

بعد ذلك، ننشئ حساب خدمة مخصّصًا لخادم GenAI Toolbox MCP. لن يكون لهذا الحساب سوى الأذونات المطلوبة تمامًا لقراءة كتالوج Dataplex والوصول إلى بيانات BigQuery.

export MCP_SA=mcp-sa
gcloud iam service-accounts create ${MCP_SA} \
    --display-name="Service Account for Dataplex MCP"
export MCP_SERVICE_ACCOUNT="${MCP_SA}@${PROJECT_ID}.iam.gserviceaccount.com"

# Allow the server to read its own config from Secret Manager
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
  --role="roles/secretmanager.secretAccessor"

# Allow the server to read Dataplex Metadata and BigQuery Data
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
  --role="roles/dataplex.catalogViewer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
  --role="roles/bigquery.dataViewer"

نشر خادم MCP على Cloud Run

الآن، ننشر GenAI Toolbox. نستخدم صورة الحاوية التي تم إنشاؤها مسبقًا من Google (database-toolbox/toolbox) ونحمّل إعداداتنا من Secret Manager (--set-secrets) في وقت التشغيل.

export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest

gcloud run deploy governance-mcp \
    --image=$IMAGE \
    --service-account $MCP_SERVICE_ACCOUNT \
    --region=$REGION \
    --no-allow-unauthenticated \
    --set-secrets="/app/tools.yaml=dataplex-tools-config:latest" \
    --args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080"

لقد أنشأت الآن واجهة برمجة تطبيقات خاضعة للحوكمة. بدلاً من منح واجهة GenAI الأمامية إذن وصول مباشر إلى قاعدة البيانات، ستتصل بعنوان URL هذا على Cloud Run. لا يمكن للوكيل رؤية سوى ما تسمح له هذه الحزمة برؤيته.

4- إنشاء خادم الوكيل الخلفي باستخدام حزمة تطوير الوكلاء (ADK)

لقد أنشأت مستوى تحكّم آمنًا وخاضعًا للحوكمة في البيانات (MCP) يعمل على Cloud Run. يحتاج وكيل الذكاء الاصطناعي الآن إلى إطار عمل لتنسيق منطق الوكيل، مثل معالجة إدخالات المستخدمين وتحديد وقت استدعاء خادم MCP وتنسيق الناتج.

بدلاً من كتابة كل رمز النص النموذجي هذا من البداية، سنستخدم حزمة تطوير الوكلاء (ADK) من Google. حزمة تطوير الوكلاء (ADK) هي إطار عمل يعتمد على الرمز البرمجي، ويغلّف تلقائيًا منطق الوكيل في خادم خلفي لـ FastAPI. علاوةً على ذلك، تتضمّن الحزمة واجهة مستخدم مدمجة للمطوّرين، ما يتيح لك عرض عملية استنتاج الوكيل واستدعاءات الأدوات على الفور بدون إنشاء واجهة أمامية مخصّصة أولاً.

فحص منطق الوكيل (agent.py)

قبل ضبط البنية التحتية، لنلقِ نظرة على جوهر هذا التطبيق.

انتقِل إلى الدليل واعرض محتويات agent.py. هذا الملف هو "عقل" عملية نشر حزمة تطوير الوكلاء (ADK).

cd ~/devrel-demos/data-analytics/governance-context/mcp_server
cat agent.py

ألقِ نظرة على بنية الرمز البرمجي. ينفّذ هذا الرمز ثلاث وظائف مهمة بأقل قدر من الرمز البرمجي:

  1. دمج MCPToolset: بدلاً من كتابة برامج HTTP مخصّصة للتفاعل مع أدوات Dataplex، تستخدم حزمة تطوير الوكلاء (ADK) الرمز MCPToolset(server_url=mcp_url). يؤدي ذلك إلى جلب تعريف tools.yaml ديناميكيًا من خادم MCP الذي تم نشره وترجمته إلى استدعاءات وظائف أصلية للنموذج اللغوي الكبير.
  2. تعليمات النظام: تحتوي المَعلمة instructions على قواعد الحوكمة الصارمة (المنطق نفسه الذي استخدمناه في CLI GEMINI.md). وتطلب هذه المَعلمة بشكل صريح من النموذج تنفيذ حلقة الاستنتاج من المرحلة 1 (البحث عن البيانات الوصفية) إلى المرحلة 2 (طلب البيانات).
  3. تنسيق الوكيل: يربط الصف Agent(...) نموذج Gemini وموجّه النظام وأدوات MCP معًا. عند النشر، تحوّل حزمة تطوير الوكلاء (ADK) هذا الكائن تلقائيًا إلى نقطة نهاية قابلة للتوسّع في FastAPI.

فصل المهام: ضبط هوية الواجهة الأمامية

لتشغيل هذا الرمز البرمجي بأمان، يجب إعلام الوكيل بمكان خادم MCP. سننشئ عنوان URL ديناميكيًا ونحفظه في ملف .env الذي ستقرأه حزمة تطوير الوكلاء (ADK) في وقت التشغيل.

سننشئ أيضًا هوية منفصلة (dataplex-agent-sa) لهذا التطبيق الذي يواجه المستخدمين. يضمن فصل المهام هذا أنّ وكيل الواجهة الأمامية لديه أذونات مختلفة عن خادم الحوكمة الخلفي.

نفِّذ الأوامر التالية لضبط البيئة والهوية:

export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
export MCP_SERVER_URL=https://governance-mcp-${PROJECT_NUMBER}.${REGION}.run.app/mcp

export AGENT_SA=dataplex-agent-sa
export AGENT_SERVICE_ACCOUNT="${AGENT_SA}@${PROJECT_ID}.iam.gserviceaccount.com"

gcloud iam service-accounts create ${AGENT_SA} \
    --display-name="Service Account for Dataplex Agent "

ضبط متغيّرات وقت التشغيل

يعتمد إطار عمل حزمة تطوير الوكلاء (ADK) على متغيّرات البيئة لفهم سياقه. علينا ضبط رقم تعريف المشروع والمنطقة بشكل صريح وتفعيل استخدام Vertex AI. سنضيف هذه المتغيّرات إلى ملف .env نفسه.

echo MCP_SERVER_URL=$MCP_SERVER_URL > .env
echo GOOGLE_GENAI_USE_VERTEXAI=1 >> .env
echo GOOGLE_CLOUD_PROJECT=$PROJECT_ID >> .env
echo GOOGLE_CLOUD_LOCATION=$REGION >> .env

منح الأذونات

على الرغم من أنّ الوكيل يفوّض عمليات التحقّق من الحوكمة إلى خادم MCP، لا يزال بحاجة إلى أذونات أساسية لكي يعمل. نمنح دورَين فقط:

  1. مستخدِم Vertex AI: لاستدعاء نموذج Gemini لإنشاء ردود باللغة الطبيعية
  2. مستدعي Cloud Run: لاستدعاء واجهة برمجة تطبيقات خادم MCP بأمان لا يحصل هذا الدور على إذن وصول مباشر إلى BigQuery أو Dataplex.
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
  --role="roles/aiplatform.user"

gcloud run services add-iam-policy-binding governance-mcp \
  --region=$REGION \
  --member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
  --role="roles/run.invoker"

النشر على Cloud Run

أخيرًا، ننشر المكدس الكامل على Cloud Run.

نستخدم uvx لتشغيل أداة حزمة تطوير الوكلاء (ADK) بدون تثبيت التبعيات يدويًا. يؤدي الأمر أدناه إلى تجميع منطق agent.py وإنشاء صورة حاوية وإدخال حساب الخدمة وتشغيل خادم FastAPI. من خلال إضافة العلامة --with_ui، يتم أيضًا تجميع ADK Web Playground لتصحيح الأخطاء.

ينشئ هذا الأمر الحاوية وينشرها. قد يستغرق إكمال ذلك من دقيقة إلى 3 دقائق.

uvx --from google-adk \
adk deploy cloud_run \
  --project=$PROJECT_ID \
  --region=$REGION \
  --service_name=dataplex-agent \
  --with_ui \
  . \
  -- \
  --service-account=$AGENT_SERVICE_ACCOUNT \
  --allow-unauthenticated

بعد اكتمال هذا الأمر، سيتم عرض عنوان URL للخدمة (e.g., https://dataplex-agent-xyz.run.app). انقر على هذا الرابط لفتح واجهة المحادثة بالذكاء الاصطناعي التوليدي الخاضعة للحوكمة بالكامل.

12a5fa4c2aaf381f.png

سير البنية المعمارية المتكاملة

لقد أكملت الآن النظام. عندما يتفاعل المستخدم مع واجهة مستخدم حزمة تطوير الوكلاء (ADK)، يحدث التسلسل التالي:

  1. يُرسِل المستخدم طلبًا في وكيل حزمة تطوير الوكلاء (ADK) (واجهة مستخدم المطوّرين).
  2. يعالج وكيل حزمة تطوير الوكلاء (ADK) (agent.py) الإدخال ويستدعي نموذج Gemini.
  3. يحدّد Gemini أنّه بحاجة إلى سياق ويطلب من خادم MCP تنفيذ أدوات Dataplex.
  4. يفرض خادم MCP قواعد حوكمة Dataplex ويعرض البيانات الوصفية.
  5. يُنشئ Gemini الإجابة الموثوق بها استنادًا إلى البيانات الوصفية ويعرضها على المستخدم.

5- اختبار وكيل المؤسسة

بعد أن أصبح الوكيل متاحًا، لنعد إلى سيناريوهات الحوكمة التي تم اختبارها سابقًا باستخدام واجهة سطر الأوامر. يبقى المنطق كما هو، ولكنك تتفاعل الآن مع ADK Web Playground الذي تم نشره، والذي يعرض الحالة الداخلية وعمليات تنفيذ الأدوات.

  1. التنسيق: يتلقّى وكيل حزمة تطوير الوكلاء (ADK) (الذي يعمل على Cloud Run) النص.
  2. توجيه الأداة: يدرك Gemini أنّ سؤالك يتطلب سياق بيانات ويُعيد توجيه الطلب إلى خادم MCP.
  3. التحقّق من الحوكمة: يستعلم خادم MCP (الذي يعمل على مثيل منفصل من Cloud Run) عن أنواع جوانب محدّدة من Dataplex.
  4. الإنشاء: يتم عرض البيانات الوصفية ذات الصلة على Gemini لإنشاء الإجابة النهائية.

التحقّق من منطق الحوكمة

افتح عنوان URL للخدمة الذي أنشأته في الخطوة السابقة (e.g., https://dataplex-agent-xyz.run.app) في المتصفّح. ألصِق الطلب التالي:

"My dashboard needs to show what's happening right now with our ad spend. I can't wait for the overnight load. What do you recommend?"

راقِب عملية استنتاج الوكيل في واجهة مستخدم المطوّرين:

  1. التعرّف على النية: يحلّل الوكيل "الآن" و"لا يمكنني الانتظار حتى الصباح".
  2. البحث عن البيانات الوصفية: يستدعي الوكيل أداة MCP search_aspect_types. يبحث الوكيل عن مواد عرض البيانات التي تم ضبط جانب update_frequency فيها على REALTIME أو STREAMING، بدلاً من DAILY أو MONTHLY.
  3. الاختيار: يحدّد الوكيل أنّ الجدول mkt_realtime_campaign_performance يستوفي هذه المعايير، بينما fin_monthly_closing_internal (على الرغم من جودته العالية) بطيء جدًا بالنسبة إلى طلبك.
  4. الردّ: يوصي الوكيل بالجدول في الوقت الفعلي.

e0da615724199e.png

أهمية ذلك:

بدون بيانات الحوكمة الوصفية هذه، من المرجّح أن يوصي النموذج اللغوي الكبير بالجدول fin_monthly_closing_internal لمجرّد أنّه يحتوي على عمود اسمه "ad_spend"، مع تجاهل حقيقة أنّ البيانات مضى عليها 24 ساعة. لقد منع سياق البيانات الوصفية حدوث خطأ تجاري.

يمكنك أيضًا اختبار الطلب "Board Meeting" لمعرفة كيف ينتقل الوكيل إلى جداول مختلفة استنادًا إلى جانب مستوى منتج البيانات:

"We are preparing the deck for an internal Board of Directors meeting next week. I need the numbers to be absolutely finalized, trustworthy, and kept strictly confidential. Which table is safe to use?"

6- إخلاء مساحة

لتجنُّب تحصيل رسوم من حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا الدرس التطبيقي حول الترميز، اتّبِع الخطوات التالية لإتلاف جميع البنية التحتية التي تم إنشاؤها في الجزء الأول والجزء الثاني.

إتلاف مستودع البيانات (Terraform)

استخدِم Terraform لإزالة جداول BigQuery ومجموعات البيانات وتعريفات جوانب Dataplex.

cd ~/devrel-demos/data-analytics/governance-context/terraform
terraform destroy -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve

حذف خدمات Cloud Run

أزِل موارد الحوسبة لإيقاف أي فوترة نشطة للحاويات قيد التشغيل.

gcloud run services delete governance-mcp --region=$REGION --quiet
gcloud run services delete dataplex-agent --region=$REGION --quiet

تنظيف مواد العرض التي تم إنشاؤها ومساحة التخزين المؤقت

عند نشر وكيل حزمة تطوير الوكلاء (ADK) باستخدام uvx، أنشأ النظام تلقائيًا صورة حاوية وحمّل الرمز البرمجي المصدر إلى حزمة مؤقتة في Cloud Storage. تبقى مواد العرض هذه حتى بعد حذف خدمة Cloud Run وسيتم تحصيل رسوم تخزين مستمرة مقابلها.

أزِل مستودع Artifact Registry وحزمة التخزين المؤقت في Cloud Storage:

# Delete the repository used for the agent build
gcloud artifacts repositories delete cloud-run-source-deploy \
    --location=$REGION \
    --quiet

# Delete the staging bucket created by Cloud Run source deploy
gcloud storage rm --recursive gs://run-sources-${PROJECT_ID}-${REGION}

حذف الهوية والأذونات والأسرار

أزِل أولاً عمليات ربط سياسة إدارة الهوية وإمكانية الوصول (IAM) لمنع بقاء إدخالات "شاهد القبر" (السجلات غير المرتبطة) في صفحة IAM لمشروعك. بعد ذلك، احذف حسابات الخدمة وأسرار الإعداد.

# Remove IAM roles granted to the MCP Service Account
gcloud projects remove-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
  --role="roles/secretmanager.secretAccessor" --quiet
gcloud projects remove-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
  --role="roles/dataplex.catalogViewer" --quiet
gcloud projects remove-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
  --role="roles/bigquery.dataViewer" --quiet

# Remove IAM roles granted to the Agent Service Account
gcloud projects remove-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
  --role="roles/aiplatform.user" --quiet

# Delete the Service Accounts
gcloud iam service-accounts delete $MCP_SERVICE_ACCOUNT --quiet
gcloud iam service-accounts delete $AGENT_SERVICE_ACCOUNT --quiet

# Delete the Secret Manager entry
gcloud secrets delete dataplex-tools-config --quiet

إزالة الإعدادات المحلية

أخيرًا، نظّف ملفات الإعداد المحلية ومتغيّرات البيئة في Cloud Shell.

# Uninstall the Gemini CLI extension (installed in Part 1)
gemini extensions uninstall dataplex

# Remove local repository files and unset variables
cd ~
rm -rf ~/devrel-demos
unset MCP_SERVER_URL
unset MCP_SERVICE_ACCOUNT
unset AGENT_SERVICE_ACCOUNT

7- تهانينا!

لقد نشرت بنجاح وكيل ذكاء اصطناعي توليدي متكاملاً يستوعب معايير الحوكمة.

في هذا الدرس التطبيقي حول الترميز المكوّن من جزأين، تجاوزت هندسة الطلبات البسيطة لتنفيذ بنية قوية وجاهزة للاستخدام في مرحلة الإنتاج. من خلال التعامل مع حوكمة البيانات كشرط أساسي للذكاء الاصطناعي التوليدي، أنشأت طريقة منهجية لمنع النموذج من استرجاع بيانات غير معتمَدة أو غير حقيقية.

الخلاصات الرئيسية

  • ذكاء اصطناعي حتمي من خلال البيانات الوصفية: بدلاً من الاعتماد على النموذج اللغوي الكبير لتخمين الجدول الصحيح استنادًا إلى أسماء الأعمدة، فرضت حلقة استنتاج صارمة باستخدام GenAI Toolbox for Databases. من خلال عرض ثلاث أدوات من Dataplex فقط بشكل صريح (search_aspect_types وsearch_entries وlookup_entry)، أجبرت النموذج على التحقّق من شهادات البيانات قبل إنشاء الإجابات.
  • البنية المعمارية غير المرتبطة (MCP): من خلال نشر خادم بروتوكول سياق النموذج (MCP) على Cloud Run، جرّدت قواعد حوكمة البيانات في واجهة برمجة تطبيقات مركزية وموحّدة. لا يحتاج وكيل الواجهة الأمامية إلى تضمين منطق قاعدة البيانات، بل يحتاج فقط إلى التواصل عبر بروتوكول MCP العادي. هذا يعني أنّه يمكنك ربط أي نموذج ذكاء اصطناعي أو عميل مستقبلي بالخادم الخلفي نفسه الخاضع للحوكمة.
  • فصل المهام: طبّقت مبدأ الحد الأدنى من الامتيازات من خلال عزل هويات إدارة الهوية وإمكانية الوصول (IAM). يعمل وكيل حزمة تطوير الوكلاء (ADK) الذي يواجه المستخدمين بأذونات محدودة لاستدعاء النموذج وتوجيه واجهة برمجة التطبيقات، بينما يعالج خادم MCP الخلفي بشكل آمن طلبات البحث في كتالوج Dataplex واسترجاع بيانات BigQuery.
  • تنسيق الوكيل الذي يعتمد على الرمز البرمجي أولاً: استخدمت حزمة تطوير الوكلاء (ADK) من Google لتغليف منطق وكيل Python على الفور في خادم خلفي قابل للتوسّع لـ FastAPI، مع الاستفادة من واجهة مستخدم المطوّرين المضمّنة لعرض عمليات تنفيذ الأدوات الداخلية للوكيل وتصحيح أخطائها.

الخطوات اللاحقة