Развертывание потоков с помощью Cloud Run

Вы можете развернуть потоки Genkit в качестве конечных точек HTTPS с помощью Cloud Run. Cloud Run имеет несколько вариантов развертывания, включая развертывание на основе контейнера; на этой странице объясняется, как развертывать потоки непосредственно из кода.

Прежде чем начать

  • Установите Google Cloud CLI .
  • Вы должны быть знакомы с концепцией потоков Genkit и тем, как их писать. На этой странице предполагается, что у вас уже есть потоки, которые вы хотите развернуть.
  • Это было бы полезно, но не обязательно, если вы уже использовали Google Cloud и Cloud Run раньше.

1. Настройте проект Google Cloud.

Если у вас еще не настроен проект Google Cloud, выполните следующие действия:

  1. Создайте новый проект Google Cloud с помощью консоли Cloud или выберите существующий.

  2. Свяжите проект с платежным аккаунтом, который необходим для Cloud Run.

  3. Настройте Google Cloud CLI для использования вашего проекта:

    gcloud init

2. Подготовьте проект Node к развертыванию.

Чтобы ваши потоки можно было развернуть, вам необходимо внести некоторые небольшие изменения в код проекта:

Добавьте сценарии запуска и сборки в package.json.

При развертывании проекта Node.js в Cloud Run инструменты развертывания ожидают, что у вашего проекта будет сценарий start и, при необходимости, сценарий build . Для типичного проекта TypeScript обычно достаточно следующих сценариев:

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

Добавьте код для настройки и запуска сервера потока.

В файле, который запускается вашим start сценарием, добавьте вызов startFlowServer . Этот метод запустит сервер Express, настроенный для обслуживания ваших потоков в качестве конечных точек веб-сайта.

При совершении вызова укажите потоки, которые вы хотите обслуживать:

Также есть:

import { startFlowServer } from '@genkit-ai/express';

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

Вы также можете указать некоторые дополнительные параметры:

  • port : сетевой порт для прослушивания. Если не указано, сервер прослушивает порт, определенный в переменной среды PORT, а если PORT не установлен, по умолчанию используется значение 3400.
  • cors : политика CORS сервера потока. Если вы будете получать доступ к этим конечным точкам из веб-приложения, вам, вероятно, потребуется указать это.
  • pathPrefix : необязательный префикс пути, который нужно добавить перед конечными точками потока.
  • jsonParserOptions : параметры для передачи в анализатор тела JSON Express.

Необязательно: Определите политику авторизации.

Все развернутые потоки должны требовать той или иной формы авторизации; в противном случае ваши потенциально дорогостоящие генеративные потоки ИИ могли бы быть вызваны кем угодно.

При развертывании потоков с помощью Cloud Run у вас есть два варианта авторизации:

  • Авторизация на основе Cloud IAM . Используйте встроенные средства управления доступом Google Cloud для ограничения доступа к вашим конечным точкам. Информацию о предоставлении этих учетных данных см. в разделе «Аутентификация» в документации Cloud Run.

  • Политика авторизации, определенная в коде : используйте функцию политики авторизации экспресс-плагина Genkit для проверки информации авторизации с помощью специального кода. Часто, но не обязательно, это авторизация на основе токенов.

Если вы хотите определить политику авторизации в коде, используйте параметр authPolicy в определении потока:

// middleware for handling auth tokens in headers.
const authMiddleware = async (req, resp, next) => {
  // parse auth headers and convert to auth object.
  (req as RequestWithAuth).auth = {
    user: await verifyAuthToken(req.header('authorization')),
  };
  next();
};

app.post(
  '/simpleFlow',
  authMiddleware,
  expressHandler(simpleFlow, {
    authPolicy: ({ auth }) => {
      if (!auth.user) {
        throw new Error('not authorized');
      }
    },
  })
);

Параметр auth политики авторизации берется из свойства auth объекта запроса. Обычно это свойство устанавливается с помощью промежуточного программного обеспечения Express. См. Авторизация и целостность .

Для получения более подробной информации обратитесь к документации экспресс-плагина .

Сделайте учетные данные API доступными для развернутых потоков.

После развертывания вашим потокам необходим какой-то способ аутентификации с любыми удаленными службами, от которых они зависят. Большинству потоков как минимум потребуются учетные данные для доступа к сервису API модели, который они используют.

В этом примере выполните одно из следующих действий, в зависимости от выбранного вами поставщика модели:

  1. Убедитесь, что Google AI доступен в вашем регионе .

  2. Создайте ключ API для Gemini API с помощью Google AI Studio.

  3. Сделайте ключ API доступным в среде Cloud Run:

    1. В облачной консоли включите API Secret Manager .
    2. На странице «Менеджер секретов» создайте новый секрет, содержащий ваш ключ API.
    3. После создания секрета на той же странице предоставьте учетной записи вычислительной службы по умолчанию доступ к секрету с помощью роли «Секретный доступ диспетчера секретов» . (Имя учетной записи вычислительной службы по умолчанию можно найти на странице IAM.)

    На более позднем этапе, когда вы развернете службу, вам нужно будет указать имя этого секрета.

  1. В облачной консоли включите API Vertex AI для своего проекта.

  2. На странице IAM убедитесь, что учетной записи службы вычислений по умолчанию предоставлена ​​роль пользователя Vertex AI .

Единственный секрет, который вам нужно настроить для этого руководства, — это поставщик модели, но в целом вы должны сделать что-то подобное для каждой службы, которую использует ваш поток.

3. Развертывание потоков в Cloud Run

Подготовив проект к развертыванию, вы можете развернуть его с помощью инструмента gcloud .

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

Инструмент развертывания запросит у вас всю необходимую информацию.

Когда вас спросят, хотите ли вы разрешить неаутентифицированные вызовы:

  • Ответьте Y , если вы не используете IAM и вместо этого определили политику авторизации в коде.
  • Ответьте N , чтобы настроить службу на требование учетных данных IAM.

Необязательно: попробуйте развернутый поток

После завершения развертывания инструмент распечатает 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"}'

Discover Firebase, Google’s mobile and web app development platform that helps developers build apps and games that users will love.

Обновлено Feb 25, 2025