Firebase Genkit با Cloud Run

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

  1. اگر قبلاً Google Cloud CLI را نصب نکرده اید، نصب کنید.

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

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

    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 یک فایل منبع نمونه ایجاد می کند تا شما را شروع به توسعه جریان های هوش مصنوعی خود کند. با این حال، برای بقیه این آموزش، شما فقط جریان نمونه را اجرا می کنید.

  6. فایل نمونه ( main.go یا genkit.go ) را ویرایش کنید تا به صراحت پورتی را که سرور جریان باید به آن گوش دهد، مشخص کنید:

    if err := genkit.Init(ctx,
    	&genkit.Options{FlowAddr: ":3400"}, // Add this parameter.
    ); err != nil {
    	log.Fatal(err)
    }
    
  7. اعتبارنامه های 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 جستجو کنید.)

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

    Gemini (Vertex AI)

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

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

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

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

    1. محیط محلی خود را برای ارائه دهنده مدلی که انتخاب کرده اید تنظیم کنید:

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

      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. UI را شروع کنید:

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

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

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

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

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

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

    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 API را که می خواهید استفاده کنید پیکربندی می کند.)

    وقتی از شما پرسیده شد که آیا می‌خواهید فراخوان‌های احراز هویت نشده را مجاز کنید، 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 '"banana"'