Firebase Genkit مع Cloud Run

يمكنك نشر تدفقات Firebase Genkit كخدمات ويب باستخدام Cloud Run. على سبيل المثال، ترشدك هذه الصفحة خلال عملية نشر نموذج التدفق التلقائي.

  1. ثبِّت الأدوات المطلوبة:

    1. تأكَّد من استخدام الإصدار 20 من Node.js أو إصدار أحدث (شغّل node --versionللتحقّق منها).

    2. ثبِّت Google Cloud CLI.

  2. أنشِئ مشروعًا جديدًا على Google Cloud باستخدام وحدة تحكُّم Cloud أو اختَر مشروعًا حاليًا. يجب ربط المشروع بحساب فوترة.

    بعد إنشاء مشروع أو اختياره، اضبط واجهة سطر الأوامر في Google Cloud لاستخدامه:

    gcloud init
    
  3. إنشاء دليل لنموذج مشروع Genkit:

    mkdir -p ~/tmp/genkit-cloud-project
    cd ~/tmp/genkit-cloud-project
    

    إذا كنت ستستخدم بيئة التطوير المتكاملة (IDE)، افتحها في هذا الدليل.

  4. تهيئة مشروع Node.js في دليل المشروع:

    npm init -y
    
  5. تهيئة Genkit في مشروع Node.js:

    genkit init
    
    • اختَر Google Cloud كنظام أساسي للنشر.
    • اختَر مزوِّد النموذج الذي تريد استخدامه.

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

  6. إتاحة بيانات اعتماد واجهة برمجة التطبيقات للدالة المنشورة. نفِّذ أحد الإجراءات التالية، اعتمادًا على موفر النموذج الذي اخترته:

    Gemini (تكنولوجيات الذكاء الاصطناعي من Google)

    1. احرص على أن تكون تكنولوجيات الذكاء الاصطناعي من Google متوفّرة في منطقتك.

    2. أنشِئ مفتاح واجهة برمجة تطبيقات لواجهة Gemini API باستخدام "استوديو Google AI Studio".

    3. إتاحة مفتاح واجهة برمجة التطبيقات في بيئة Cloud Run

      1. في Cloud Console، فعِّل Secret Manager API.
      2. في صفحة المدير السري، أنشِئ مفتاحًا سريًا جديدًا يحتوي على مفتاح واجهة برمجة التطبيقات.
      3. بعد إنشاء المفتاح السرّي، على الصفحة نفسها، امنح حساب خدمة الحوسبة التلقائي إذن الوصول إلى المفتاح السرّي باستخدام دور أداة الوصول السري للمدير السري. (يمكنك البحث عن اسم حساب خدمة الحوسبة التلقائي على صفحة "إدارة الهوية وإمكانية الوصول").

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

    4. اختياري: إذا أردت تشغيل التدفق محليًا، كما في الخطوة التالية، اضبط متغيّر بيئة GOOGLE_GENAI_API_KEY على المفتاح:

      export GOOGLE_GENAI_API_KEY=<your API key>
      

    Gemini (Vertex AI)

    1. في Cloud Console، فعِّل Vertex AI API لمشروعك.

    2. في صفحة إدارة الهوية وإمكانية الوصول، تأكّد من منح حساب خدمة الحوسبة التلقائية دور مستخدم Vertex AI.

    3. اختياري: إذا أردت تنفيذ التدفق محليًا، كما في الخطوة التالية، اضبط بعض متغيّرات البيئة الإضافية واستخدِم أداة gcloud لإعداد بيانات الاعتماد التلقائية للتطبيق:

      export GCLOUD_PROJECT=<your project ID>
      export GCLOUD_LOCATION=us-central1
      gcloud auth application-default login
      

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

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

    1. بدء تشغيل واجهة المستخدم:

      genkit start
      
    2. في واجهة مستخدم المطوّر (http://localhost:4000/)، شغِّل المسار:

      1. انقر على MenuاقتراحionFlow.

      2. في علامة التبويب إدخال JSON، قدِّم موضوعًا للنموذج:

        "banana"
        
      3. انقر على Run (تشغيل).

  8. إذا كان كل شيء على ما يرام حتى الآن، يمكنك إنشاء ونشر التدفق:

    Gemini (تكنولوجيات الذكاء الاصطناعي من Google)

    npm run build
    gcloud run deploy --update-secrets=GOOGLE_GENAI_API_KEY=<your-secret-name>:latest
    

    Gemini (Vertex AI)

    npm run build
    gcloud run deploy
    

    اختَر N عندما يُطلب منك تحديد ما إذا كنت تريد السماح بالاستدعاءات التي لم تتم مصادقتها. في حال الردّ على الرقم N، سيتم ضبط خدمتك لطلب بيانات اعتماد "إدارة الهوية وإمكانية الوصول". يمكنك الاطّلاع على المصادقة في مستندات Cloud Run للحصول على معلومات عن توفير بيانات الاعتماد هذه.

بعد انتهاء النشر، ستطبع الأداة عنوان URL للخدمة. يمكنك اختباره باستخدام curl:

curl -X POST https://<service-url>/menuSuggestionFlow \
-H "Authorization: Bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" -d '{"data": "banana"}'