1- قبل البدء
في هذا الدليل التعليمي حول رموز البرامج، ستتعرّف على كيفية استخدام Firebase Genkit لدمج الذكاء الاصطناعي التوليدي في تطبيقك. Firebase Genkit هو إطار عمل مفتوح المصدر يساعدك في إنشاء تطبيقات مستندة إلى الذكاء الاصطناعي وجاهزة للنشر ومراقبتها.
تم تصميم Genkit لمطوّري التطبيقات لمساعدتهم في دمج إمكانات الذكاء الاصطناعي القوية في تطبيقاتهم بسهولة باستخدام أنماط ومفاهيم مألوفة. صمَّم فريق Firebase هذه الخدمة بالاستفادة من خبرتنا في إنشاء أدوات يستخدمها ملايين المطوّرين في جميع أنحاء العالم.
المتطلبات الأساسية
- معرفة بـ Firestore وNode.js وTypeScript
ما ستتعرّف عليه
- كيفية إنشاء تطبيقات أكثر ذكاءً باستخدام إمكانات البحث المتقدم عن التشابه في المتجهات في Firestore
- كيفية تنفيذ الذكاء الاصطناعي التوليدي بشكل عملي في تطبيقاتك باستخدام Firebase Genkit
- تجهيز الحلّ للنشر والدمج
المتطلبات
- متصفّح من اختيارك، مثل Google Chrome
- بيئة تطوير تتضمّن محرِّر رموز ووحدة تحكّم
- حساب Google لإنشاء مشروعك على Firebase وإدارته
2- مراجعة تطبيق الويب وخدمات السحابة الإلكترونية المستخدَمة
في هذا القسم، ستراجع تطبيق الويب الذي ستُنشئه باستخدام ورشة رموز البرمجة هذه، وستتعرّف أيضًا على خدمات السحابة الإلكترونية التي ستستخدمها.
تطبيق الويب
في هذا الدرس التطبيقي حول الترميز، ستتعامل مع قاعدة بيانات تطبيق يُسمى Compass، وهو تطبيق لتخطيط العطلات. يمكن للمستخدمين اختيار وجهة والاطّلاع على الأنشطة في الوجهة وإنشاء برنامج لرحلتهم.
في هذا الدرس التعليمي حول رموز البرامج، ستنفّذ ميزتَين جديدتَين تهدفان إلى تحسين تفاعل المستخدمين مع الصفحة الرئيسية للتطبيق. تستند كلتا الميزتين إلى الذكاء الاصطناعي التوليدي:
- يعرض التطبيق حاليًا قائمة ثابتة بالوجهات. ستغيّر ذلك ليصبح ديناميكيًا.
- ستنفّذ برنامجًا زمنيًا يتم تعبئته تلقائيًا لزيادة مدة الإقامة على أمل زيادة عدد المستخدمين المكرّرين.
الخدمات المستخدَمة
في هذا الدليل التعليمي حول الرموز البرمجية، ستستخدم العديد من خدمات Firebase وCloud وميزاتها، وسيتم توفير معظم الرموز البرمجية الأساسية لها. يحتوي الجدول التالي على الخدمات التي ستستخدمها وأسباب استخدامها.
الخدمة | سبب الاستخدام |
يمكنك استخدام Genkit لإدخال الذكاء الاصطناعي التوليدي في تطبيق Node.js أو Next.js. | |
تخزِّن البيانات في Cloud Firestore، والتي يتم استخدامها بعد ذلك للبحث عن التشابه بين المتجهات. | |
استخدام نماذج أساسية من Vertex AI (مثل Gemini) لتعزيز ميزات الذكاء الاصطناعي | |
يمكنك اختياريًا استخدام ميزة "استضافة تطبيقات Firebase" الجديدة والمبسّطة لعرض تطبيق الويب الديناميكي Next.js (المرتبط بأحد مستودعات GitHub). |
3- إعداد بيئة التطوير
التحقّق من إصدار Node.js
- في وحدة التحكّم، تأكَّد من تثبيت الإصدار 20.0.0 أو إصدار أحدث من Node.js:
node -v
- إذا لم يكن لديك الإصدار 20.0.0 من Node.js أو إصدار أحدث، عليك تنزيل أحدث إصدار يتطلّب دعمًا على المدى الطويل وتثبيته.
الحصول على رمز المصدر للدرس التطبيقي حول الترميز
إذا كان لديك حساب على GitHub:
- أنشئ مستودعًا جديدًا باستخدام النموذج من github.com/FirebaseExtended/codelab-ai-genkit-rag
- أنشئ نسخة طبق الأصل على الجهاز من مستودع GitHub الذي أنشأته للتو في دورة تعلم البرمجة:
git clone https://github.com/<your-github-handle>/codelab-ai-genkit-rag
إذا لم يكن لديك git مثبّتًا أو كنت تفضّل عدم إنشاء مستودع جديد:
مراجعة بنية المجلد
على جهازك، ابحث عن المستودع المُنشئ من النسخة الأصلية وراجِع بنية المجلدات:
المجلد | الوصف |
| رمز Genkit للخلفية |
| أداة سطر الأوامر المساعِدة لملء مجموعة Firestore مسبقًا بسرعة |
*كل شيء آخر | رمز تطبيق الويب Next.js |
يتضمّن المجلد الجذر ملف README.md
يقدّم بدءًا سريعًا لتشغيل تطبيق الويب باستخدام تعليمات مبسّطة. ومع ذلك، إذا كنت مبتدئًا، عليك إكمال هذا الدليل التعليمي (بدلاً من الدليل التعليمي السريع) لأنّه يحتوي على مجموعة التعليمات الأكثر شمولاً.
إذا لم تكن متأكّدًا من تطبيق الرمز بشكل صحيح وفقًا للتعليمات الواردة في هذا الدليل التعليمي حول الرموز البرمجية، يمكنك العثور على رمز الحل في فرع git end
.
تثبيت Firebase CLI
- تأكَّد من تثبيت واجهة برمجة التطبيقات Firebase CLI وأنّها بالإصدار 13.6 أو إصدار أحدث:
firebase --version
- إذا كان لديك Firebase CLI مثبّتًا، ولكن ليس الإصدار 13.6 أو إصدارًا أحدث، عليك تحديثه:
npm update -g firebase-tools
- إذا لم يكن لديك Firebase CLI مثبّتًا، ثبِّته:
npm install -g firebase-tools
إذا لم تتمكّن من تحديث واجهة برمجة التطبيقات Firebase CLI أو تثبيتها بسبب أخطاء في الأذونات، اطّلِع على مستندات npm أو استخدِم خيار تثبيت آخر.
سجِّل الدخول إلى Firebase.
- في وحدة التحكّم، سجِّل الدخول إلى Firebase:
إذا أظهرت وحدة التحكّم أنّك سجّلت الدخول إلى Firebase من قبل، يمكنك الانتقال إلى قسم إعداد مشروعك على Firebase في هذا الدليل التعليمي.firebase login
- في وحدة التحكّم، أدخِل
Y
أوN
بناءً على ما إذا كنت تريد أن يجمع Firebase البيانات. (يمكن استخدام أيّ من الخيارَين في هذا الدرس التطبيقي حول الترميز) - في المتصفّح، اختَر حسابك على Google وانقر على السماح.
تثبيت واجهة سطر أوامر gcloud في Google Cloud
- ثبِّت gcloud CLI.
- في المحطة الطرفية، سجِّل الدخول إلى Google Cloud:
gcloud auth login
4. إعداد مشروعك على Firebase
في هذا القسم، ستُنشئ مشروعًا على Firebase وتُسجِّل تطبيق ويب على Firebase فيه. ستفعّل أيضًا بعض الخدمات التي يستخدمها نموذج تطبيق الويب لاحقًا في هذا الدرس التطبيقي حول الترميز.
تتم تنفيذ جميع الخطوات الواردة في هذا القسم في وحدة تحكّم Firebase.
إنشاء مشروع على Firebase
- سجِّل الدخول إلى وحدة تحكُّم Firebase باستخدام حساب Google نفسه الذي استخدمته في الخطوة السابقة.
- انقر على إنشاء مشروع، ثم أدخِل اسمًا للمشروع (مثل
Compass Codelab
).
تذكَّر رقم تعريف المشروع الذي تمّ تعيينه تلقائيًا لمشروعك على Firebase (أو انقر على رمز تعديل لضبط رقم تعريف المشروع المفضّل لديك). ستحتاج إلى رقم التعريف هذا لاحقًا لتحديد مشروعك على Firebase في واجهة Firebase CLI. إذا نسيت رقم التعريف، يمكنك العثور عليه لاحقًا في إعدادات المشروع. - انقر على متابعة.
- راجِع بنود Firebase واقبلها، في حال طُلب منك ذلك، ثم انقر على متابعة.
- بالنسبة إلى هذا الدليل التعليمي حول الرموز البرمجية، لست بحاجة إلى "إحصاءات Google"، لذا أوقِف خيار "إحصاءات Google".
- انقر على إنشاء مشروع، وانتظِر حتى يتم توفير مشروعك، ثم انقر على متابعة.
إضافة تطبيق ويب إلى مشروعك على Firebase
- انتقِل إلى شاشة نظرة عامة على المشروع في مشروعك على Firebase، ثم انقر على الويب.
- في مربّع النص لقب التطبيق، أدخِل لقبًا سهل التذكر للتطبيق، مثل
My Compass Codelab App
. يمكنك ترك مربّع الاختيار لإعداد ميزة "استضافة Firebase" غير محدَّد، لأنّك ستُعدّ خدمة استضافة اختياريًا في الخطوة الأخيرة من هذا الدليل التعليمي حول رموز البرامج. - انقر على تسجيل التطبيق > المتابعة إلى وحدة التحكّم.
رائع. لقد سجّلت الآن تطبيق ويب في مشروعك الجديد على Firebase.
ترقية خطة أسعار Firebase
لاستخدام Firebase Genkit وVertex AI (وخدمات السحابة الإلكترونية الأساسية)، يجب أن يكون مشروعك على Firebase مُدرَجًا في خطة الأسعار "الدفع حسب الاستخدام" (Blaze)، ما يعني أنّه مرتبط بحساب على Cloud Billing.
- يتطلّب حساب "الفوترة في Google Cloud" طريقة دفع، مثل بطاقة الائتمان.
- إذا كنت حديث العهد باستخدام Firebase وGoogle Cloud، تحقّق ممّا إذا كنت مؤهلاً للحصول على رصيد بقيمة 300 دولار أمريكي وحساب "الفوترة في السحابة الإلكترونية" في الفترة التجريبية المجانية.
- إذا كنت تُجري هذا الإصدار التجريبي من رمز المصدر كجزء من حدث، اسأل المنظِّم ما إذا كانت هناك أي أرصدة متاحة في Cloud.
اطّلِع على مزيد من المعلومات عن أسعار Vertex AI.
لترقية مشروعك إلى خطة Blaze، اتّبِع الخطوات التالية:
- في "وحدة تحكّم Firebase"، اختَر ترقية خطتك.
- اختَر خطة Blaze. اتّبِع التعليمات الظاهرة على الشاشة لربط حساب "فوترة على Cloud" بمشروعك.
إذا كنت بحاجة إلى إنشاء حساب "فوترة على Cloud" كجزء من هذه الترقية، قد تحتاج إلى الرجوع إلى مسار الترقية في وحدة تحكّم Firebase لإكمال الترقية.
إعداد Cloud Firestore
- في اللوحة اليمنى من "وحدة تحكّم Firebase"، وسِّع الإنشاء، ثم اختَر قاعدة بيانات Firestore.
- انقر على إنشاء قاعدة بيانات.
- اترك رقم تعريف قاعدة البيانات مضبوطًا على
(default)
. - اختَر موقعًا لقاعدة بياناتك، ثم انقر على التالي.
بالنسبة إلى التطبيق الحقيقي، عليك اختيار موقع قريب من المستخدمين. - انقر على البدء في وضع الاختبار. اقرأ بيان إخلاء المسؤولية عن قواعد الأمان.
لا توزِّع تطبيقًا أو تعرضه للجميع بدون إضافة قواعد أمان لقاعدة بياناتك. - انقر على إنشاء.
تفعيل Vertex AI
استخدِم واجهة برمجة التطبيقات gcloud
لإعداد Vertex AI. بالنسبة إلى جميع الأوامر الواردة في هذه الصفحة، احرص على استبدال YOUR_PROJECT_ID
برقم تعريف مشروعك على Firebase.
- في وحدة التحكّم الطرفية، اضبط المشروع التلقائي لحزمة Google Cloud SDK:
gcloud config set project YOUR_PROJECT_ID
- إذا ظهرت لك رسالة تحذير تفيد بأنّ "تحذير: لا يتطابق مشروعك النشط مع مشروع الحصة في ملف بيانات الاعتماد التلقائية للتطبيق على الجهاز. قد يؤدي ذلك إلى حدوث مشاكل غير متوقّعة في الحصة"، ثم نفِّذ الأمر التالي لضبط مشروع الحصة:
gcloud auth application-default set-quota-project YOUR_PROJECT_ID
- فعِّل خدمة Vertex AI في مشروعك:
gcloud services enable aiplatform.googleapis.com
5- إعداد تطبيق الويب
لتشغيل تطبيق الويب، عليك تنفيذ الأوامر في وحدة التحكّم الطرفية وإضافة رمز في محرِّر الرموز. بالنسبة إلى جميع الأوامر الواردة في هذه الصفحة، احرص على استبدال YOUR_PROJECT_ID
برقم تعريف مشروعك على Firebase.
ضبط واجهة Firebase CLI لاستهداف مشروعك
- في وحدة التحكّم الطرفية، انتقِل إلى الدليل الجذري لمشروع codelab.
- لجعل واجهة Firebase CLI تنفيذ جميع الأوامر في مشروعك على Firebase، نفِّذ الأمر التالي:
firebase use YOUR_PROJECT_ID
استيراد نموذج بيانات إلى Firestore
لكي تتمكّن من البدء بسرعة، يوفّر لك هذا الدليل التعليمي نموذج بيانات تم إنشاؤه مسبقًا لخدمة Firestore.
- للسماح لقاعدة البيانات المحلية بتشغيل الرمز الذي يستخدِم عادةً حساب خدمة، شغِّل الأمر التالي في وحدة التحكّم الطرفية:
سيؤدي ذلك إلى فتح علامة تبويب جديدة في المتصفّح. سجِّل الدخول باستخدام حساب Google نفسه الذي استخدمته في الخطوات السابقة.gcloud auth application-default login
- لاستيراد نموذج بيانات Firestore، نفِّذ الأوامر التالية:
cd load-firestore-data npm ci node index.js YOUR_PROJECT_ID cd ..
- تأكَّد من إضافة البيانات بنجاح إلى قاعدة بياناتك من خلال الانتقال إلى قسم Firestore في مشروعك على Firebase في وحدة تحكّم Firebase.من المفترض أن يظهر لك مخطّط البيانات المستورَدة ومحتوياته.
ربط تطبيق الويب بمشروعك على Firebase
يجب ربط قاعدة بيانات تطبيق الويب بمشروع Firebase الصحيح للاستفادة من خدماته، مثل قاعدة البيانات. ولإجراء ذلك، عليك إضافة إعدادات Firebase إلى قاعدة بيانات تطبيقك. تتضمّن عملية الضبط هذه قيمًا أساسية، مثل رقم تعريف مشروعك ومفتاح واجهة برمجة التطبيقات ورقم تعريف تطبيقك، بالإضافة إلى قيم أخرى تتيح لتطبيقك التفاعل مع Firebase.
- الحصول على إعدادات Firebase لتطبيقك:
- في "وحدة تحكّم Firebase"، انتقِل إلى مشروعك على Firebase.
- في اللوحة اليمنى، انقر على رمز الترس بجانب نظرة عامة على المشروع واختَر إعدادات المشروع.
- في بطاقة "تطبيقاتك"، اختَر تطبيق الويب.
- ضمن قسم "إعداد حزمة تطوير البرامج (SDK) وضبطها"، اختَر الخيار الضبط.
- انسخ المقتطف. يبدأ بـ
const firebaseConfig ...
.
- أضِف إعدادات Firebase إلى قاعدة بيانات تطبيق الويب:
- في محرِّر الرموز البرمجية، افتح ملف
src/lib/genkit/genkit.config.ts
. - استبدِل القسم ذي الصلة بالرمز الذي نسخته.
- احفظ الملف.
- في محرِّر الرموز البرمجية، افتح ملف
معاينة تطبيق الويب في المتصفّح
- في وحدة التحكّم الطرفية، ثبِّت العناصر التابعة ثم شغِّل تطبيق الويب:
npm install npm run dev
- في المتصفّح، انتقِل إلى عنوان URL للمضيف المستضاف محليًا لعرض تطبيق الويب. على سبيل المثال، في معظم الحالات، يكون عنوان URL هو http://localhost:3000/ أو ما شابه ذلك.
Compass هو تطبيق Next.js يستخدم React Server Components، وهذه هي الصفحة الرئيسية.
انقر على العثور على رحلة أحلامي. يمكنك ملاحظة أنّه يعرض حاليًا بعض البيانات المضمّنة في الرمز البرمجي لبعض الوجهات الثابتة:
لا تتردد في الاستكشاف. عندما تكون مستعدًا للمتابعة، انقر على زر الصفحة الرئيسية (في أعلى يسار الشاشة).
6- التعرّف على الذكاء الاصطناعي التوليدي باستخدام Genkit
أصبحت الآن مستعدًا للاستفادة من ميزات الذكاء الاصطناعي التوليدي في تطبيقك. سيرشدك هذا القسم من الدرس التطبيقي حول الترميز إلى كيفية تنفيذ ميزة تقترح وجهات استنادًا إلى أفكار يقدّمها المستخدم. ستستخدم Firebase Genkit وVertex AI من Google Cloud كموفّر للنموذج التوليدي (ستستخدم Gemini).
يمكن أن تخزِّن أداة Genkit حالة التتبُّع ومسارات التنفيذ (ما يتيح لك فحص نتيجة تنفيذ مسارات Genkit). في هذا الدليل التعليمي حول الرموز البرمجية، ستستخدم Firestore لتخزين هذه التتبّعات.
كخطوة أخيرة في هذا الدليل التعليمي حول الرموز البرمجية، عليك نشر تطبيق Genkit على "استضافة تطبيقات Firebase".
ربط تطبيق Genkit بمشروعك على Firebase
قبل أن تتمكّن من إطلاق Genkit، يجب ربط قاعدة بياناتك بمشروع Firebase الصحيح للاستفادة من خدماته، مثل قاعدة البيانات. ولإجراء ذلك، عليك إضافة إعدادات Firebase إلى قاعدة بيانات تطبيق Genkit. تتضمّن عملية الضبط هذه قيمًا أساسية، مثل رقم تعريف مشروعك ومفتاح واجهة برمجة التطبيقات ورقم تعريف تطبيقك، بالإضافة إلى قيم أخرى تتيح لتطبيقك التفاعل مع Firebase.
- الحصول على إعدادات Firebase لتطبيقك:
- في "وحدة تحكُّم Firebase"، انتقِل إلى مشروعك على Firebase.
- في اللوحة اليمنى، انقر على رمز الترس بجانب نظرة عامة على المشروع واختَر إعدادات المشروع.
- في بطاقة "تطبيقاتك"، اختَر تطبيق الويب.
- ضمن قسم "إعداد حزمة تطوير البرامج (SDK) وضبطها"، اختَر الخيار الضبط.
- انسخ المقتطف. يبدأ بـ
const firebaseConfig ...
.
- أضِف إعدادات Firebase لتطبيقك إلى قاعدة بيانات تطبيق Genkit:
- في محرِّر الرموز البرمجية، افتح ملف
genkit-functions/src/lib/genkit.config.ts
. - استبدِل القسم ذي الصلة بالرمز الذي نسخته.
- احفظ الملف.
- في محرِّر الرموز البرمجية، افتح ملف
تشغيل واجهة مستخدم المطوّر في Genkit
يوفّر Genkit واجهة مستخدم مستندة إلى الويب تتيح لك التفاعل مع النماذج اللغوية الكبيرة ومسارات Genkit وأدوات الاسترجاع ومكونات الذكاء الاصطناعي الأخرى.
- افتح واجهة مستخدم مطوّري Genkit:
- افتح نافذة محطة طرفية جديدة.
- انتقِل إلى الدليل الجذري لدليل
genkit-functions
. - شغِّل الأمر التالي لبدء واجهة مستخدم المطوّر في Genkit:
cd genkit-functions npx genkit start
- في المتصفّح، انتقِل إلى عنوان URL الخاص بتطبيق Genkit المستضاف محليًا. في معظم الحالات، يكون العنوان http://localhost:4000/.
التفاعل مع Gemini
يمكنك الآن استخدام واجهة مستخدم المطوّر في Genkit للتفاعل مع أي من النماذج المتوافقة أو أي من مكوّنات الذكاء الاصطناعي الأخرى، مثل الطلبات وأدوات الاسترجاع ومسارات Genkit.
على سبيل المثال، يمكنك أن تطلب من Gemini اقتراح وجهة لقضاء عطلة. وضِّح كيفية استخدام تعليمات النظام لتوجيه سلوك النموذج استنادًا إلى احتياجاتك المحدّدة. ويعمل هذا الإجراء أيضًا مع الطُرز التي لا تتيح استخدام تعليمات النظام بشكلٍ تلقائي.
إدارة رسائل المطالبة
تقدّم Firebase Genkit Dotprompt، وهو مكوّن إضافي وتنسيق نص مصمّم لتسهيل إنشاء طلبات الذكاء الاصطناعي التوليدي وإدارتها. تعتمد الفكرة الأساسية في Dotprompt على التعامل مع الطلبات كرمز برمجي، ما يتيح لك كتابتها وصيانتها والتحكّم في إصداراتها إلى جانب رمز تطبيقك.
لاستخدام Dotprompt، ابدأ بعبارة "مرحبًا":
- في محرِّر الرموز البرمجية، افتح ملف
genkit-functions/prompts/1-hello-world.prompt
. - في واجهة مستخدم Genkit Developer، افتح
dotprompt/1-hello-world
. - استخدِم أي اسم أو رمز لغة مألوف لك، أو اترك هذا الحقل فارغًا.
- انقر على تشغيل.
- جرِّب بعض القيم المختلفة. يمكن للنماذج اللغوية الكبيرة فهم الطلبات المختصرة أو التي تحتوي على أخطاء إملائية أو غير مكتملة في طلبات البحث البسيطة مثل هذا الطلب.
تحسين المحتوى الذي تنشئه باستخدام البيانات المنظَّمة
بالإضافة إلى إنشاء نص عادي، تتيح لك أداة Genkit تنظيم المحتوى الذي تنشئه لتحسين العرض والدمج في واجهة مستخدم تطبيقك. من خلال تحديد مخطّط، يمكنك توجيه نموذج اللغة الكبيرة (LLM) لإنشاء بيانات منظَّمة تتوافق مع التنسيق المطلوب.
استكشاف مخطّطات الإخراج
يمكنك أيضًا تحديد مخطّط الإخراج لطلب LLM.
- في أداة تعديل الرموز، راجِع ملف الطلب:
- افتح ملف
dotprompt/2-simple-itinerary
. - راجِع مخطّطات الإدخال والإخراج المحدّدة.
- افتح ملف
- التفاعل مع واجهة المستخدم:
- في واجهة مستخدم Genkit Developer، انتقِل إلى قسم
dotprompt/2-simple-itinerary
. - قدِّم الإدخال من خلال ملء حقلَي
place
وinterests
بنموذج بيانات:{ "interests": [ "Museums" ], "place": "Paris" }
- انقر على تشغيل.
- في واجهة مستخدم Genkit Developer، انتقِل إلى قسم
فهم النتائج المستندة إلى المخطط
لاحظ كيف تتوافق النتيجة التي تم إنشاؤها مع المخطّط المحدّد. من خلال تحديد البنية المطلوبة، تكون قد فوّضت نموذج اللغة الكبيرة (LLM) بإنشاء بيانات يمكن تحليلها بسهولة ودمجها في تطبيقك. يُثبت Genkit تلقائيًا صحة الإخراج وفقًا للمخطّط، ما يضمن سلامة البيانات.
بالإضافة إلى ذلك، يمكنك ضبط Genkit لإعادة المحاولة أو محاولة إصلاح الإخراج إذا لم يتطابق مع المخطّط.
المزايا الرئيسية لمخطّطات النتائج
- الدمج المبسّط: يمكنك دمج البيانات المنظَّمة بسهولة في عناصر واجهة المستخدم في تطبيقك.
- التحقّق من صحة البيانات: تأكَّد من دقة الإخراج الذي تم إنشاؤه.
- معالجة الأخطاء: يمكنك تنفيذ آليات لحلّ مشكلة عدم تطابق المخططات.
من خلال الاستفادة من مخطّطات النتائج، يمكنك تحسين تجربة Genkit، ما يتيح لك إنشاء بيانات منظَّمة ومخصّصة لتوفير تجارب مستخدمين أكثر ثراءً وديناميكية.
استخدام إدخال متعدد الوسائط
لنفترض أنّ تطبيقك يقترح وجهات مخصّصة لقضاء العطلات استنادًا إلى الصور التي تهمّ المستخدمين. تتيح لك أداة Genkit، إلى جانب نموذج توليدي متعدد الوسائط، تحويل هذه الرؤية إلى واقع.
- في أداة تعديل الرموز، راجِع ملف الطلب:
- افتح ملف
genkit-functions/prompts/imgDescription.prompt
. - يُرجى ملاحظة تضمين
{{media url=this}}
، وهو عنصر بنية Handlebars يسهّل دمج الصور في طلبك.
- افتح ملف
- التفاعل مع واجهة المستخدم:
- في واجهة مستخدم Genkit Developer، افتح طلب
dotprompt/imgDescription
. - أدخِل عنوان 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" ] }
- انقر على تشغيل.
- في واجهة مستخدم Genkit Developer، افتح طلب
7- تنفيذ الاسترجاع باستخدام البحث عن التشابه بين المتجهات
على الرغم من أنّ إنشاء محتوى إبداعي باستخدام نماذج الذكاء الاصطناعي أمر رائع، إلا أنّ التطبيقات العملية غالبًا ما تتطلّب وضع النتيجة في سياق معيّن.
في ما يتعلّق بهذه الدروس، لديك قاعدة بيانات تضم الوجهات (الأماكن والأنشطة) وتهدف إلى التأكّد من أنّ الاقتراحات التي ينشئها نموذج Gemini تشير حصريًا إلى الإدخالات ضمن هذه قاعدة البيانات.
لسد الفجوة بين طلبات البحث غير المنظَّمة والمحتوى ذي الصلة، يمكنك الاستفادة من فعالية بحث التشابه بين المتجهات على البيانات المضمّنة التي تم إنشاؤها.
فهم عمليات التضمين وتشابه المتجهات
- النِسب: النِسب هي تمثيلات رقمية لنقاط البيانات، وغالبًا ما تُستخدَم لتصميم معلومات معقّدة مثل النصوص أو الصور. تتوافق كل سمة في متجه مع سمة معيّنة من البيانات.
- نماذج التضمين: تحوّل نماذج الذكاء الاصطناعي هذه بيانات الإدخال، مثل النصوص، إلى متجهات عالية الأبعاد. والجانب المثير للاهتمام هو أنّه يتمّ ربط الإدخالات المتشابهة بالمتجهات القريبة من بعضها في هذا الفضاء العالي الأبعاد.
- البحث عن التشابه بين المتجهات: تستفيد هذه التقنية من تقارب المتجهات المضمّنة لتحديد نقاط البيانات ذات الصلة. استنادًا إلى طلب بحث مُدخل، يعثر هذا النموذج على إدخالات في قاعدة البيانات تتضمّن متجهات تضمين مشابهة، ما يشير إلى الصلة الدلالية.
فهم آلية عمل عملية الاسترداد
- تضمين طلب البحث: يتمّ تمرير إدخال المستخدِم (على سبيل المثال، "عشاء رومانسي في باريس") من خلال نموذج تضمين، ما يؤدّي إلى إنشاء متجه طلب بحث.
- إدراج البيانات في قاعدة البيانات: من الأفضل أن تكون قد أجريت معالجة مسبقة لقاعدة بيانات الوجهات، وأنشئْت ناقلات إدراج لكل إدخال.
- احتساب التشابه: تتم مقارنة متجه الطلب بكلّ متجه تضمين في قاعدة البيانات باستخدام مقياس تشابه (مثل تشابه الجيب الزاوي).
- الاسترداد: يتم استرداد الإدخالات الأكثر تشابهًا من قاعدة البيانات، استنادًا إلى قربها من متجه طلب البحث، كاقتراحات ذات صلة.
من خلال دمج آلية الاسترجاع هذه في تطبيقك، يمكنك الاستفادة من نموذج Gemini لإنشاء اقتراحات ليست إبداعية فحسب، بل تستند أيضًا إلى مجموعة بياناتك المحدّدة. يضمن هذا النهج أن تظلّ النتائج التي يتم إنشاؤها ذات صلة بالسياق ومتوافقة مع المعلومات المتوفّرة في قاعدة بياناتك.
تفعيل البحث عن التشابه بين المتجهات في Firestore
في خطوة سابقة من هذا الدليل التعليمي حول الرموز البرمجية، تمّت تعبئة قاعدة بيانات Firestore بنماذج من الأماكن والأنشطة. يتضمّن كل إدخال مكان حقل نصي knownFor
يصف سماته البارزة، بالإضافة إلى حقل embedding
مقابل يحتوي على التمثيل المتجه لهذا الوصف.
للاستفادة من فعالية البحث عن التشابه بين المتجهات في عمليات التضمين هذه، عليك إنشاء فهرس Firestore. يتيح هذا الفهرس استرجاع الأماكن بكفاءة استنادًا إلى تشابه متجهات التضمين مع طلب بحث معيّن.
- في الوحدة الطرفية، شغِّل الأمر التالي لتثبيت أحدث مكوّن أولي. يجب استخدام الإصدار
2024.05.03
أو إصدار أحدث:gcloud components install alpha
- أنشئ الفهرس، مع الحرص على استبدال
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
- في واجهة مستخدم Genkit Developer، افتح
placesRetriever
. - انقر على تشغيل. راقِب العنصر الذي تمّ وضع إطاره باستخدام نص نائب يشير إلى المكان الذي ستنفّذ فيه منطق الاسترجاع.
- في محرِّر الرموز البرمجية، افتح ملف
genkit-functions/src/lib/placesRetriever.ts
. - انتقِل للأسفل تمامًا واستبدِل العنصر النائب
placesRetriever
بما يلي:export const placesRetriever = defineFirestoreRetriever({ name: 'placesRetriever', firestore, collection: 'places', contentField: 'knownFor', vectorField: 'embedding', embedder: textEmbeddingGecko, distanceMeasure: 'COSINE', });
اختبار أداة الاسترداد
- في واجهة مستخدم Genkit Developer، افتح أداة استرجاع
placesRetriever
. - قدِّم الطلب التالي:
{ "content": [ { "text": "UNESCO" } ] }
- يمكنك أيضًا تقديم خيارات. على سبيل المثال، إليك كيفية تحديد عدد المستندات التي يجب أن يعرضها برنامج الاسترجاع:
{ "limit": 4 }
- انقر على تشغيل.
يمكنك إجراء فلترة إضافية على البيانات بخلاف التشابه عن طريق إضافة عبارات where
إلى الخيارات.
8- إنشاء البيانات المعزّزة لاسترداد المعلومات (RAG) باستخدام Genkit
في الأقسام السابقة، أنشأت طلبات فردية قادرة على معالجة النصوص وتنسيق JSON والصور، وإنشاء وجهات لقضاء العطلات ومحتوى آخر جذاب للمستخدمين. لقد نفّذت أيضًا طلبًا يسترجع الوجهات ذات الصلة من قاعدة بيانات Firestore. حان الآن وقت تنسيق هذه المكوّنات في عملية اتّساقية لإنشاء محتوى مُحسَّن لاسترداد المعلومات (RAG).
يقدّم هذا القسم مفهومًا مهمًا في Genkit يُعرف باسم عمليات التنقّل. عمليات المعالجة هي دوالّ قابلة للبث وذات أنواع محدّدة بدقة يمكن تنفيذها على الجهاز وعلى الشبكة عن بُعد، مع إمكانية المراقبة الكاملة. يمكنك إدارة عمليات التنفيذ وتنفيذها من خلال واجهة برمجة التطبيقات في Genkit وواجهة مستخدم المطوّر في Genkit.
- في أداة تعديل الرموز، راجِع طلب برنامج الرحلة:
- افتح ملف
genkit-functions/prompts/itineraryGen.prompt
. - لاحظ كيف تم توسيع الطلب لقبول مدخلات إضافية، وتحديدًا بيانات الأنشطة المستمَدة من أداة الاسترجاع.
- افتح ملف
- في واجهة مستخدم Genkit للمطوّرين، اطّلِع على مسار Genkit في ملف
genkit-functions/src/lib/itineraryFlow.ts
.
ملاحظة: لتبسيط عملية تصحيح الأخطاء، ننصحك بتقسيم المسارات الطويلة إلى خطوات أصغر وقابلة للإدارة. - يمكنك تحسين تجربة المستخدم من خلال دمج خطوة "وصف الصورة":
- حدِّد مكان التعليق
TODO: 2
(بالقرب من السطر 70). يشير ذلك إلى الموضع الذي ستُحسِّن فيه سير العمل. - استبدِل العنصر النائب
imgDescription
الفارغ بالإخراج الذي تم إنشاؤه من خلال طلبimgDescription
.
- حدِّد مكان التعليق
- اختبِر الخطوات:
- انتقِل إلى
itineraryFlow
. - استخدِم الإدخال التالي لاختبار التنفيذ الناجح لـ
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" ] }
- انقر على تشغيل.
- راقِب النتيجة التي تم إنشاؤها، والتي من المفترض أن تتضمّن وصف الصورة في اقتراح برنامج الرحلة.
- انتقِل إلى
- إذا واجهت أي أخطاء أو سلوكيات غير متوقّعة، اطّلِع على علامة التبويب فحص للاطّلاع على التفاصيل. يمكنك أيضًا استخدام علامة التبويب هذه لمراجعة سجلّ عمليات التنفيذ من مستودع عمليات التتبّع.
تقييم RAG لتطبيق الويب
- تأكَّد من أنّ تطبيق الويب لا يزال قيد التشغيل من خلال الانتقال إلى http://localhost:3000/ في المتصفّح.
- إذا لم يعُد تطبيق الويب قيد التشغيل، شغِّل هذه الأوامر في الوحدة الطرفية:
npm install npm run dev
- اطّلِع على صفحة تطبيق الويب Dream Your Vacation (http://localhost:3000/gemini).
- يمكنك الاطّلاع على رمز المصدر (
src/app/gemini/page.tsx
) للحصول على مثال على دمج Next.js.
9- نشر تطبيقك باستخدام ميزة "استضافة التطبيقات" من Firebase
الخطوة الأخيرة في هذه الرحلة هي نشر تطبيق الويب. ستستفيد من استضافة تطبيقات Firebase، وهو حل استضافة متوافق مع إطار العمل مصمّم لتبسيط عملية نشر تطبيقات Next.js وAngular في الخلفية بدون خادم.
- احفظ التغييرات في مستودع git على الجهاز، ثم ادفعها إلى GitHub.
- في "وحدة تحكّم Firebase"، انتقِل إلى استضافة التطبيقات ضمن مشروعك على Firebase.
- انقر على البدء > الربط بحساب GitHub.
- اختَر حسابك على GitHub والمستودع. انقر على التالي.
- في إعدادات النشر > الدليل الجذر، احتفظ بالقيمة التلقائية.
- بالنسبة إلى الفرع المنشور، اختَر الفرع main في مستودع GitHub. انقر على التالي.
- أدخِل معرّفًا لنظامك الأساسي (على سبيل المثال،
compass
). - عندما يُطلب منك إنشاء تطبيق ويب على Firebase أو ربطه، اختَر اختيار تطبيق ويب حالي على Firebase، ثم اختَر التطبيق الذي أنشأته في خطوة سابقة من هذا الدليل التعليمي.
- انقر على إنهاء ونشر.
مراقبة حالة النشر
ستستغرق عملية النشر بضع دقائق. يمكنك تتبُّع مستوى التقدّم في قسم "استضافة التطبيقات" في وحدة تحكُّم 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 مجموعة متنوعة من خيارات النشر لتلبية احتياجاتك المحدّدة، بما في ذلك:
- وظائف السحابة الإلكترونية لبرنامج Firebase
- Cloud Run
- Next.js
- أي بيئة Node.js
- يتوافق Genkit أيضًا مع Go.
ما عليك سوى اختيار الطريقة الأنسب لك من خلال تنفيذ الأمر التالي داخل مجلد العقدة (package.json
):
npx genkit init
الخطوات التالية
- جرِّب طلبات البحث واستفِد من نوافذ السياق الكبيرة في Google AI Studio أو Vertex AI Studio.
- مزيد من المعلومات عن البحث باستخدام ميزة "إنشاء المحتوى الموسّع لاسترداد المعلومات باستخدام الذكاء الاصطناعي" (RAG)
- اطّلِع على المستندات الرسمية Firebase Genkit.
- اطّلِع على مزيد من المعلومات عن إمكانات البحث عن التشابه في Firestore وCloud SQL for PostgreSQL.
- يمكنك التعمّق في عمليات الذكاء الاصطناعي التوليدي باستخدام استدعاء الدوالّ.