تسريع عملية التطوير المستندة إلى البيانات باستخدام MCP Toolbox لـ AlloyDB من خلال واجهة سطر الأوامر Gemini على Cloud Run

1. نظرة عامة

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

الحل

وهنا تبرز أهمية تطوير التطبيقات بشكل أسرع، ولهذا السبب أنا متحمّس جدًا لمشاركة كيفية استخدام "مجموعة أدوات المنصة السحابية الحديثة" (MCP)، التي يمكن الوصول إليها من خلال واجهة سطر الأوامر البديهية في Gemini، والتي أصبحت جزءًا لا غنى عنه من مجموعة أدواتي. تخيَّل التفاعل بسلاسة مع مثيل AlloyDB وكتابة الاستعلامات وفهم مجموعة البيانات، كل ذلك مباشرةً من داخل بيئة التطوير المتكاملة (IDE). لا يقتصر الأمر على توفير الراحة، بل يهدف إلى الحدّ بشكل أساسي من المشاكل في دورة حياة التطوير، ما يتيح لك التركيز على إنشاء ميزات مبتكرة بدلاً من التعامل مع أدوات خارجية.

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

ما ستتعلمه وتصمّمه

تطبيق "بحث في متاجر البيع بالتجزئة" يستخدم "مجموعة أدوات MCP" ضمن بيئة التطوير المتكاملة (IDE)، ويتم تشغيله بواسطة واجهة سطر الأوامر (CLI) من Gemini. سنتناول:

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

Techstack

نستخدم:

  • AlloyDB لقاعدة البيانات
  • MCP Toolbox لتجريد ميزات الذكاء الاصطناعي التوليدي والذكاء الاصطناعي المتقدّمة لقواعد البيانات من التطبيق
  • ‫Cloud Run للنشر بدون خادم
  • استخدام Gemini CLI لفهم مجموعة البيانات وتحليلها وإنشاء جزء قاعدة البيانات من تطبيق التجارة الإلكترونية للبيع بالتجزئة

المتطلبات

  • متصفّح، مثل Chrome أو Firefox
  • مشروع على Google Cloud تم تفعيل الفوترة فيه

2. قبل البدء

إنشاء مشروع

  1. في Google Cloud Console، في صفحة اختيار المشروع، اختَر أو أنشِئ مشروعًا على Google Cloud.
  2. تأكَّد من تفعيل الفوترة لمشروعك على Cloud. تعرَّف على كيفية التحقّق مما إذا كانت الفوترة مفعَّلة في مشروع.

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

  1. ستستخدم Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud. انقر على "تفعيل Cloud Shell" في أعلى "وحدة تحكّم Google Cloud".

صورة زر تفعيل Cloud Shell

  1. بعد الاتصال بـ Cloud Shell، يمكنك التأكّد من أنّك قد أثبتّ هويتك وأنّ المشروع مضبوط على معرّف مشروعك باستخدام الأمر التالي:
gcloud auth list
  1. نفِّذ الأمر التالي في Cloud Shell للتأكّد من أنّ أمر gcloud يعرف مشروعك.
gcloud config list project
  1. إذا لم يتم ضبط مشروعك، استخدِم الأمر التالي لضبطه:
gcloud config set project <YOUR_PROJECT_ID>
  1. فعِّل واجهات برمجة التطبيقات المطلوبة: اتّبِع الرابط وفعِّل واجهات برمجة التطبيقات.

يمكنك بدلاً من ذلك استخدام أمر gcloud لهذا الغرض. راجِع المستندات لمعرفة أوامر gcloud وطريقة استخدامها.

3- إعداد قاعدة البيانات

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

لننشئ مجموعة AlloyDB ومثيلًا وجدولاً سيتم تحميل مجموعة بيانات التجارة الإلكترونية فيها.

إنشاء مجموعة ومثيل

  1. انتقِل إلى صفحة AlloyDB في Cloud Console. تتمثّل إحدى الطرق السهلة للعثور على معظم الصفحات في Cloud Console في البحث عنها باستخدام شريط البحث في وحدة التحكّم.
  2. اختَر إنشاء مجموعة من تلك الصفحة:

f76ff480c8c889aa.png

  1. ستظهر لك شاشة مشابهة للشاشة أدناه. أنشئ مجموعة ومثيل بالقيم التالية (تأكَّد من تطابق القيم في حال استنساخ رمز التطبيق من المستودع):
  • معرّف المجموعة: "vector-cluster"
  • كلمة المرور: "alloydb"
  • ‫PostgreSQL 15 / أحدث إصدار يُنصح به
  • المنطقة: "us-central1"
  • الشبكات: "default"

538dba58908162fb.png

  1. عند اختيار الشبكة التلقائية، ستظهر لك شاشة مثل الشاشة أدناه.

انقر على إعداد الاتصال.

7939bbb6802a91bf.png

  1. بعد ذلك، اختَر "استخدام نطاق عناوين IP مخصّص تلقائيًا" وانقر على "متابعة". بعد مراجعة المعلومات، انقر على CREATE CONNECTION (إنشاء اتصال). 768ff5210e79676f.png
  2. بعد إعداد شبكتك، يمكنك مواصلة إنشاء مجموعتك. انقر على إنشاء مجموعة لإكمال إعداد المجموعة كما هو موضّح أدناه:

e06623e55195e16e.png

ملاحظة مهمة:

  1. احرص على تغيير معرّف المثيل (الذي يمكنك العثور عليه عند إعداد المجموعة أو المثيل) إلى **vector-instance**. وإذا لم تتمكّن من تغييره، تذكَّر **استخدام معرّف المثيل** في جميع المراجع القادمة.
  2. يُرجى العِلم أنّ عملية إنشاء المجموعة ستستغرق حوالي 10 دقائق. بعد اكتمال العملية بنجاح، من المفترض أن تظهر لك شاشة تعرض نظرة عامة على المجموعة التي أنشأتها للتو.

4. نقل البيانات

حان الوقت الآن لإضافة جدول يتضمّن بيانات حول المتجر. انتقِل إلى AlloyDB، واختَر المجموعة الأساسية، ثم AlloyDB Studio:

847e35f1bf8a8bd8.png

قد تحتاج إلى الانتظار إلى أن يكتمل إنشاء الجهاز الظاهري. بعد ذلك، سجِّل الدخول إلى AlloyDB باستخدام بيانات الاعتماد التي أنشأتها عند إنشاء المجموعة. استخدِم البيانات التالية للمصادقة على PostgreSQL:

  • اسم المستخدم : "postgres"
  • قاعدة البيانات : "postgres"
  • كلمة المرور : "alloydb"

بعد إكمال عملية المصادقة بنجاح في AlloyDB Studio، يتم إدخال أوامر SQL في "المحرّر". يمكنك إضافة نوافذ "المحرّر" متعددة باستخدام علامة الجمع على يسار النافذة الأخيرة.

91a86d9469d499c4.png

ستُدخل أوامر AlloyDB في نوافذ المحرّر، باستخدام الخيارات "تشغيل" و"تنسيق" و"محو" حسب الحاجة.

تفعيل الإضافات

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

CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
CREATE EXTENSION IF NOT EXISTS vector;

إذا أردت التحقّق من الإضافات التي تم تفعيلها في قاعدة البيانات، نفِّذ أمر SQL التالي:

select extname, extversion from pg_extension;

إنشاء جدول

يمكنك إنشاء جدول باستخدام عبارة DDL أدناه في AlloyDB Studio:

CREATE TABLE apparels ( 
  id BIGINT, 
  category VARCHAR(100), 
  sub_category VARCHAR(50), 
  uri VARCHAR(200), 
  gsutil_uri VARCHAR(200),
  image VARCHAR(100), 
  content VARCHAR(2000), 
  pdt_desc VARCHAR(5000), 
  color VARCHAR(2000),
  gender VARCHAR(200),
  embedding vector(768),
  img_embeddings vector(1408),
  additional_specification VARCHAR(100000));

سيسمح عمود التضمين بتخزين قيم المتجهات للنص.

منح الإذن

نفِّذ العبارة أدناه لمنح إذن التنفيذ على الدالة "embedding":

GRANT EXECUTE ON FUNCTION embedding TO postgres;

منح دور "مستخدم Vertex AI" لحساب خدمة AlloyDB

من وحدة تحكّم Google Cloud IAM، امنح حساب خدمة AlloyDB (الذي يبدو على النحو التالي: service-<<PROJECT_NUMBER>>@gcp-sa-alloydb.iam.gserviceaccount.com) إذن الوصول إلى الدور "مستخدم Vertex AI". سيحتوي PROJECT_NUMBER على رقم مشروعك.

بدلاً من ذلك، يمكنك تنفيذ الأمر أدناه من "وحدة Cloud Shell الطرفية":

PROJECT_ID=$(gcloud config get-value project)


gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"

تحميل البيانات إلى قاعدة البيانات

  1. انسخ عبارات طلب البحث insert من insert scripts sql في ورقة البيانات إلى المحرّر كما هو موضّح أعلاه. يمكنك نسخ 10 إلى 50 عبارة إدراج للحصول على عرض توضيحي سريع لحالة الاستخدام هذه. تتوفّر هنا قائمة محدّدة بالإعلانات المدرَجة في علامة التبويب "الإعلانات المدرَجة المحدّدة من 25 إلى 30 صفًا".
  2. انقر على تشغيل. تظهر نتائج طلب البحث في جدول النتائج.

ملاحظة مهمة:

احرص على نسخ 25 إلى 50 سجلاً فقط لإدراجها، وتأكَّد من أنّها من نطاق الفئة والفئة الفرعية واللون وأنواع الجنس.

5- إنشاء تضمينات للبيانات

يكمن الابتكار الحقيقي في البحث الحديث في فهم المعنى، وليس الكلمات الرئيسية فقط. وهنا يأتي دور التضمينات والبحث المتّجه.

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

سيتيح عمود التضمين تخزين قيم المتجهات لنص وصف المنتج. سيسمح عمود img_embeddings بتخزين تضمينات الصور (متعددة الوسائط). بهذه الطريقة، يمكنك أيضًا استخدام البحث المستند إلى المسافة بين النص والصورة. لكنّنا سنستخدم تضمينات النصوص فقط في هذا الدرس التطبيقي.

SELECT embedding('text-embedding-005', 'AlloyDB is a managed, cloud-hosted SQL database service.');

من المفترض أن يعرض هذا الطلب متجه التضمينات، الذي يبدو كصفيف من الأرقام العشرية، للنص النموذجي في الطلب. يبدو على النحو التالي:

25a1d7ef0e49e91e.png

تعديل حقل "المتجهات" abstract_embeddings

نفِّذ أمر لغة معالجة البيانات (DML) أدناه لتعديل وصف المحتوى في الجدول باستخدام عمليات التضمين المقابلة:

UPDATE apparels SET embedding = embedding('text-embedding-005',pdt_desc)::vector 
WHERE pdt_desc IS NOT NULL;

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

إذا أردت إنشاء تضمينات صور (لإجراء بحث سياقي متعدّد الوسائط)، نفِّذ التعديل أدناه أيضًا:

update apparels set img_embeddings = ai.image_embedding(
  model_id => 'multimodalembedding@001',
  image => gsutil_uri,
  mimetype => 'image/jpg')       
where gsutil_uri is not null

6. مجموعة أدوات MCP لقواعد البيانات (AlloyDB)

في الخلفية، تضمن الأدوات القوية والتطبيق المنظَّم جيدًا التشغيل السلس.

تعمل حزمة أدوات MCP (بروتوكول سياق النموذج) لقواعد البيانات على تبسيط عملية دمج أدوات الذكاء الاصطناعي التوليدي والأدوات المستندة إلى وكيل مع AlloyDB. وهو يعمل كخادم مفتوح المصدر يسهّل تجميع الاتصالات والمصادقة وعرض وظائف قاعدة البيانات بشكل آمن على وكلاء الذكاء الاصطناعي أو التطبيقات الأخرى.

في تطبيقنا، استخدمنا MCP Toolbox for Databases كطبقة تجريدية لجميع طلبات البحث الذكية المختلطة.

اتّبِع الخطوات التالية لإعداد "أدوات المطوّرين" ونشرها لحالة الاستخدام:

يمكنك ملاحظة أنّ إحدى قواعد البيانات المتوافقة مع "أدوات MCP لقواعد البيانات" هي AlloyDB، وبما أنّنا قد وفّرناها في القسم السابق، لننتقل إلى إعداد "الأدوات".

  1. انتقِل إلى "وحدة Cloud Shell" وتأكَّد من اختيار مشروعك وعرضه في طلب الوحدة. نفِّذ الأمر التالي من "وحدة Cloud Shell الطرفية" للانتقال إلى دليل مشروعك:
mkdir gemini-cli-project

cd gemini-cli-project
  1. نفِّذ الأمر أدناه لتنزيل مجموعة الأدوات وتثبيتها في مجلدك الجديد:
# see releases page for other versions
export VERSION=0.7.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox

من المفترض أن يؤدي ذلك إلى إنشاء مجموعة الأدوات في الدليل الحالي. انسخ المسار إلى صندوق الأدوات.

  1. انتقِل إلى "محرّر Cloud Shell" (لوضع تعديل الرمز) وفي مجلد جذر المشروع "gemini-cli-project"، أضِف ملفًا باسم "tools.yaml".
sources:
    alloydb:
        kind: "alloydb-postgres"
        project: "<<YOUR_PROJECT_ID>>"
        region: "us-central1"
        cluster: "vector-cluster"
        instance: "vector-instance"
        database: "postgres"
        user: "postgres"
        password: "alloydb"


tools:
   get-apparels:
    kind: postgres-sql
    source: alloydb
    description: Get all apparel data.
    statement: |
      select id, content, uri, category, sub_category,color,gender from apparels;

لنتعرّف على ملف tools.yaml:

تمثّل المصادر مصادر البيانات المختلفة التي يمكن أن تتفاعل معها إحدى الأدوات. يمثّل المصدر مصدر بيانات يمكن للأداة التفاعل معه. يمكنك تعريف المصادر كخريطة في قسم المصادر ضمن ملف tools.yaml. عادةً، سيحتوي إعداد المصدر على أي معلومات مطلوبة للاتصال بقاعدة البيانات والتفاعل معها.

تحدِّد الأدوات الإجراءات التي يمكن أن يتّخذها الوكيل، مثل القراءة والكتابة إلى مصدر. تمثّل الأداة إجراءً يمكن أن يتّخذه الوكيل، مثل تنفيذ عبارة SQL. يمكنك تعريف "الأدوات" كخريطة في قسم الأدوات من ملف tools.yaml. عادةً، تتطلّب الأداة مصدرًا لتنفيذ إجراء.

لمزيد من التفاصيل حول إعداد ملف tools.yaml، يُرجى الرجوع إلى هذا المستند.

كما هو موضّح في ملف Tools.yaml أعلاه، تعرض الأداة "get-apparels" جميع تفاصيل الملابس من قاعدة البيانات.

7. إعداد Gemini CLI

من "محرّر Cloud Shell"، أنشئ مجلدًا جديدًا باسم .gemini داخل المجلد gemini-cli-project، وأنشئ ملفًا جديدًا باسم settings.json فيه.

{
  "mcpServers": {
"AlloyDBServer": {
  "command": "/home/user/gemini-cli-project/toolbox",
  "args": ["--tools-file", "tools.yaml", "--stdio"]
}
  }
}

في قسم الأوامر في المقتطف أعلاه، استبدِل "/home/user/gemini-cli-project/toolbox" بمسار الأدوات.

تثبيت Gemini CLI

أخيرًا، من "وحدة Cloud Shell الطرفية"، لنثبّت Gemini CLI في الدليل نفسه gemini-cli-project من خلال تنفيذ الأمر:

sudo npm install -g @google/gemini-cli

تحديد رقم تعريف المشروع

تأكَّد من ضبط رقم تعريف المشروع النشط في البيئة:

export GOOGLE_CLOUD_PROJECT=<<YOUR_PROJECT_ID>>

بدء استخدام Gemini CLI

من سطر الأوامر، أدخِل الأمر:

gemini

من المفترض أن يظهر لك ردّ مشابه لما يلي:

94f16dd7b5e2ca77.png

يجب إثبات ملكية الحساب والمتابعة إلى الخطوة التالية.

8. بدء التفاعل مع Gemini CLI

استخدِم الأمر /mcp لإدراج خوادم MCP التي تم إعدادها.

83e1c54ec68add5c.png

من المفترض أن تتمكّن من رؤية خادمي MCP اللذين أعددناهما: GitHub وMCP Toolbox for Databases المُدرَجان مع أدواتهما.

84b59c3027d370e2.png

في حالتي، لديّ المزيد من الأدوات. لذا، تجاهَل هذه الرسالة في الوقت الحالي. من المفترض أن تظهر لك أداة get-apparels في خادم AlloyDB MCP.

بدء طلب البحث من قاعدة البيانات من خلال "مجموعة أدوات MCP"

الآن، جرِّب طرح أسئلة باللغة الطبيعية لجلب الردود والاستعلامات لمجموعة البيانات التي نعمل عليها:

> How many types of genders the apparel dataset has?

ae24caa625ef871b.png

> Give me the SQL that I can use to find the number of apparels that are footwear 

b75da65679031c7.png

> What are the unique sub categories that are there?
that I can use to find the number of apparels that are footwear 

c04fd9e113a4ed95.png

لنفترض الآن أنّني استنادًا إلى إحصاءاتي والعديد من طلبات البحث المشابهة، توصّلتُ إلى طلب بحث مفصّل وأريد اختباره. أو لنفترض أنّ مهندسي قواعد البيانات قد أنشأوا ملف Tools.yaml لك على النحو التالي:

sources:
    alloydb:
        kind: "alloydb-postgres"
        project: "<<YOUR_PROJECT_ID>>"
        region: "us-central1"
        cluster: "vector-cluster"
        instance: "vector-instance"
        database: "postgres"
        user: "postgres"
        password: "alloydb"

tools:
   get-apparels:
    kind: postgres-sql
    source: alloydb
    description: Get all apparel data.
    statement: |
      select id, content, uri, category, sub_category,color,gender from apparels;

   filtered-vector-search:
    kind: postgres-sql
    source: alloydb
    description: Get the list of facet filter values from the retail dataset.
    parameters:
      - name: categories
        type: array
        description: List of categories preferred by the user.
        items:
          name: category 
          type: string
          description: Category value. 
      - name: subCategories
        type: array
        description: List of sub-categories preferred by the user.
        items:
          name: subCategory 
          type: string
          description: Sub-Category value.
      - name: colors
        type: array
        description: List of colors preferred by the user.
        items:
          name: color 
          type: string
          description: Color value.
      - name: genders
        type: array
        description: List of genders preferred by the user for apparel fitting.
        items:
          name: gender 
          type: string
          description: Gender name.
      - name: searchtext
        type: string
        description: Description of the product that the user wants to find database matches for.    
    statement: |
      SELECT id, content, uri, category, sub_category,color,gender FROM apparels 
      where category = ANY($1) and sub_Category = ANY($2) and color = ANY($3) and gender = ANY($4)
      order by embedding <=> embedding('text-embedding-005',$5)::vector limit 10

لنجرّب الآن البحث بلغة طبيعية:

> How many yellow shirts are there for boys?

5c3890cf69e3dacb.png

4ec79f49b2eaebbd.png

يبدو رائعًا جدًا، أليس كذلك؟ أستطيع الآن إصلاح ملف yaml لتحقيق المزيد من التقدّم في طلبات البحث، مع مواصلة تقديم وظائف جديدة في تطبيقي في إطار زمني أسرع.

9- تطوير التطبيقات بشكل أسرع

إنّ ميزة دمج إمكانات قواعد البيانات مباشرةً في بيئة التطوير المتكاملة (IDE) من خلال Gemini CLI وMCP Toolbox ليست مجرد ميزة نظرية. ويؤدي ذلك إلى سير عمل ملموس يعزّز السرعة، لا سيما بالنسبة إلى تطبيق معقّد مثل تجربة البيع بالتجزئة المختلطة. في ما يلي بعض السيناريوهات:

1. التكرار السريع لمنطق فلترة المنتجات

لنفترض أنّنا أطلقنا للتو عرضًا ترويجيًا جديدًا على "الملابس الرياضية الصيفية". نريد اختبار كيفية تفاعل الفلاتر المتعدّدة الأوجه (مثل العلامة التجارية والحجم واللون ونطاق السعر) مع هذه الفئة الجديدة.

بدون دمج بيئة التطوير المتكاملة:

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

باستخدام Gemini CLI وMCP:

يمكنني البقاء في بيئة التطوير المتكاملة (IDE) والمزيد:

  • الاستعلام: يمكنني تعديل الاستعلام بسرعة في ملف yaml باستخدام (مجموعة بيانات افتراضية) "SELECT DISTINCT brand FROM products WHERE category = ‘activewear' AND season = ‘summer'" وتجربته مباشرةً في نافذة الأوامر.
  • استكشاف البيانات: يمكنك الاطّلاع على العلامات التجارية التي تم إرجاعها على الفور. إذا أردت معرفة مدى توفّر منتج من علامة تجارية معيّنة وبمقاس معيّن، يمكنك استخدام طلب بحث سريع آخر:"SELECT COUNT(*) FROM products WHERE brand = ‘SummitGear' AND size = ‘M' AND category = ‘activewear' AND season = ‘summer'"
  • دمج التعليمات البرمجية: يمكنني بعد ذلك تعديل منطق التصفية في الواجهة الأمامية أو طلبات واجهة برمجة التطبيقات في الخلفية على الفور استنادًا إلى إحصاءات البيانات السريعة هذه داخل بيئة التطوير المتكاملة، ما يقلّل بشكل كبير من حلقة الملاحظات.

2. تحسين "البحث المتّجه" لاقتراحات المنتجات

تعتمد ميزة "البحث المختلط" على تضمينات متجهة لتقديم اقتراحات ذات صلة بالمنتجات. لنفترض أنّنا لاحظنا انخفاضًا في نسب النقر إلى الظهور للاقتراحات المتعلقة بـ "أحذية الركض الرجالية".

بدون دمج بيئة التطوير المتكاملة:

سأستخدم نصوصًا برمجية أو طلبات بحث مخصّصة في أداة قاعدة بيانات لتحليل نتائج التشابه بين الأحذية المقترَحة، ومقارنتها ببيانات تفاعل المستخدمين، ومحاولة ربط أي أنماط.

باستخدام Gemini CLI وMCP:

  • تحليل التضمينات: يمكنني طلب البحث مباشرةً عن تضمينات المنتجات والبيانات الوصفية المرتبطة بها: "SELECT product_id, name, vector_embedding FROM products WHERE category = ‘running shoes' AND gender = ‘male' LIMIT 10"
  • المقارنة المرجعية: يمكنني أيضًا إجراء فحص سريع لتشابه المتجهات الفعلي بين منتج محدّد واقتراحاته، وذلك في الصفحة نفسها. على سبيل المثال، إذا تم اقتراح المنتج "أ" على المستخدمين الذين اطّلعوا على المنتج "ب"، يمكنني تنفيذ طلب بحث لاسترداد تضمينات المتجهات ومقارنتها.
  • تصحيح الأخطاء: يتيح ذلك تصحيح الأخطاء واختبار الفرضيات بشكل أسرع. هل يعمل نموذج التضمين على النحو المتوقّع؟ هل هناك أيّ قيم شاذة في البيانات تؤثر في جودة الاقتراحات؟ يمكنني الحصول على إجابات أولية بدون مغادرة بيئة البرمجة.

3- فهم المخطط وتوزيع البيانات للميزات الجديدة

لنفترض أنّنا نخطّط لإضافة ميزة "مراجعات العملاء". قبل كتابة واجهة برمجة التطبيقات للخادم الخلفي، نحتاج إلى فهم بيانات العملاء الحالية وكيفية تنظيم المراجعات.

بدون دمج بيئة التطوير المتكاملة:

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

باستخدام Gemini CLI وMCP:

  • استكشاف المخطط: يمكنني ببساطة طلب البحث في الجدول في ملف yaml وتنفيذه مباشرةً في نافذة الأوامر.
  • أخذ عيّنات من البيانات: يمكنني بعد ذلك استخراج عيّنات من البيانات لفهم التركيبة السكانية للعملاء وسجلّ الشراء: "SELECT customer_id, name, signup_date, total_orders FROM customers ORDER BY signup_date DESC LIMIT 5"
  • التخطيط: يتيح لنا الوصول السريع إلى المخطط وتوزيع البيانات اتّخاذ قرارات مدروسة بشأن كيفية تصميم جدول المراجعات الجديد، والمفاتيح الخارجية التي يجب إنشاؤها، وكيفية ربط المراجعات بالعملاء والمنتجات بكفاءة، وكل ذلك قبل كتابة سطر واحد من رمز التطبيق للميزة الجديدة.

هذه مجرّد أمثلة قليلة، لكنّها تسلّط الضوء على الفائدة الأساسية، وهي تقليل المشاكل وزيادة سرعة المطوّرين. من خلال دمج التفاعل مع AlloyDB مباشرةً في بيئة التطوير المتكاملة، يتيح لنا كلّ من واجهة سطر الأوامر Gemini CLI وMCP Toolbox إنشاء تطبيقات أفضل وأكثر استجابةً وبسرعة أكبر.

10. تَنظيم

لتجنُّب تحمّل رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذه المشاركة، اتّبِع الخطوات التالية:

  1. في Google Cloud Console، انتقِل إلى صفحة Resource Manager.
  2. في قائمة المشاريع، اختَر المشروع الذي تريد حذفه، ثم انقر على حذف.
  3. في مربّع الحوار، اكتب رقم تعريف المشروع، ثم انقر على إيقاف لحذف المشروع.
  4. بدلاً من ذلك، يمكنك حذف مجموعة AlloyDB (غيِّر الموقع الجغرافي في هذا الرابط التشعّبي إذا لم تختر us-central1 للمجموعة في وقت الإعداد) التي أنشأناها للتو لهذا المشروع من خلال النقر على الزر DELETE CLUSTER (حذف المجموعة).

11. تهانينا

تهانينا! لقد نجحت في دمج MCP Toolbox مباشرةً في بيئة التطوير المتكاملة (IDE) لتوفير تفاعل سلس مع AlloyDB، واستفدت من واجهة سطر الأوامر (CLI) في Gemini للتفاعل مع مجموعة بيانات التجارة الإلكترونية الخاصة بقطاع البيع بالتجزئة من أجل كتابة طلبات بحث تتطلّب عادةً أدوات منفصلة. لقد تعلّمت طرقًا جديدة لاستكشاف البيانات وفهمها، بدءًا من التحقّق من بنى الجداول إلى إجراء عمليات تحقّق سريعة من صحة البيانات، وكل ذلك من خلال واجهات سطر الأوامر المألوفة في بيئة التطوير المتكاملة.

يمكنك استنساخ repo وتحليل التطبيق وإخباري إذا كنت قد حسّنته باستخدام واجهة سطر الأوامر (CLI) من Gemini و"أدوات MCP لقواعد البيانات".

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