Firebase Genkit با Cloud Run

شما می توانید جریان های Firebase Genkit را به عنوان سرویس های وب با استفاده از Cloud Run اجرا کنید. این صفحه، به عنوان مثال، شما را در فرآیند استقرار جریان نمونه پیش‌فرض راهنمایی می‌کند.

  1. ابزارهای مورد نیاز را نصب کنید:

    1. مطمئن شوید که از Node.js نسخه 20 یا بالاتر استفاده می کنید (برای بررسی node --version را اجرا کنید).

    2. Google Cloud CLI را نصب کنید.

  2. با استفاده از کنسول Cloud یک پروژه جدید Google Cloud ایجاد کنید یا یک پروژه موجود را انتخاب کنید. پروژه باید به یک حساب صورتحساب مرتبط باشد.

    پس از ایجاد یا انتخاب پروژه، Google Cloud CLI را برای استفاده از آن پیکربندی کنید:

    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
    

    ارائه دهنده مدلی را که می خواهید استفاده کنید انتخاب کنید. پیش فرض ها را برای درخواست های باقی مانده بپذیرید. ابزار genkit چند فایل منبع نمونه ایجاد می کند تا شما را شروع به توسعه جریان های هوش مصنوعی خود کند. با این حال، برای بقیه این آموزش، شما فقط جریان نمونه را اجرا می کنید.

  6. اعتبارنامه های API را در دسترس تابع مستقر خود قرار دهید. بسته به ارائه دهنده مدلی که انتخاب کرده اید یکی از موارد زیر را انجام دهید:

    جمینی (گوگل هوش مصنوعی)

    1. مطمئن شوید که Google AI در منطقه شما در دسترس است.

    2. با استفاده از Google AI Studio یک کلید API برای Gemini API ایجاد کنید .

    3. کلید API را در محیط Cloud Run در دسترس قرار دهید:

      1. در کنسول Cloud، Secret Manager API را فعال کنید.
      2. در صفحه Secret Manager ، یک رمز جدید حاوی کلید API خود ایجاد کنید.
      3. پس از ایجاد راز، در همان صفحه، به حساب سرویس محاسباتی پیش‌فرض خود به راز با نقش Secret Manager Secret Accessor دسترسی بدهید. (می توانید نام حساب پیش فرض سرویس محاسباتی را در صفحه IAM جستجو کنید.)

      در مرحله بعد، هنگام استقرار سرویس خود، باید نام این راز را ارجاع دهید.

    4. اختیاری : اگر می خواهید جریان خود را به صورت محلی اجرا کنید، مانند مرحله بعد، متغیر محیطی GOOGLE_GENAI_API_KEY را روی کلید خود تنظیم کنید:

      export GOOGLE_GENAI_API_KEY=<your API key>
      

    Gemini (Vertex AI)

    1. در کنسول Cloud، Vertex AI API را برای پروژه خود فعال کنید .

    2. در صفحه IAM ، اطمینان حاصل کنید که به حساب پیش‌فرض خدمات محاسباتی نقش Vertex AI User اعطا شده است.

    3. اختیاری : اگر می خواهید جریان خود را به صورت محلی اجرا کنید، مانند مرحله بعد، چند متغیر محیطی اضافی را تنظیم کنید و از ابزار gcloud برای تنظیم اعتبار پیش فرض برنامه استفاده کنید:

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

    تنها رازی که باید برای این آموزش راه اندازی کنید، مربوط به ارائه دهنده مدل است، اما به طور کلی، باید برای هر سرویسی که جریان شما استفاده می کند، کاری مشابه انجام دهید.

  7. اختیاری : جریان خود را در رابط کاربری توسعه‌دهنده امتحان کنید:

    1. UI را شروع کنید:

      genkit start
      
    2. در رابط کاربری توسعه دهنده (http://localhost:4000/)، جریان را اجرا کنید:

      1. روی menuSuggestionFlow کلیک کنید.

      2. در زبانه ورودی JSON ، موضوعی را برای مدل ارائه دهید:

        "banana"
        
      3. روی Run کلیک کنید.

  8. اگر تا کنون همه چیز همانطور که انتظار می رود کار می کند، می توانید جریان را بسازید و اجرا کنید:

    جمینی (گوگل هوش مصنوعی)

    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 ، سرویس شما را طوری پیکربندی می‌کند که به اعتبارنامه IAM نیاز دارد. برای اطلاعات در مورد ارائه این اعتبارنامه ها به احراز هویت در اسناد 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"}'