إنشاء ميزات الذكاء الاصطناعي التوليدي المستندة إلى بياناتك باستخدام Firebase Genkit

1- قبل البدء

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

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

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

  • معرفة بـ Firestore وNode.js وTypeScript

ما ستتعرّف عليه

  • كيفية إنشاء تطبيقات أكثر ذكاءً باستخدام إمكانات البحث المتقدم عن التشابه في المتجهات في Firestore
  • كيفية تنفيذ الذكاء الاصطناعي التوليدي بشكل عملي في تطبيقاتك باستخدام Firebase Genkit
  • تجهيز الحلّ للنشر والدمج

المتطلبات

  • متصفّح من اختيارك، مثل Google Chrome
  • بيئة تطوير تتضمّن محرِّر رموز ووحدة تحكّم
  • حساب Google لإنشاء مشروعك على Firebase وإدارته

2- مراجعة تطبيق الويب وخدمات السحابة الإلكترونية المستخدَمة

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

تطبيق الويب

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

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

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

d54f2043af908fb.png

الخدمات المستخدَمة

في هذا الدليل التعليمي حول الرموز البرمجية، ستستخدم العديد من خدمات Firebase وCloud وميزاتها، وسيتم توفير معظم الرموز البرمجية الأساسية لها. يحتوي الجدول التالي على الخدمات التي ستستخدمها وأسباب استخدامها.

الخدمة

سبب الاستخدام

Firebase Genkit

يمكنك استخدام Genkit لإدخال الذكاء الاصطناعي التوليدي في تطبيق Node.js أو Next.js.

Cloud Firestore

تخزِّن البيانات في Cloud Firestore، والتي يتم استخدامها بعد ذلك للبحث عن التشابه بين المتجهات.

Vertex AI من Google Cloud

استخدام نماذج أساسية من Vertex AI (مثل Gemini) لتعزيز ميزات الذكاء الاصطناعي

استضافة تطبيقات Firebase

يمكنك اختياريًا استخدام ميزة "استضافة تطبيقات Firebase" الجديدة والمبسّطة لعرض تطبيق الويب الديناميكي Next.js (المرتبط بأحد مستودعات GitHub).

3- إعداد بيئة التطوير

التحقّق من إصدار Node.js

  1. في وحدة التحكّم، تأكَّد من تثبيت الإصدار 20.0.0 أو إصدار أحدث من Node.js:
    node -v
    
  2. إذا لم يكن لديك الإصدار 20.0.0 من Node.js أو إصدار أحدث، عليك تنزيل أحدث إصدار يتطلّب دعمًا على المدى الطويل وتثبيته.

الحصول على رمز المصدر للدرس التطبيقي حول الترميز

إذا كان لديك حساب على GitHub:

  1. أنشئ مستودعًا جديدًا باستخدام النموذج من github.com/FirebaseExtended/codelab-ai-genkit-rag65ef006167d600ab.png
  2. أنشئ نسخة طبق الأصل على الجهاز من مستودع GitHub الذي أنشأته للتو في دورة تعلم البرمجة:
    git clone https://github.com/<your-github-handle>/codelab-ai-genkit-rag
    

إذا لم يكن لديك git مثبّتًا أو كنت تفضّل عدم إنشاء مستودع جديد:

نزِّل مستودع GitHub كملف zip.

مراجعة بنية المجلد

على جهازك، ابحث عن المستودع المُنشئ من النسخة الأصلية وراجِع بنية المجلدات:

المجلد

الوصف

genkit-functions

رمز Genkit للخلفية

load-firestore-data

أداة سطر الأوامر المساعِدة لملء مجموعة Firestore مسبقًا بسرعة

*كل شيء آخر

رمز تطبيق الويب Next.js

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

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

تثبيت Firebase CLI

  1. تأكَّد من تثبيت واجهة برمجة التطبيقات Firebase CLI وأنّها بالإصدار 13.6 أو إصدار أحدث:
    firebase --version
    
  2. إذا كان لديك Firebase CLI مثبّتًا، ولكن ليس الإصدار 13.6 أو إصدارًا أحدث، عليك تحديثه:
    npm update -g firebase-tools
    
  3. إذا لم يكن لديك Firebase CLI مثبّتًا، ثبِّته:
    npm install -g firebase-tools
    

إذا لم تتمكّن من تحديث واجهة برمجة التطبيقات Firebase CLI أو تثبيتها بسبب أخطاء في الأذونات، اطّلِع على مستندات npm أو استخدِم خيار تثبيت آخر.

سجِّل الدخول إلى Firebase.

  1. في وحدة التحكّم، سجِّل الدخول إلى Firebase:
    firebase login
    
    إذا أظهرت وحدة التحكّم أنّك سجّلت الدخول إلى Firebase من قبل، يمكنك الانتقال إلى قسم إعداد مشروعك على Firebase في هذا الدليل التعليمي.
  2. في وحدة التحكّم، أدخِل Y أو N بناءً على ما إذا كنت تريد أن يجمع Firebase البيانات. (يمكن استخدام أيّ من الخيارَين في هذا الدرس التطبيقي حول الترميز)
  3. في المتصفّح، اختَر حسابك على Google وانقر على السماح.

تثبيت واجهة سطر أوامر gcloud في Google Cloud

  1. ثبِّت gcloud CLI.
  2. في المحطة الطرفية، سجِّل الدخول إلى Google Cloud:
    gcloud auth login
    

4. إعداد مشروعك على Firebase

في هذا القسم، ستُنشئ مشروعًا على Firebase وتُسجِّل تطبيق ويب على Firebase فيه. ستفعّل أيضًا بعض الخدمات التي يستخدمها نموذج تطبيق الويب لاحقًا في هذا الدرس التطبيقي حول الترميز.

تتم تنفيذ جميع الخطوات الواردة في هذا القسم في وحدة تحكّم Firebase.

إنشاء مشروع على Firebase

  1. سجِّل الدخول إلى وحدة تحكُّم Firebase باستخدام حساب Google نفسه الذي استخدمته في الخطوة السابقة.
  2. انقر على إنشاء مشروع، ثم أدخِل اسمًا للمشروع (مثل Compass Codelab).
    تذكَّر رقم تعريف المشروع الذي تمّ تعيينه تلقائيًا لمشروعك على Firebase (أو انقر على رمز تعديل لضبط رقم تعريف المشروع المفضّل لديك). ستحتاج إلى رقم التعريف هذا لاحقًا لتحديد مشروعك على Firebase في واجهة Firebase CLI. إذا نسيت رقم التعريف، يمكنك العثور عليه لاحقًا في إعدادات المشروع.
  3. انقر على متابعة.
  4. راجِع بنود Firebase واقبلها، في حال طُلب منك ذلك، ثم انقر على متابعة.
  5. بالنسبة إلى هذا الدليل التعليمي حول الرموز البرمجية، لست بحاجة إلى "إحصاءات Google"، لذا أوقِف خيار "إحصاءات Google".
  6. انقر على إنشاء مشروع، وانتظِر حتى يتم توفير مشروعك، ثم انقر على متابعة.

إضافة تطبيق ويب إلى مشروعك على Firebase

  1. انتقِل إلى شاشة نظرة عامة على المشروع في مشروعك على Firebase، ثم انقر على رمز يتضمّن قوسًا زاويًا مفتوحًا وشرطة وخطًا زاويًا مغلقًا، ويمثّل تطبيق ويب الويب.زر الويب في أعلى &quot;نظرة عامة على المشروع&quot; في وحدة تحكّم Firebase
  2. في مربّع النص لقب التطبيق، أدخِل لقبًا سهل التذكر للتطبيق، مثل My Compass Codelab App. يمكنك ترك مربّع الاختيار لإعداد ميزة "استضافة Firebase" غير محدَّد، لأنّك ستُعدّ خدمة استضافة اختياريًا في الخطوة الأخيرة من هذا الدليل التعليمي حول رموز البرامج.
    تسجيل تطبيق الويب
  3. انقر على تسجيل التطبيق > المتابعة إلى وحدة التحكّم.

رائع. لقد سجّلت الآن تطبيق ويب في مشروعك الجديد على Firebase.

ترقية خطة أسعار Firebase

لاستخدام Firebase Genkit وVertex AI (وخدمات السحابة الإلكترونية الأساسية)، يجب أن يكون مشروعك على Firebase مُدرَجًا في خطة الأسعار "الدفع حسب الاستخدام" (Blaze)، ما يعني أنّه مرتبط بحساب على Cloud Billing.

اطّلِع على مزيد من المعلومات عن أسعار Vertex AI.

لترقية مشروعك إلى خطة Blaze، اتّبِع الخطوات التالية:

  1. في "وحدة تحكّم Firebase"، اختَر ترقية خطتك.
  2. اختَر خطة Blaze. اتّبِع التعليمات الظاهرة على الشاشة لربط حساب "فوترة على Cloud" بمشروعك.
    إذا كنت بحاجة إلى إنشاء حساب "فوترة على Cloud" كجزء من هذه الترقية، قد تحتاج إلى الرجوع إلى مسار الترقية في وحدة تحكّم Firebase لإكمال الترقية.

إعداد Cloud Firestore

  1. في اللوحة اليمنى من "وحدة تحكّم Firebase"، وسِّع الإنشاء، ثم اختَر قاعدة بيانات Firestore.
  2. انقر على إنشاء قاعدة بيانات.
  3. اترك رقم تعريف قاعدة البيانات مضبوطًا على (default).
  4. اختَر موقعًا لقاعدة بياناتك، ثم انقر على التالي.
    بالنسبة إلى التطبيق الحقيقي، عليك اختيار موقع قريب من المستخدمين.
  5. انقر على البدء في وضع الاختبار. اقرأ بيان إخلاء المسؤولية عن قواعد الأمان.
    لا توزِّع تطبيقًا أو تعرضه للجميع بدون إضافة قواعد أمان لقاعدة بياناتك.
  6. انقر على إنشاء.

تفعيل Vertex AI

استخدِم واجهة برمجة التطبيقات gcloud لإعداد Vertex AI. بالنسبة إلى جميع الأوامر الواردة في هذه الصفحة، احرص على استبدال YOUR_PROJECT_ID برقم تعريف مشروعك على Firebase.

  1. في وحدة التحكّم الطرفية، اضبط المشروع التلقائي لحزمة Google Cloud SDK:
    gcloud config set project YOUR_PROJECT_ID
    
  2. إذا ظهرت لك رسالة تحذير تفيد بأنّ "تحذير: لا يتطابق مشروعك النشط مع مشروع الحصة في ملف بيانات الاعتماد التلقائية للتطبيق على الجهاز. قد يؤدي ذلك إلى حدوث مشاكل غير متوقّعة في الحصة"، ثم نفِّذ الأمر التالي لضبط مشروع الحصة:
    gcloud auth application-default set-quota-project YOUR_PROJECT_ID
    
  3. فعِّل خدمة Vertex AI في مشروعك:
    gcloud services enable aiplatform.googleapis.com
    

5- إعداد تطبيق الويب

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

ضبط واجهة Firebase CLI لاستهداف مشروعك

  1. في وحدة التحكّم الطرفية، انتقِل إلى الدليل الجذري لمشروع codelab.
  2. لجعل واجهة Firebase CLI تنفيذ جميع الأوامر في مشروعك على Firebase، نفِّذ الأمر التالي:
    firebase use YOUR_PROJECT_ID
    

استيراد نموذج بيانات إلى Firestore

لكي تتمكّن من البدء بسرعة، يوفّر لك هذا الدليل التعليمي نموذج بيانات تم إنشاؤه مسبقًا لخدمة Firestore.

  1. للسماح لقاعدة البيانات المحلية بتشغيل الرمز الذي يستخدِم عادةً حساب خدمة، شغِّل الأمر التالي في وحدة التحكّم الطرفية:
    gcloud auth application-default login
    
    سيؤدي ذلك إلى فتح علامة تبويب جديدة في المتصفّح. سجِّل الدخول باستخدام حساب Google نفسه الذي استخدمته في الخطوات السابقة.
  2. لاستيراد نموذج بيانات Firestore، نفِّذ الأوامر التالية:
    cd load-firestore-data
    npm ci
    node index.js YOUR_PROJECT_ID
    cd ..
    
  3. تأكَّد من إضافة البيانات بنجاح إلى قاعدة بياناتك من خلال الانتقال إلى قسم Firestore في مشروعك على Firebase في وحدة تحكّم Firebase.من المفترض أن يظهر لك مخطّط البيانات المستورَدة ومحتوياته.نموذج بيانات Compass في وحدة تحكُّم Firebase

ربط تطبيق الويب بمشروعك على Firebase

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

  1. الحصول على إعدادات Firebase لتطبيقك:
    1. في "وحدة تحكّم Firebase"، انتقِل إلى مشروعك على Firebase.
    2. في اللوحة اليمنى، انقر على رمز الترس بجانب نظرة عامة على المشروع واختَر إعدادات المشروع.
    3. في بطاقة "تطبيقاتك"، اختَر تطبيق الويب.
    4. ضمن قسم "إعداد حزمة تطوير البرامج (SDK) وضبطها"، اختَر الخيار الضبط.
    5. انسخ المقتطف. يبدأ بـ const firebaseConfig ....
  2. أضِف إعدادات Firebase إلى قاعدة بيانات تطبيق الويب:
    1. في محرِّر الرموز البرمجية، افتح ملف src/lib/genkit/genkit.config.ts.
    2. استبدِل القسم ذي الصلة بالرمز الذي نسخته.
    3. احفظ الملف.

معاينة تطبيق الويب في المتصفّح

  1. في وحدة التحكّم الطرفية، ثبِّت العناصر التابعة ثم شغِّل تطبيق الويب:
    npm install
    npm run dev
    
  2. في المتصفّح، انتقِل إلى عنوان URL للمضيف المستضاف محليًا لعرض تطبيق الويب. على سبيل المثال، في معظم الحالات، يكون عنوان URL هو http://localhost:3000/ أو ما شابه ذلك.

الشاشة الرئيسية لتطبيق Compass

Compass هو تطبيق Next.js يستخدم React Server Components، وهذه هي الصفحة الرئيسية.

انقر على العثور على رحلة أحلامي. يمكنك ملاحظة أنّه يعرض حاليًا بعض البيانات المضمّنة في الرمز البرمجي لبعض الوجهات الثابتة:

العثور على شاشة &quot;رحلة الأحلام&quot;

لا تتردد في الاستكشاف. عندما تكون مستعدًا للمتابعة، انقر على زر الصفحة الرئيسية رمز المنزل (في أعلى يسار الشاشة).

6- التعرّف على الذكاء الاصطناعي التوليدي باستخدام Genkit

أصبحت الآن مستعدًا للاستفادة من ميزات الذكاء الاصطناعي التوليدي في تطبيقك. سيرشدك هذا القسم من الدرس التطبيقي حول الترميز إلى كيفية تنفيذ ميزة تقترح وجهات استنادًا إلى أفكار يقدّمها المستخدم. ستستخدم Firebase Genkit وVertex AI من Google Cloud كموفّر للنموذج التوليدي (ستستخدم Gemini).

يمكن أن تخزِّن أداة Genkit حالة التتبُّع ومسارات التنفيذ (ما يتيح لك فحص نتيجة تنفيذ مسارات Genkit). في هذا الدليل التعليمي حول الرموز البرمجية، ستستخدم Firestore لتخزين هذه التتبّعات.

كخطوة أخيرة في هذا الدليل التعليمي حول الرموز البرمجية، عليك نشر تطبيق Genkit على "استضافة تطبيقات Firebase".

ربط تطبيق Genkit بمشروعك على Firebase

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

  1. الحصول على إعدادات Firebase لتطبيقك:
    1. في "وحدة تحكُّم Firebase"، انتقِل إلى مشروعك على Firebase.
    2. في اللوحة اليمنى، انقر على رمز الترس بجانب نظرة عامة على المشروع واختَر إعدادات المشروع.
    3. في بطاقة "تطبيقاتك"، اختَر تطبيق الويب.
    4. ضمن قسم "إعداد حزمة تطوير البرامج (SDK) وضبطها"، اختَر الخيار الضبط.
    5. انسخ المقتطف. يبدأ بـ const firebaseConfig ....
  2. أضِف إعدادات Firebase لتطبيقك إلى قاعدة بيانات تطبيق Genkit:
    1. في محرِّر الرموز البرمجية، افتح ملف genkit-functions/src/lib/genkit.config.ts.
    2. استبدِل القسم ذي الصلة بالرمز الذي نسخته.
    3. احفظ الملف.

تشغيل واجهة مستخدم المطوّر في Genkit

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

  1. افتح واجهة مستخدم مطوّري Genkit:
    1. افتح نافذة محطة طرفية جديدة.
    2. انتقِل إلى الدليل الجذري لدليل genkit-functions.
    3. شغِّل الأمر التالي لبدء واجهة مستخدم المطوّر في Genkit:
      cd genkit-functions
      npx genkit start
      
  2. في المتصفّح، انتقِل إلى عنوان URL الخاص بتطبيق Genkit المستضاف محليًا. في معظم الحالات، يكون العنوان http://localhost:4000/.

التفاعل مع Gemini

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

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

التفاعل مع نموذج Gemini في واجهة مستخدم مطوّري Genkit

إدارة رسائل المطالبة

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

لاستخدام Dotprompt، ابدأ بعبارة "مرحبًا":

  1. في محرِّر الرموز البرمجية، افتح ملف genkit-functions/prompts/1-hello-world.prompt.
  2. في واجهة مستخدم Genkit Developer، افتح dotprompt/1-hello-world.
  3. استخدِم أي اسم أو رمز لغة مألوف لك، أو اترك هذا الحقل فارغًا.
  4. انقر على تشغيل.استخدام Dotprompt لإنشاء رسالة ترحيب باللغة السويدية
  5. جرِّب بعض القيم المختلفة. يمكن للنماذج اللغوية الكبيرة فهم الطلبات المختصرة أو التي تحتوي على أخطاء إملائية أو غير مكتملة في طلبات البحث البسيطة مثل هذا الطلب.

تحسين المحتوى الذي تنشئه باستخدام البيانات المنظَّمة

بالإضافة إلى إنشاء نص عادي، تتيح لك أداة Genkit تنظيم المحتوى الذي تنشئه لتحسين العرض والدمج في واجهة مستخدم تطبيقك. من خلال تحديد مخطّط، يمكنك توجيه نموذج اللغة الكبيرة (LLM) لإنشاء بيانات منظَّمة تتوافق مع التنسيق المطلوب.

استكشاف مخطّطات الإخراج

يمكنك أيضًا تحديد مخطّط الإخراج لطلب LLM.

  1. في أداة تعديل الرموز، راجِع ملف الطلب:
    1. افتح ملف dotprompt/2-simple-itinerary.
    2. راجِع مخطّطات الإدخال والإخراج المحدّدة.
  2. التفاعل مع واجهة المستخدم:
    1. في واجهة مستخدم Genkit Developer، انتقِل إلى قسم dotprompt/2-simple-itinerary.
    2. قدِّم الإدخال من خلال ملء حقلَي place وinterests بنموذج بيانات:
      {
          "interests": [
              "Museums"
          ],
          "place": "Paris"
      }
      
    3. انقر على تشغيل.

استخدام Dotprompt لتحديد مخطّط الإخراج

فهم النتائج المستندة إلى المخطط

لاحظ كيف تتوافق النتيجة التي تم إنشاؤها مع المخطّط المحدّد. من خلال تحديد البنية المطلوبة، تكون قد فوّضت نموذج اللغة الكبيرة (LLM) بإنشاء بيانات يمكن تحليلها بسهولة ودمجها في تطبيقك. يُثبت Genkit تلقائيًا صحة الإخراج وفقًا للمخطّط، ما يضمن سلامة البيانات.

بالإضافة إلى ذلك، يمكنك ضبط Genkit لإعادة المحاولة أو محاولة إصلاح الإخراج إذا لم يتطابق مع المخطّط.

المزايا الرئيسية لمخطّطات النتائج

  • الدمج المبسّط: يمكنك دمج البيانات المنظَّمة بسهولة في عناصر واجهة المستخدم في تطبيقك.
  • التحقّق من صحة البيانات: تأكَّد من دقة الإخراج الذي تم إنشاؤه.
  • معالجة الأخطاء: يمكنك تنفيذ آليات لحلّ مشكلة عدم تطابق المخططات.

من خلال الاستفادة من مخطّطات النتائج، يمكنك تحسين تجربة Genkit، ما يتيح لك إنشاء بيانات منظَّمة ومخصّصة لتوفير تجارب مستخدمين أكثر ثراءً وديناميكية.

استخدام إدخال متعدد الوسائط

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

  1. في أداة تعديل الرموز، راجِع ملف الطلب:
    1. افتح ملف genkit-functions/prompts/imgDescription.prompt.
    2. يُرجى ملاحظة تضمين {{media url=this}}، وهو عنصر بنية Handlebars يسهّل دمج الصور في طلبك.
  2. التفاعل مع واجهة المستخدم:
    1. في واجهة مستخدم Genkit Developer، افتح طلب dotprompt/imgDescription.
    2. أدخِل عنوان URL للصورة في الحقل imageUrls عن طريق لصق عنوان URL للصورة. على سبيل المثال، يمكنك استخدام صورة مصغّرة من Wikipedia تعرض برج إيفل:
      {
          "imageUrls": [
              "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg/556px-La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg"
          ]
      }
      
    3. انقر على تشغيل.

7- تنفيذ الاسترجاع باستخدام البحث عن التشابه بين المتجهات

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

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

لسد الفجوة بين طلبات البحث غير المنظَّمة والمحتوى ذي الصلة، يمكنك الاستفادة من فعالية بحث التشابه بين المتجهات على البيانات المضمّنة التي تم إنشاؤها.

فهم عمليات التضمين وتشابه المتجهات

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

فهم آلية عمل عملية الاسترداد

  1. تضمين طلب البحث: يتمّ تمرير إدخال المستخدِم (على سبيل المثال، "عشاء رومانسي في باريس") من خلال نموذج تضمين، ما يؤدّي إلى إنشاء متجه طلب بحث.
  2. إدراج البيانات في قاعدة البيانات: من الأفضل أن تكون قد أجريت معالجة مسبقة لقاعدة بيانات الوجهات، وأنشئْت ناقلات إدراج لكل إدخال.
  3. احتساب التشابه: تتم مقارنة متجه الطلب بكلّ متجه تضمين في قاعدة البيانات باستخدام مقياس تشابه (مثل تشابه الجيب الزاوي).
  4. الاسترداد: يتم استرداد الإدخالات الأكثر تشابهًا من قاعدة البيانات، استنادًا إلى قربها من متجه طلب البحث، كاقتراحات ذات صلة.

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

تفعيل البحث عن التشابه بين المتجهات في Firestore

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

للاستفادة من فعالية البحث عن التشابه بين المتجهات في عمليات التضمين هذه، عليك إنشاء فهرس Firestore. يتيح هذا الفهرس استرجاع الأماكن بكفاءة استنادًا إلى تشابه متجهات التضمين مع طلب بحث معيّن.

  1. في الوحدة الطرفية، شغِّل الأمر التالي لتثبيت أحدث مكوّن أولي. يجب استخدام الإصدار 2024.05.03 أو إصدار أحدث:
    gcloud components install alpha
    
  2. أنشئ الفهرس، مع الحرص على استبدال YOUR_PROJECT_ID بمعرّف مشروعك.
    gcloud alpha firestore indexes composite create --project=YOUR_PROJECT_ID --collection-group=places --query-scope=COLLECTION --field-config=vector-config='{"dimension":"768","flat": "{}"}',field-path=embedding
    
  3. في واجهة مستخدم Genkit Developer، افتح placesRetriever.
  4. انقر على تشغيل. راقِب العنصر الذي تمّ وضع إطاره باستخدام نص نائب يشير إلى المكان الذي ستنفّذ فيه منطق الاسترجاع.
  5. في محرِّر الرموز البرمجية، افتح ملف genkit-functions/src/lib/placesRetriever.ts.
  6. انتقِل للأسفل تمامًا واستبدِل العنصر النائب placesRetriever بما يلي:
    export const placesRetriever = defineFirestoreRetriever({
      name: 'placesRetriever',
      firestore,
      collection: 'places',
      contentField: 'knownFor',
      vectorField: 'embedding',
      embedder: textEmbeddingGecko,
      distanceMeasure: 'COSINE',
    });
    

اختبار أداة الاسترداد

  1. في واجهة مستخدم Genkit Developer، افتح أداة استرجاع placesRetriever.
  2. قدِّم الطلب التالي:
    {
        "content": [
            {
                "text": "UNESCO"
            }
        ]
    }
    
  3. يمكنك أيضًا تقديم خيارات. على سبيل المثال، إليك كيفية تحديد عدد المستندات التي يجب أن يعرضها برنامج الاسترجاع:
    {
        "limit": 4
    }
    
  4. انقر على تشغيل.

يمكنك إجراء فلترة إضافية على البيانات بخلاف التشابه عن طريق إضافة عبارات where إلى الخيارات.

8- إنشاء البيانات المعزّزة لاسترداد المعلومات (RAG) باستخدام Genkit

في الأقسام السابقة، أنشأت طلبات فردية قادرة على معالجة النصوص وتنسيق JSON والصور، وإنشاء وجهات لقضاء العطلات ومحتوى آخر جذاب للمستخدمين. لقد نفّذت أيضًا طلبًا يسترجع الوجهات ذات الصلة من قاعدة بيانات Firestore. حان الآن وقت تنسيق هذه المكوّنات في عملية اتّساقية لإنشاء محتوى مُحسَّن لاسترداد المعلومات (RAG).

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

  1. في أداة تعديل الرموز، راجِع طلب برنامج الرحلة:
    1. افتح ملف genkit-functions/prompts/itineraryGen.prompt.
    2. لاحظ كيف تم توسيع الطلب لقبول مدخلات إضافية، وتحديدًا بيانات الأنشطة المستمَدة من أداة الاسترجاع.
  2. في واجهة مستخدم Genkit للمطوّرين، اطّلِع على مسار Genkit في ملف genkit-functions/src/lib/itineraryFlow.ts.
    ملاحظة: لتبسيط عملية تصحيح الأخطاء، ننصحك بتقسيم المسارات الطويلة إلى خطوات أصغر وقابلة للإدارة.
  3. يمكنك تحسين تجربة المستخدم من خلال دمج خطوة "وصف الصورة":
    1. حدِّد مكان التعليق TODO: 2 (بالقرب من السطر 70). يشير ذلك إلى الموضع الذي ستُحسِّن فيه سير العمل.
    2. استبدِل العنصر النائب imgDescription الفارغ بالإخراج الذي تم إنشاؤه من خلال طلب imgDescription.
  4. اختبِر الخطوات:
    1. انتقِل إلى itineraryFlow.
    2. استخدِم الإدخال التالي لاختبار التنفيذ الناجح لـ itineraryFlow باستخدام الخطوة التي أضفتها حديثًا:
      {
          "request": "Sightseeing in Paris",
          "imageUrls": [
              "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg/556px-La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg"
          ]
      }
      
    3. انقر على تشغيل.
    4. راقِب النتيجة التي تم إنشاؤها، والتي من المفترض أن تتضمّن وصف الصورة في اقتراح برنامج الرحلة.
  5. إذا واجهت أي أخطاء أو سلوكيات غير متوقّعة، اطّلِع على علامة التبويب فحص للاطّلاع على التفاصيل. يمكنك أيضًا استخدام علامة التبويب هذه لمراجعة سجلّ عمليات التنفيذ من مستودع عمليات التتبّع.

تقييم RAG لتطبيق الويب

  1. تأكَّد من أنّ تطبيق الويب لا يزال قيد التشغيل من خلال الانتقال إلى http://localhost:3000/ في المتصفّح.
  2. إذا لم يعُد تطبيق الويب قيد التشغيل، شغِّل هذه الأوامر في الوحدة الطرفية:
    npm install
    npm run dev
    
  3. اطّلِع على صفحة تطبيق الويب Dream Your Vacation (http://localhost:3000/gemini).
  4. يمكنك الاطّلاع على رمز المصدر (src/app/gemini/page.tsx) للحصول على مثال على دمج Next.js.

1e626124e09e04e9.pngb059decb53c249a1.pnge31f6acf87a98cb2.png19c0c9459d5e1601.png

9- نشر تطبيقك باستخدام ميزة "استضافة التطبيقات" من Firebase

الخطوة الأخيرة في هذه الرحلة هي نشر تطبيق الويب. ستستفيد من استضافة تطبيقات Firebase، وهو حل استضافة متوافق مع إطار العمل مصمّم لتبسيط عملية نشر تطبيقات Next.js وAngular في الخلفية بدون خادم.

  1. احفظ التغييرات في مستودع git على الجهاز، ثم ادفعها إلى GitHub.
  2. في "وحدة تحكّم Firebase"، انتقِل إلى استضافة التطبيقات ضمن مشروعك على Firebase.
  3. انقر على البدء > الربط بحساب GitHub.
  4. اختَر حسابك على GitHub والمستودع. انقر على التالي.
  5. في إعدادات النشر > الدليل الجذر، احتفظ بالقيمة التلقائية.
  6. بالنسبة إلى الفرع المنشور، اختَر الفرع main في مستودع GitHub. انقر على التالي.
  7. أدخِل معرّفًا لنظامك الأساسي (على سبيل المثال، compass).
  8. عندما يُطلب منك إنشاء تطبيق ويب على Firebase أو ربطه، اختَر اختيار تطبيق ويب حالي على Firebase، ثم اختَر التطبيق الذي أنشأته في خطوة سابقة من هذا الدليل التعليمي.
  9. انقر على إنهاء ونشر.

مراقبة حالة النشر

ستستغرق عملية النشر بضع دقائق. يمكنك تتبُّع مستوى التقدّم في قسم "استضافة التطبيقات" في وحدة تحكُّم Firebase.

منح الأذونات لحساب الخدمة

لكي تتمكّن الخلفية في Node.js من الوصول إلى موارد Vertex AI، عليك منح دور aiplatform.user لحساب الخدمة الخاص بتطبيقك:

gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
--member "serviceAccount:firebase-app-hosting-compute@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
--role "roles/aiplatform.user"

بعد اكتمال عملية النشر، سيتمكّن المستخدمون من الوصول إلى تطبيق الويب.

إعادة النشر التلقائية

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

10- الخاتمة

تهانينا على إكمال هذا الدرس التطبيقي الشامل حول الترميز.

لقد استطعت الاستفادة بنجاح من إمكانات Firebase Genkit وFirestore وVertex AI لإنشاء "عملية معقدة" تُنشئ اقتراحات مخصّصة للعطلات استنادًا إلى الإعدادات المفضّلة للمستخدمين وأفكارهم، مع الاعتماد على بيانات تطبيقك في هذه الاقتراحات.

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

  • إدارة الطلبات: تنظيم الطلبات والاحتفاظ بها كرمز برمجي لتحسين التعاون والتحكّم في الإصدارات
  • المحتوى المتعدّد الوسائط: دمج أنواع بيانات متنوعة، مثل الصور والنصوص، لتحسين التفاعلات مع الذكاء الاصطناعي
  • مخطّطات الإدخال/الإخراج: تنظيم البيانات لدمجها والتحقّق منها بسلاسة في تطبيقك
  • مستودعات المتجهات: الاستفادة من عمليات إدراج المتجهات للبحث عن التشابه بكفاءة واسترداد المعلومات ذات الصلة
  • استرداد البيانات: تنفيذ آليات لاسترداد البيانات من قواعد البيانات ودمجها في المحتوى الذي ينشئه الذكاء الاصطناعي
  • الإنشاء المعزّز لاسترداد المعلومات (RAG): الجمع بين تقنيات الاسترجاع والذكاء الاصطناعي التوليدي للحصول على نتائج دقيقة وملائمة للسياق
  • أدوات مراقبة سير العمل: إنشاء وتنسيق مسارات عمل الذكاء الاصطناعي المعقدة لتنفيذها بسلاسة ورصدها

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

استكشاف خيارات النشر البديلة

يوفّر Genkit مجموعة متنوعة من خيارات النشر لتلبية احتياجاتك المحدّدة، بما في ذلك:

ما عليك سوى اختيار الطريقة الأنسب لك من خلال تنفيذ الأمر التالي داخل مجلد العقدة (package.json):

npx genkit init

الخطوات التالية