1. مقدمة
تتميّز نماذج الذكاء الاصطناعي التوليدي بقدرتها الفائقة على الاستنتاج، ولكنّها تفتقر إلى السياق المؤسسي. إذا سأل أحد المسؤولين التنفيذيين وكيل الذكاء الاصطناعي: "ما هي إيراداتنا في الربع الأول؟"، قد يعثر الوكيل على عشرات الجداول التي تحمل الاسم "الإيرادات" في مستودع البيانات. بعضها تقارير مالية دقيقة، وبعضها الآخر تقديرات تسويقية في الوقت الفعلي، والعديد منها عبارة عن بيئات اختبار قديمة.
بدون تحديد المصدر بشكل صريح، سيختار وكيل الذكاء الاصطناعي جدولاً استنادًا إلى تشابه بسيط في الاسم، ما يؤدي إلى إجابات "مقنعة ولكنها خاطئة" مستمدة من بيانات لم يتم التحقّق منها.
يشكّل هذا الدرس التطبيقي حول الترميز جزءًا من سلسلة مؤلّفة من جزأين تستكشف كيفية إنشاء وكيل ذكاء اصطناعي توليدي يراعي الحوكمة.
في هذا الجزء الأول، ستنشئ أساس البيانات. ستعمل على إعداد مستودع بيانات واقعي "غير منظَّم" في BigQuery، وتطبيق علامات وصفية صارمة (جوانب Dataplex) للتمييز بين البيانات الصالحة والبيانات غير المرغوب فيها، واستخدام واجهة سطر الأوامر Gemini CLI لاختبار ما إذا كان النموذج اللغوي الكبير يلتزم بشكل صارم بقواعد الحوكمة.
(يمكنك قراءة الجزء الثاني من هذه السلسلة الذي يتناول كيفية نشر هذا النموذج الأوّلي المحلي في تطبيق ويب آمن ومناسب للمؤسسات باستخدام "بروتوكول سياق النموذج" (MCP) وCloud Run. 👉 قراءة الجزء 2)

المتطلبات الأساسية
- مشروع Google Cloud تم تفعيل الفوترة فيه
- فهم أساسي لخدمات BigQuery وكتالوج Dataplex الشامل وTerraform والإلمام بها
- الوصول إلى Google Cloud Shell
ما ستتعلمه
- يمكنك إنشاء بحيرة بيانات واقعية ومتعددة المستويات باستخدام Terraform.
- صمِّم نماذج بيانات وصفية صارمة (أنواع السمات) في Dataplex للتمييز بين منتجات البيانات الرسمية وجداول وضع الحماية الأولية.
- تحقَّق من قواعد الحوكمة محليًا باستخدام Gemini CLI قبل كتابة أي رمز تطبيق.
المتطلبات
- الوصول إلى Google Cloud Shell
- Terraform (مثبَّت مسبقًا في Cloud Shell)
- Gemini CLI (مثبّت مسبقًا في Cloud Shell)
المفاهيم الأساسية
- كتالوج Dataplex الشامل: خدمة موحّدة لإدارة البيانات الوصفية. نستخدمها لإثراء البيانات الوصفية الفنية (المخططات) بسياق النشاط التجاري (الإدارة).
- نوع الجانب: نموذج بيانات وصفية منظَّمة. على عكس علامات النص الحر، تفرض الجوانب الكتابة القوية (التعدادات، القيم المنطقية)، ما يجعلها موثوقة بالنسبة إلى الآلات لتقييمها.
2. الإعداد والمتطلبات
بدء Cloud Shell
على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس العملي Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
من Google Cloud Console، انقر على رمز 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"
تفعيل واجهات برمجة التطبيقات
فعِّل خدمات Google Cloud اللازمة لتنفيذ التعليمات التالية.
gcloud services enable \
artifactregistry.googleapis.com \
bigqueryunified.googleapis.com \
cloudaicompanion.googleapis.com \
cloudbuild.googleapis.com \
cloudresourcemanager.googleapis.com \
datacatalog.googleapis.com \
run.googleapis.com
إنشاء نسخة طبق الأصل من المستودع
احصل على رمز البنية الأساسية والبرامج النصية للتشغيل الآلي من مستودع GitHub. لتوفير مساحة على القرص في Cloud Shell، سننزّل المجلد المحدّد المطلوب لهذا المختبر فقط.
# Perform a shallow clone to get only the latest repository structure without the full history
git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos
# Specify and download only the folder we need for this lab
git sparse-checkout set data-analytics/governance-context
cd data-analytics/governance-context
إنشاء مخزن البيانات "غير المنظَّم"
من النادر أن تكون بيئات البيانات في العالم الحقيقي نظيفة. لمحاكاة الواقع، نحتاج إلى مزيج من مستودعات البيانات "الرسمية" وجداول "وضع التجربة" غير الموثوق بها.
سنستخدم Terraform لنشر هذه البيئة. يتولّى الإعداد مهمتَين:
- البنية الأساسية: تنشئ أنواع عناصر Dataplex ومجموعات بيانات/جداول BigQuery.
- تحميل البيانات: يتم تشغيل مهام INSERT في BigQuery لتعبئة الجداول ببيانات نموذجية فور إنشائها.
- انتقِل إلى دليل
terraformوأعِد ضبطه.
cd terraform
terraform init
- طبِّق الإعداد. قد يستغرق هذا الإجراء مدة تصل إلى دقيقة واحدة.
terraform apply -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve
نقطة توقّف: لديك الآن مستودع بيانات مركزي مكتمل، ولكنّه غير خاضع لأي إدارة. بالنسبة إلى الذكاء الاصطناعي، تبدو جميع الجداول متشابهة تمامًا.
3- تطبيق الحوكمة
هذه هي الخطوة الهندسية الحاسمة. في الوقت الحالي، يبدو الجدول finance_mart.fin_monthly_closing_internal والجدول analyst_sandbox.tmp_data_dump_v2_final_real متطابقَين بالنسبة إلى نموذج لغوي كبير. إنّها مجرّد عناصر تحتوي على أعمدة.
بصفتك مهندس حوكمة، عليك إرفاق سمة (تصنيف معتمد للبيانات الوصفية) بهذه الجداول للتمييز بينها. في مؤسسة حقيقية، يمكنك إعداد هذه العملية تلقائيًا من خلال مسارات CI/CD. سنحاكي عملية التشغيل الآلي هذه باستخدام النصوص البرمجية.
إنشاء حمولات إدارة
يجب أن تكون مفاتيح Dataplex Aspect فريدة على مستوى العالم (يجب أن تبدأ برقم تعريف مشروعك). سينشئ النص البرمجي ./generate_payloads.sh ملفات البيانات الوصفية بتنسيق YAML بشكل ديناميكي.
cd ..
chmod +x ./generate_payloads.sh
./generate_payloads.sh
الناتج:
يؤدي هذا الأمر إلى إنشاء مجلد "./aspect_payloads" يحتوي على 4 ملفات YAML تحدّد سيناريوهات الحوكمة (Gold/Internal وGold/Public وSilver/Realtime وBronze/Sandbox).
تطبيق الجوانب من خلال واجهة سطر الأوامر
قبل تشغيل النص البرمجي، لنلقِ نظرة على ما نطبّقه فعليًا لإزالة الغموض عن العملية. نفِّذ الأمر التالي للاطّلاع على بنية حمولة البيانات المالية الداخلية:
cat aspect_payloads/fin_internal.yaml
سيظهر لك المحتوى التالي.
your-project-id.us-central1.official-data-product-spec:
data:
product_tier: GOLD_CRITICAL
data_domain: FINANCE
usage_scope: INTERNAL_ONLY
update_frequency: DAILY_BATCH
is_certified: true
لاحظ كيف يحدّد ملف YAML هذا سياق النشاط التجاري بشكلٍ صريح، مثل ضبط العلامة is_certified على القيمة true وتحديد المستوى GOLD_CRITICAL. تزويد الذكاء الاصطناعي بقواعد واضحة ومنظَّمة لتقييمها بدلاً من التخمين استنادًا إلى أسماء الجداول فقط
الآن، شغِّل نص تطبيقك البرمجي. يتم تكرار ذلك في جداول BigQuery وتنفيذ الأمر gcloud dataplex entries update لإرفاق هذه البيانات الوصفية الثابتة.
chmod +x ./apply_governance.sh
./apply_governance.sh
التحقّق (اختياري)
قبل المتابعة، تأكَّد من تطبيق البيانات الوصفية بشكل صحيح في وحدة التحكّم.
- افتح صفحة الفهرس الشامل في Dataplex في Google Cloud Console. إذا لم يظهر لك "الفهرس الشامل في Dataplex" في قائمة التنقّل اليمنى، استخدِم شريط البحث في أعلى نافذة Google Cloud Console، واكتب Dataplex، ثم اختَر النتيجة ضمن "أهم النتائج" أو "المنتجات والصفحات".
- البحث عن
fin_monthly_closing_internalيجب أن يظهر جدول BigQuery في النتائج. انقر على اسم الجدول للانتقال إلى صفحة التفاصيل.

- في صفحة تفاصيل الجدول، ابحث عن قسم العلامات والجوانب الاختيارية في أسفل الصفحة.
- ستظهر لك السمة
official-data-product-spec. تأكَّد من أنّ القيم تتطابق مع سيناريو Gold Internal الذي طبّقناه.

لقد أكّدت الآن أنّ جداول BigQuery المتطابقة فنيًا (fin_monthly_closing_internal وtmp_data_dump_v2_final_real) يتم تمييزها منطقيًا من خلال البيانات الوصفية القابلة للقراءة آليًا.
4. إعداد النموذج الأولي للوكيل
قبل إنشاء تطبيق ويب (وهو ما سنفعله في الجزء 2)، سنتأكّد من صحة منطق الحوكمة محليًا. علينا تثبيت إضافة Dataplex وضبط طلب النظام.
تثبيت الإضافة
في Cloud Shell، ثبِّت إضافة Dataplex. سيُطلب منك تأكيد التفاصيل وإدخال تفاصيل الإعداد.
export DATAPLEX_PROJECT="${PROJECT_ID}"
gemini extensions install https://github.com/gemini-cli-extensions/dataplex
(اكتب Y لقبول التثبيت، وأدخِل رقم تعريف مشروعك عندما يُطلب منك ذلك).
تحديد ملف السياسة
يحتوي الملف GEMINI.md على المنطق الذي يترجم القواعد المجردة الخاصة بالبشر (مثل "أحتاج إلى بيانات آمنة") إلى عمليات بحث فنية دقيقة.
هذا الملف عام حاليًا. يجب أن يعرف الوكيل مشروع Google Cloud الذي سيتم البحث فيه تحديدًا لمنعه من تقديم معلومات غير صحيحة عن جداول من الإنترنت العام أو سياقات أخرى.
- أدرِج
PROJECT_IDفي ملف السياسة.
envsubst < GEMINI.md > GEMINI.md.tmp && mv GEMINI.md.tmp GEMINI.md
- افحص الملف لفهم الخوارزمية التي نعلّمها للذكاء الاصطناعي.
cat GEMINI.md
لاحظ ما يلي في هذا الملف:
- نطاق المشروع: يُرجى الاطّلاع على المرحلة 2. تأكَّد من استبدال projectid:
${PROJECT_ID}برقم تعريف مشروعك الفعلي(e.g., projectid:my-lab-project). في حال عدم استبدال هذا المتغيّر، سيبحث الوكيل في كل مشروع يمكنك الوصول إليه، ما يؤدي إلى تقديم إجابات غير صحيحة. - الخوارزمية: لاحظ منطق المرحلة 1 / المرحلة 2. نطلب من النموذج بشكل صريح عدم تخمين SQL. يجب أولاً البحث عن تعريف العلامة الصحيح (المرحلة 1)، ثم البحث عن البيانات (المرحلة 2).
بدء تشغيل الوكيل واختبار السيناريوهات
ابدأ جلسة Gemini CLI، مع تحميل سياسة الحوكمة هذه المرة كسياق النظام.
gemini

ملاحظة: قد تلاحظ تحميل عدة ملفات سياق (مثل GEMINI.md وغيرها). هذا أمر طبيعي. تحمّل واجهة سطر الأوامر ملف GEMINI.md المحلي الخاص بقواعد هذا المشروع، بالإضافة إلى التعليمات التلقائية الخاصة بإضافة Dataplex نفسها.
التحقّق من التثبيت
اكتب /mcp desc للتأكّد من أنّ إضافة Dataplex مفعّلة. من المفترض أن يظهر dataplex كخادم MCP تم إعداده ويتضمّن أدوات متاحة.

سيناريوهات الاختبار (النماذج الأولية)
الصِق الطلبات التالية في جلسة الوكيل النشطة واحدةً تلو الأخرى للتأكّد من أنّها تلتزم بقواعدك.
- السيناريو (أ) (اعتماد بيانات المدير المالي):
"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?"
المتوقّع: طلبات البحث fin_monthly_closing_internal لأنّها تتطابق دلاليًا مع GOLD_CRITICAL (دقيق) وINTERNAL_ONLY (اجتماع مجلس الإدارة) في "السمة".
- السيناريو (ب) (الإفصاح العلني):
"I need to share our quarterly financial summary with an external consulting firm. It is critical that we do not leak any raw or internal metrics. Which dataset is officially scrubbed and explicitly approved for external sharing?"
النتيجة المتوقّعة: يجب أن يتجاهل الوكيل الجدول الداخلي الشهري وأن يختار fin_quarterly_public_report فقط لأنّه مادة العرض الوحيدة التي تمّت الإشارة إليها بالعلامة EXTERNAL_READY.
- السيناريو (ج) (الاحتياجات التشغيلية):
"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?"
المتوقّع: يختار العميل mkt_realtime_campaign_performance لأنّه يحدّد معدّل تكرار التعديل REALTIME_STREAMING، مع إعطاء الأولوية لذلك على مستوى GOLD_CRITICAL من البيانات المالية.
- السيناريو (د) (التجربة في وضع الحماية):
"I'm just playing around with some new ML models and need a lot of raw data. It doesn't need to be perfect, just a sandbox environment."
المتوقّع: يختار الوكيل tmp_data_dump_v2_final_real لأنّه يتطابق دلاليًا مع BRONZE_ADHOC (البيانات الأولية) وis_certified: false (بيئة وضع الحماية) في Aspect.
(للخروج من جلسة Gemini، اكتب /quit)
5- تهانينا! ما هي الخطوات التالية؟
لقد أنشأت بنجاح أساسًا محكومًا للبيانات وأثبتَّ أنّ الذكاء الاصطناعي يمكنه اتّباع قواعد البيانات الوصفية بدقة باستخدام نموذج أولي لواجهة سطر الأوامر المحلية.
لقد بلغت الآن نقطة تفتيش. يُرجى اختيار الخطوة التالية:
الخيار "أ": أريد الانتقال إلى الجزء 2 الآن
إذا كنت مستعدًا لتحويل هذا النموذج الأوّلي المحلي إلى تطبيق ويب آمن ومناسب للإنتاج باستخدام "بروتوكول سياق النموذج" (MCP) وCloud Run، اتّبِع الخطوات التالية:
👉 رابط إلى الجزء 2 من الدرس التطبيقي حول الترميز
الخيار "ب": سأكمل الجزء 2 لاحقًا أو أردتُ إكمال الجزء 1 فقط.
إذا أردت التوقف اليوم وتجنُّب تكاليف السحابة الإلكترونية، عليك تنظيف مواردك.
لا داعي للقلق. في الجزء 2، سنقدّم "نصًا برمجيًا سريعًا" يعيد إنشاء بيئة الجزء 1 هذه بالكامل في غضون دقيقتَين فقط، ما يتيح لك المتابعة من حيث توقّفت تمامًا.
👉 انتقِل إلى قسم "تنظيف".
6. التنظيف (للخيار "ب" فقط)
إذا كنت ستتوقف هنا، عليك إتلاف الموارد لتجنُّب تكبُّد رسوم.
تدمير مستودع البيانات (Terraform)
إذا كنت حاليًا في بيئة Gemini CLI، يمكنك الخروج من الجلسة بالضغط على Ctrl+C مرّتين أو كتابة /quit. بعد ذلك، شغِّل الأوامر التالية:
cd ~/devrel-demos/data-analytics/governance-context/terraform
terraform destroy -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve
إلغاء تثبيت إضافة Gemini CLI وإزالة الملفات المخزَّنة على الجهاز
gemini extensions uninstall dataplex
cd ~
rm -rf ~/devrel-demos