استخدام ميزة "الإعداد عن بُعد" من جهة الخادم مع وظائف السحابة الإلكترونية وVertex AI

يوضِّح هذا الدليل كيفية بدء استخدام وظائف Cloud من الجيل الثاني مع الإعداد عن بُعد من جهة الخادم لإجراء طلبات من جهة الخادم إلى واجهة برمجة تطبيقات Vertex AI Gemini.

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

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

يفترض هذا الدليل أنك على دراية باستخدام JavaScript لتطوير التطبيقات.

إعداد مشروع على Firebase

إذا لم يكن لديك مشروع على Firebase من قبل:

  1. سجِّل الدخول إلى وحدة تحكُّم Firebase.

  2. انقر على إنشاء مشروع، ثم استخدِم أحد الخيارَين التاليَين:

    • الخيار الأول: يمكنك إنشاء مشروع جديد في Firebase (ومشروعه الأساسي على Google Cloud تلقائيًا) من خلال إدخال اسم مشروع جديد في الخطوة الأولى من سير عمل "إنشاء مشروع".
    • الخيار 2: "إضافة Firebase" إلى مشروع حالي على Google Cloud من خلال اختيار اسم مشروعك على Google Cloud من القائمة المنسدلة في الخطوة الأولى من سير عمل "إنشاء مشروع".
  3. لا يكون عليك إعداد "إحصاءات Google" لاستخدام هذا الحلّ عندما يُطلب منك ذلك.

  4. استمر في اتباع التعليمات الظاهرة على الشاشة لإنشاء مشروعك.

إذا كان لديك مشروع على Firebase من قبل:

انتقِل إلى ضبط بيئة التطوير.

ضبط بيئة التطوير

ستحتاج إلى بيئة Node.js لكتابة الدوال، وستحتاج إلى واجهة سطر الأوامر في Firebase لنشر الدوال إلى وقت تشغيل دوال السحابة.

  1. ثبِّت Node.js وnpm.

    لتثبيت Node.js وnpm، ننصح باستخدام أداة إدارة إصدارات العُقد.

  2. ثبِّت واجهة سطر الأوامر في Firebase باستخدام طريقتك المفضلة. على سبيل المثال، لتثبيت واجهة سطر الأوامر باستخدام npm، شغِّل هذا الأمر:

    npm install -g firebase-tools@latest
    

    يثبّت هذا الأمر الأمر firebase المتاح عالميًا. إذا فشل هذا الأمر، فقد تحتاج إلى تغيير أذونات npm.

    للتحديث إلى أحدث إصدار من "firebase-tools"، أعِد تشغيل الأمر نفسه.

  3. ثبِّت firebase-functions وfirebase-admin واستخدِم --save لحفظهما في package.json:

    npm install firebase-functions@latest firebase-admin@latest --save
    

أنت الآن جاهز لبدء تنفيذ هذا الحل.

التنفيذ

اتّبِع الخطوات التالية لإنشاء وظائف Cloud من الجيل الثاني واختبارها ونشرها من خلال ميزة "الإعداد عن بُعد" وVertex AI:

  1. تفعيل واجهات برمجة التطبيقات التي يُنصَح بها باستخدام Vertex AI في Google Cloud Console
  2. عليك إعداد مشروعك وتثبيت تبعيات العُقدة.
  3. عليك ضبط أذونات "إدارة الهوية وإمكانية الوصول" لحساب خدمة حزمة تطوير البرامج (SDK) للمشرف وحفظ مفتاحك.
  4. إنشاء الدالة.
  5. إنشاء نموذج عن بُعد خاص بالخادم
  6. انشر الدالة واختبِرها في مجموعة محاكيات Firebase المحلية.
  7. نشر دالتك على Google Cloud.

الخطوة 1: تفعيل واجهات برمجة التطبيقات المقترَحة من Vertex AI في وحدة التحكّم في Google Cloud

  1. افتح Google Cloud Console، واختَر مشروعك عندما يُطلب منك ذلك.
  2. في الحقل بحث في أعلى وحدة التحكّم، أدخِل Vertex AI وانتظِر حتى تظهر نتيجة Vertex AI.
  3. اختَر Vertex AI. ستظهر لك لوحة بيانات Vertex AI.
  4. انقر على تفعيل جميع واجهات برمجة التطبيقات المقترحة.

    قد يستغرق تفعيل واجهة برمجة التطبيقات بضع لحظات. أبقِ الصفحة نشطة ومفتوحة حتى ينتهي التفعيل.

  5. في حال عدم تفعيل الفوترة، سيُطلب منك إضافة حساب فوترة في Cloud أو ربطه. بعد تفعيل حساب الفوترة، ارجع إلى لوحة بيانات Vertex AI وتحقَّق من تفعيل جميع واجهات برمجة التطبيقات المقترَحة.

الخطوة 2: تهيئة المشروع وتثبيت تبعيات العُقدة

  1. افتح وحدة طرفية على جهاز الكمبيوتر وانتقل إلى الدليل حيث تخطط لإنشاء الدالة.
  2. تسجيل الدخول إلى Firebase:

    firebase login
    
  3. شغِّل الأمر التالي لإعداد دوال السحابة الإلكترونية لبرنامج Firebase:

    firebase init functions
    
  4. اختَر استخدام مشروع حالي وحدِّد رقم تعريف مشروعك.

  5. عندما يُطلب منك تحديد اللغة المطلوب استخدامها، اختَر JavaScript واضغط على Enter.

  6. بالنسبة إلى جميع الخيارات الأخرى، اختَر الإعدادات التلقائية.

    تم إنشاء دليل functions في الدليل الحالي. ستجد بالداخل ملف index.js ستستخدمه لإنشاء الدالة، ودليل node_modules يحتوي على التبعيات للدالة، وملف package.json يحتوي على تبعيات الحزمة.

  7. أضِف حِزم SDK للمشرف وVertex AI من خلال تنفيذ الأوامر التالية باستخدام --save للتأكّد من حفظها في ملف package.json الخاص بك:

    cd functions
    npm install firebase-admin@latest @google-cloud/vertexai --save
    

من المفترض أن يظهر ملف functions/package.json الآن على النحو التالي، مع تحديد أحدث الإصدارات:

  {
    "name": "functions",
    "description": "Cloud Functions for Firebase",
    "scripts": {
      "serve": "firebase emulators:start --only functions",
      "shell": "firebase functions:shell",
      "start": "npm run shell",
      "deploy": "firebase deploy --only functions",
      "logs": "firebase functions:log"
    },
    "engines": {
      "node": "20"
    },
    "main": "index.js",
    "dependencies": {
      "@google-cloud/vertexai": "^1.1.0",
      "firebase-admin": "^12.1.0",
      "firebase-functions": "^5.0.0"
    },
    "devDependencies": {
      "firebase-functions-test": "^3.1.0"
    },
    "private": true
  }

لاحظ أنك إذا كنت تستخدم ESLint، سترى مقطعًا ستانزا يتضمنه. بالإضافة إلى ذلك، تأكَّد من أنّ إصدار محرّك العُقدة يتطابق مع الإصدار المثبَّت من Node.js والإصدار الذي يتم تشغيله في النهاية على Google Cloud. على سبيل المثال، إذا تمّ ضبط المقطع الصوتي engines في package.json على أنّه إصدار 18 للعقدة وكنت تستخدم الإصدار 20 من Node.js، عليك تعديل الملف ليستخدم القيمة 20:

  "engines": {
    "node": "20"
  },

الخطوة 3: ضبط أذونات "إدارة الهوية وإمكانية الوصول" لحساب خدمة حزمة تطوير البرامج (SDK) للمشرف وحفظ مفتاحك

في هذا الحل، ستستخدم حساب خدمة SDK لمشرف Firebase لتنفيذ الوظيفة.

  1. في Google Cloud Console، افتح صفحة إدارة الهوية وإمكانية الوصول والمشرف، وابحث عن حساب خدمة حزمة تطوير البرامج (SDK) للمشرف (الذي يُسمى firebase-adminsdk).
  2. اختَر الحساب وانقر على تعديل الحساب الرئيسي. تظهر صفحة تعديل الوصول.
  3. انقر على إضافة دور آخر، واختَر مُشاهد الإعداد عن بُعد.
  4. انقر على إضافة دور آخر، واختَر مطوّر منصة الذكاء الاصطناعي.
  5. انقر على إضافة دور آخر، واختَر مستخدم Vertex AI.
  6. انقر على إضافة دور آخر، واختَر Cloud Run Invoker.
  7. انقر على حفظ.

بعد ذلك، يمكنك تصدير بيانات الاعتماد لحساب خدمة SDK للمشرف وحفظها في متغير بيئة GOOGLE_APPLICATION_CREDENTIALS.

  1. في Google Cloud Console، افتح صفحة بيانات الاعتماد.
  2. انقر على حساب خدمة SDK للمشرف لفتح صفحة التفاصيل.
  3. انقر على المفاتيح.
  4. انقر على إضافة مفتاح > إنشاء مفتاح جديد.
  5. تأكَّد من اختيار JSON كنوع المفتاح، ثم انقر على إنشاء.
  6. نزِّل المفتاح في مكان آمن على جهاز الكمبيوتر.
  7. من الوحدة الطرفية، صدِّر المفتاح كمتغيّر بيئة:

    export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
    

الخطوة 4: إنشاء الدالة

في هذه الخطوة، ستنشئ دالة تعالج إدخالات المستخدم وتنشئ ردودًا مستندة إلى الذكاء الاصطناعي (AI). ستدمج مقتطفات رموز متعددة لإنشاء وظيفة شاملة تعمل على إعداد SDK للمشرف وVertex AI Gemini API، وتضبط المعلمات التلقائية باستخدام "الإعداد عن بُعد"، وتجلب أحدث معلمات "الإعداد عن بُعد" وتعالج البيانات التي يدخلها المستخدم وتُرسل ردًّا على المستخدم.

  1. في قاعدة الرموز، افتح functions/index.js في محرِّر نصوص أو IDE.
  2. احذف المحتوى الحالي ثم أضِف حزمة SDK للمشرف وميزة "الإعداد عن بُعد" وVertex AI SDK، ثم ابدأ إعداد التطبيق من خلال لصق الرمز التالي في الملف:

    const { onRequest } = require("firebase-functions/v2/https");
    const logger = require("firebase-functions/logger");
    
    const { initializeApp } = require("firebase-admin/app");
    const { VertexAI } = require('@google-cloud/vertexai');
    const { getRemoteConfig } = require("firebase-admin/remote-config");
    
    // Set and check environment variables.
    const project = process.env.GCLOUD_PROJECT;
    
    // Initialize Firebase.
    const app = initializeApp();
    
  3. يمكنك ضبط القيم التلقائية التي ستستخدمها الدالة إذا تعذَّر عليها الاتصال بخادم "الإعداد عن بُعد". يضبط هذا الحلّ textModel وgenerationConfig وsafetySettings وtextPrompt وlocation كمَعلمات "الإعداد عن بُعد" المتوافقة مع مَعلمات "الإعداد عن بُعد" التي سيتم ضبطها بشكلٍ أكبر في هذا الدليل. لمزيد من المعلومات حول هذه المَعلمات، يُرجى الاطّلاع على عميل Vertex AI Node.js.

    يمكنك اختياريًا ضبط معلَمة للتحكّم في ما إذا كنت تريد الوصول إلى واجهة برمجة تطبيقات Vertex AI Gemini (في هذا المثال، مَعلمة تُسمّى vertex_enabled). ويمكن أن يكون هذا الإعداد مفيدًا عند اختبار الدالة. في مقتطفات الرمز التالية، يتم ضبط هذه القيمة على false، والتي ستتخطّى استخدام Vertex AI أثناء اختبار نشر الوظيفة الأساسية. في حال ضبط السياسة على true، سيتم استدعاء واجهة برمجة تطبيقات Vertex AI Gemini.

    // Define default (fallback) parameter values for Remote Config.
    const defaultConfig = {
    
      // Default values for Vertex AI.
      model_name: "gemini-1.5-flash-preview-0514",
      generation_config: [{
        "stopSequences": [], "temperature": 0.7,
        "maxOutputTokens": 64, "topP": 0.1, "topK": 20
      }],
      prompt: "I'm a developer who wants to learn about Firebase and you are a \
        helpful assistant who knows everything there is to know about Firebase!",
      safety_settings: [{
        "category":
          "HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT",
        "threshold": "HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE"
      }],
      location: 'us-central1',
    
      // Disable Vertex AI Gemini API access for testing.
      vertex_enabled: false
    };
    
  4. أنشئ الدالة واضبط الإعداد عن بُعد من جهة الخادم:

    // Export the function.
    exports.generateWithVertex = onRequest(async (request, response) => {
    
      try {
    
        // Set up Remote Config.
        const rc = getRemoteConfig(app);
    
        // Get the Remote Config template and assign default values.
        const template = await rc.getServerTemplate({
          defaultConfig: defaultConfig
        });
    
        // Add the template evaluation to a constant.
        const config = template.evaluate();
    
        // Obtain values from Remote Config.
        const textModel = config.getString("model_name") ||
            defaultConfig.model_name;
        const textPrompt = config.getString("prompt") || defaultConfig.prompt;
        const generationConfig = config.getString("generation_config") ||
            defaultConfig.generation_config;
        const safetySettings = config.getString("safety_settings") ||
            defaultConfig.safety_settings;
        const location = config.getString("location") ||
            defaultConfig.location;
        const vertexEnabled = config.getBoolean("is_vertex_enabled") ||
            defaultConfig.vertex_enabled;
    
  5. عليك إعداد Vertex AI وإضافة منطق الدردشة والاستجابة:

      // Allow user input.
      const userInput = request.query.prompt || '';
    
      // Instantiate Vertex AI.
        const vertex_ai = new VertexAI({ project: project, location: location });
        const generativeModel = vertex_ai.getGenerativeModel({
          model: textModel,
          safety_settings: safetySettings,
          generation_config: generationConfig,
        });
    
        // Combine prompt from Remote Config with optional user input.
        const chatInput = textPrompt + " " + userInput;
    
        if (!chatInput) {
          return res.status(400).send('Missing text prompt');
        }
        // If vertexEnabled isn't true, do not send queries to Vertex AI.
        if (vertexEnabled !== true) {
          response.status(200).send({
            message: "Vertex AI call skipped. Vertex is not enabled."
          });
          return;
        }
    
        logger.log("\nRunning with model ", textModel, ", prompt: ", textPrompt,
          ", generationConfig: ", generationConfig, ", safetySettings: ",
          safetySettings, " in ", location, "\n");
    
        const result = await generativeModel.generateContentStream(chatInput); 
        response.writeHead(200, { 'Content-Type': 'text/plain' });
    
        for await (const item of result.stream) {
          const chunk = item.candidates[0].content.parts[0].text;
          logger.log("Received chunk:", chunk);
          response.write(chunk);
        }
    
        response.end();
    
      } catch (error) {
        logger.error(error);
        response.status(500).send('Internal server error');
      }
    });
    
  6. احفظ الملف وأغلقه.

الخطوة 5: إنشاء نموذج لميزة "الإعداد عن بُعد" خاص بالخادم

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

  1. افتح وحدة تحكُّم Firebase، ومن قائمة التنقّل، وسِّع تشغيل وانقر على الإعداد عن بُعد.
  2. اختَر الخادم من أداة اختيار العميل/الخادم أعلى صفحة "الإعداد عن بُعد".

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

    اسم المَعلمة الوصف النوع القيمة التلقائية
    model_name اسم النموذج
    للاطّلاع على أحدث قوائم بأسماء الطُرز التي يمكن استخدامها في رمزك، راجِع إصدارات الطراز ومراحل نشاطه أو أسماء الطُرز المتاحة.
    String gemini-1.5-pro-preview-0514
    prompt الطلب بإضافة طلب بحث المستخدم String I'm a developer who wants to learn about Firebase and you are a helpful assistant who knows everything there is to know about Firebase!
    generation_config المَعلمات المراد إرسالها إلى النموذج: JSON [{"stopSequences": ["I hope this helps"],"temperature": 0.7,"maxOutputTokens": 512, "topP": 0.1,"topK": 20}]
    safety_settings إعدادات الأمان في Vertex AI JSON [{"category": "HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "HarmBlockThreshold.BLOCK_LOW_AND_ABOVE"}]
    location الموقع الجغرافي لتشغيل خدمة ونموذج Vertex AI String us-central1
    is_vertex_enabled مَعلمة اختيارية تتحكّم في ما إذا كان سيتم إرسال طلبات البحث إلى Vertex AI. منطقي true
  4. عند الانتهاء من إضافة المَعلمات، تحقّق جيدًا من المَعلمات ومن أنّ أنواع بياناتها صحيحة، ثمّ انقر على نشر التغييرات.

الخطوة 6: نشر الدالة واختبارها في مجموعة أدوات المحاكاة المحلية من Firebase

بإمكانك الآن نشر الدالة واختبارها محليًا من خلال "مجموعة محاكي Firebase المحلي"

  1. تأكَّد من ضبط GOOGLE_APPLICATION_CREDENTIALS كمتغير بيئة كما هو موضّح في الخطوة 3: ضبط أذونات "إدارة الهوية وإمكانية الوصول" لحساب خدمة SDK للمشرف وحفظ مفتاحك. وبعد ذلك، من الدليل الرئيسي لدليل functions، انشر الدالة في محاكي Firebase:

    firebase emulators:start --project PROJECT_ID --only functions
    
  2. افتح صفحة سجلات المحاكي. من المفترض أن يوضّح هذا أنّه قد تم تحميل الدالة.

  3. يمكنك الوصول إلى الدالة من خلال تنفيذ الأمر التالي، حيث يشير PROJECT_ID إلى رقم تعريف المشروع وLOCATION هو المنطقة التي نشرت الدالة فيها (مثل us-central1):

    curl http://localhost:5001/PROJECT_ID/LOCATION/generateWithVertex
    
  4. انتظِر ردًّا، ثم ارجع إلى صفحة سجلّات محاكي Firebase أو وحدة التحكُّم لديك وتحقَّق من عدم وجود أي أخطاء أو تحذيرات.

  5. يمكنك محاولة إرسال بعض البيانات التي يُدخلها المستخدم مع ملاحظة أنّه بسبب ضبط is_vertex_enabled في نموذج خادم الإعداد عن بُعد، من المفترض أن يصل هذا النموذج إلى Gemini من خلال واجهة برمجة تطبيقات Vertex AI Gemini وأنّ ذلك قد يؤدي إلى تحصيل رسوم منك:

    curl http://localhost:5001/PROJECT_ID/LOCATION/generateWithVertex?prompt=Tell%20me%20everything%20you%20know%20about%20cats
    
  6. عليك إجراء التغييرات على نموذج خادم "الإعداد عن بُعد" في وحدة تحكُّم Firebase، ثم إعادة الوصول إلى الوظيفة لملاحظة التغييرات.

الخطوة 7: نشر الدالة على Google Cloud

بعد اختبار الدالة والتحقق منها، ستكون جاهزًا للنشر على Google Cloud واختبار الدالة المباشرة.

نشر الدالة

انشر الدالة باستخدام واجهة سطر الأوامر في Firebase:

firebase deploy --only functions

حظر الوصول غير المُصدَّق إلى الدالة

عند نشر الوظائف باستخدام Firebase، يتم السماح تلقائيًا بالاستدعاءات التي لم تتم مصادقتها، وذلك إذا لم تحظر سياسة مؤسستك ذلك. أثناء الاختبار وقبل التأمين باستخدام App Check، ننصحك بحظر الوصول غير المُصدَّق عليه.

لحظر الوصول غير المُصدَّق إلى الدالة:

  1. في Google Cloud Console، افتح Cloud Run.

  2. انقر على generateWithVertex، ثم انقر على علامة التبويب الأمان.

  3. فعِّل طلب المصادقة ثم انقر على حفظ.

يمكنك ضبط حساب المستخدم لاستخدام بيانات اعتماد حساب خدمة SDK للمشرف.

بما أنّ حساب خدمة SDK للمشرف لديه جميع الأدوار والأذونات اللازمة لتشغيل الوظيفة والتفاعل مع "الإعداد عن بُعد" وVertex AI Gemini، سيكون عليك استخدامه لتشغيل الوظائف. للقيام بذلك، يجب أن تكون قادرًا على إنشاء رموز مميزة للحساب من حساب المستخدم الخاص بك.

توضِّح الخطوات التالية كيفية ضبط حساب المستخدم والوظيفة التي يتم تشغيلها باستخدام امتيازات حساب خدمة SDK للمشرف.

  1. في Google Cloud Console، فعِّل واجهة برمجة التطبيقات IAM Service Account Credentials API.
  2. امنح حساب المستخدم دور منشئ الرمز المميّز لحساب الخدمة: من Google Cloud Console، افتح إدارة الهوية وإمكانية الوصول والمشرف > إدارة الهوية وإمكانية الوصول، واختَر حساب المستخدم، ثم انقر على تعديل العنصر الرئيسي > إضافة دور آخر.
  3. اختَر منشئ الرموز المميّزة لحساب الخدمة، ثم انقر على حفظ.

    للحصول على معلومات أكثر تفصيلاً حول انتحال هوية حساب الخدمة، يُرجى الاطّلاع على مقالة انتحال هوية حساب الخدمة في مستندات Google Cloud.

  4. افتح صفحة دوال السحابة الإلكترونية في Google Cloud Console وانقر على الدالة generateWithVertex في قائمة الدوالّ.

  5. انقر على مشغّل > تعديل ووسِّع وقت التشغيل والإنشاء والاتصالات وإعدادات الأمان.

  6. من علامة التبويب وقت التشغيل، غيِّر حساب الخدمة في وقت التشغيل إلى حساب SDK للمشرف.

  7. انقر على التالي، ثم انقر على نشر.

إعداد gcloud CLI

لتشغيل وظيفتك واختبارها بأمان من سطر الأوامر، ستحتاج إلى المصادقة باستخدام خدمة "دوال Cloud" والحصول على رمز مصادقة صالح.

لتفعيل إنشاء الرمز المميّز، ثبِّت gcloud CLI واضبطه:

  1. ثبِّت gcloud CLI على جهاز الكمبيوتر كما هو موضَّح في تثبيت واجهة سطر الأوامر gcloud.

  2. يجب الحصول على بيانات اعتماد الوصول إلى حسابك على Google Cloud:

    gcloud auth login
    
  3. اضبط رقم تعريف مشروعك في gcloud:

    gcloud config set project PROJECT_ID
    

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

أنت الآن جاهز لاختبار الدالة في Google Cloud. لاختبار الدالة، قم بتشغيل الأمر التالي:

curl -X POST https://LOCATION-PROJECT_ID.cloudfunctions.net/generateWithVertex \
  -H "Authorization: bearer $(gcloud auth print-identity-token)" \
  -H "Content-Type: application/json"

يُرجى إعادة المحاولة باستخدام البيانات التي يقدّمها المستخدمون:

curl -X POST https://LOCATION-PROJECT_ID.cloudfunctions.net/generateWithVertex?prompt=Tell%20me%20everything%20you%20know%20about%20dogs \
 -H "Authorization: bearer $(gcloud auth print-identity-token)" \
 -H "Content-Type: application/json"

يمكنك الآن إجراء تغييرات على نموذج خادم "الإعداد عن بُعد" ونشر هذه التغييرات واختبار خيارات مختلفة.

الخطوات اللاحقة