Firebase Genkit مع Cloud Run

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

  1. ثبِّت واجهة سطر الأوامر في Google Cloud في حال التي لم تفعلها بعد.

  2. يمكنك إنشاء مشروع جديد على Google Cloud باستخدام Cloud Console، أو اختَر وحدة حالية. يجب ربط المشروع بحساب فوترة.

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

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

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

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

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

    go mod init example/cloudrun
    
  5. إعداد Genkit في مشروعك:

    genkit init
    

    اختَر موفِّر الطراز الذي تريد استخدامه.

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

  6. عدِّل نموذج الملف (main.go أو genkit.go) لتحديد المنفذ الذي يجب أن يصغي إليه خادم التدفق:

    if err := genkit.Init(ctx,
        &genkit.Options{FlowAddr: ":3400"}, // Add this parameter.
    ); err != nil {
        log.Fatal(err)
    }
    
  7. إتاحة بيانات اعتماد واجهة برمجة التطبيقات للدالة المنشورة نفِّذ أحد الإجراءات التالية بناءً على موفر النموذج الذي اخترته:

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

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

    2. إنشاء مفتاح واجهة برمجة تطبيقات Gemini API باستخدام Google AI Studio

    3. يمكنك إتاحة مفتاح واجهة برمجة التطبيقات في بيئة تشغيل السحابة الإلكترونية:

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

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

    Gemini (Vertex AI)

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

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

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

  8. اختياري: يمكنك تجربة المسار في واجهة مستخدم المطوّر:

    1. إعداد بيئتك المحلية لموفّر النماذج الذي اخترته:

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

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Gemini (Vertex AI)

      export GCLOUD_PROJECT=<your project ID>
      export GCLOUD_LOCATION=us-central1
      gcloud auth application-default login
      
    2. بدء واجهة المستخدم:

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

      1. انقر على mesuggestionFlow.

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

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

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

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

    gcloud run deploy --port 3400 \
      --update-secrets=GOOGLE_GENAI_API_KEY=<your-secret-name>:latest
    

    Gemini (Vertex AI)

    gcloud run deploy --port 3400 \
      --set-env-vars GCLOUD_PROJECT=<your-gcloud-project> \
      --set-env-vars GCLOUD_LOCATION=us-central1
    

    (يضبط GCLOUD_LOCATION منطقة واجهة برمجة تطبيقات Vertex التي تريد استخدامها).

    اختر 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 '"banana"'