استقرار جریان ها با استفاده از Cloud Run

می‌توانید جریان‌های Genkit را به‌عنوان نقاط پایانی HTTPS با استفاده از Cloud Run اجرا کنید. Cloud Run چندین گزینه استقرار دارد، از جمله استقرار مبتنی بر کانتینر. این صفحه نحوه استقرار جریان های خود را مستقیماً از کد توضیح می دهد.

قبل از شروع

  • Google Cloud CLI را نصب کنید.
  • شما باید با مفهوم جنکیت از جریان ها و نحوه نوشتن آنها آشنا باشید. این صفحه فرض می کند که شما در حال حاضر جریان هایی دارید که می خواهید اجرا کنید.
  • اگر قبلاً از Google Cloud و Cloud Run استفاده کرده باشید، مفید است، اما ضروری نیست.

1. یک پروژه Google Cloud راه اندازی کنید

اگر قبلاً پروژه Google Cloud راه‌اندازی نکرده‌اید، این مراحل را دنبال کنید:

  1. با استفاده از کنسول Cloud یک پروژه جدید Google Cloud ایجاد کنید یا یک پروژه موجود را انتخاب کنید.

  2. پروژه را به یک حساب صورتحساب، که برای Cloud Run لازم است، پیوند دهید.

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

    gcloud init

2. پروژه Node خود را برای استقرار آماده کنید

برای اینکه جریان های شما قابل اجرا باشد، باید تغییرات کوچکی در کد پروژه خود ایجاد کنید:

اسکریپت های start و build را به package.json اضافه کنید

هنگام استقرار یک پروژه Node.js در Cloud Run، ابزارهای استقرار انتظار دارند که پروژه شما یک اسکریپت start و در صورت تمایل، یک اسکریپت build داشته باشد. برای یک پروژه TypeScript معمولی، اسکریپت های زیر معمولاً کافی هستند:

"scripts": {
  "start": "node lib/index.js",
  "build": "tsc"
},

کدی را برای پیکربندی و راه اندازی سرور جریان اضافه کنید

در فایلی که توسط اسکریپت start شما اجرا می شود، یک تماس به startFlowServer اضافه کنید. این روش یک سرور اکسپرس را راه اندازی می کند تا جریان های شما را به عنوان نقاط پایانی وب ارائه کند.

وقتی تماس برقرار می‌کنید، جریان‌هایی را که می‌خواهید ارائه شوند مشخص کنید:

ai.startFlowServer({
  flows: [menuSuggestionFlow],
});

همچنین برخی از پارامترهای اختیاری وجود دارد که می توانید مشخص کنید:

  • port : پورت شبکه برای گوش دادن. اگر مشخص نباشد، سرور به پورت تعریف شده در متغیر محیط PORT گوش می دهد و اگر PORT تنظیم نشده باشد، به طور پیش فرض روی 3400 قرار می گیرد.
  • cors : خط مشی CORS سرور جریان. اگر از یک برنامه وب به این نقاط پایانی دسترسی خواهید داشت، احتمالاً باید این را مشخص کنید.
  • pathPrefix : یک پیشوند مسیر اختیاری برای اضافه کردن قبل از نقاط پایانی جریان.
  • jsonParserOptions : گزینه هایی برای ارسال به تجزیه کننده بدنه JSON Express

اختیاری: یک خط مشی مجوز را تعریف کنید

همه جریان های مستقر باید به نوعی مجوز نیاز داشته باشند. در غیر این صورت، جریان های مولد AI بالقوه گران شما برای هر کسی قابل استناد خواهد بود.

هنگامی که جریان های خود را با Cloud Run مستقر می کنید، دو گزینه برای مجوز دارید:

  • مجوز مبتنی بر Cloud IAM : از امکانات مدیریت دسترسی بومی Google Cloud برای دسترسی به نقاط پایانی خود استفاده کنید. برای اطلاعات در مورد ارائه این اعتبارنامه ها به احراز هویت در اسناد Cloud Run مراجعه کنید.

  • خط مشی مجوز تعریف شده در کد : از ویژگی سیاست مجوز Genkit flows برای تأیید اطلاعات مجوز با استفاده از کد سفارشی استفاده کنید. این اغلب، اما نه لزوما، مجوز مبتنی بر توکن است.

اگر می خواهید یک خط مشی مجوز را در کد تعریف کنید، از پارامتر authPolicy در تعریف جریان استفاده کنید:

const myFlow = ai.defineFlow(
  {
    name: "myFlow",
    authPolicy: (auth, input) => {
      if (!auth) {
        throw new Error("Authorization required.");
      }
      // Custom checks go here...
    },
  },
  async () => {
    // ...
  }
);

پارامتر auth سیاست مجوز از ویژگی auth شی درخواست می آید. شما معمولاً این ویژگی را با استفاده از میان افزار Express تنظیم می کنید. مجوز و صداقت را ببینید.

اعتبارنامه های API را برای جریان های مستقر در دسترس قرار دهید

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

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

3. استقرار جریان ها به Cloud Run

پس از اینکه پروژه خود را برای استقرار آماده کردید، می توانید آن را با استفاده از ابزار gcloud اجرا کنید.

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

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

Gemini (Vertex AI)

gcloud run deploy

ابزار استقرار هر اطلاعاتی را که نیاز دارد از شما می خواهد.

وقتی از شما پرسیده شد که آیا می‌خواهید فراخوان‌های احراز هویت نشده را مجاز کنید:

  • اگر از IAM استفاده نمی کنید و در عوض یک خط مشی مجوز را در کد تعریف کرده اید، به Y پاسخ دهید.
  • برای پیکربندی سرویس خود به گونه ای که به اعتبارنامه IAM نیاز دارد، N پاسخ دهید.

اختیاری: جریان مستقر را امتحان کنید

پس از اتمام استقرار، ابزار 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"}'