Вы можете развернуть потоки Genkit в качестве конечных точек HTTPS с помощью Cloud Run. Cloud Run имеет несколько вариантов развертывания, включая развертывание на основе контейнера; на этой странице объясняется, как развертывать потоки непосредственно из кода.
Прежде чем начать
- Установите Google Cloud CLI .
- Вы должны быть знакомы с концепцией потоков Genkit и тем, как их писать. На этой странице предполагается, что у вас уже есть потоки, которые вы хотите развернуть.
- Это было бы полезно, но не обязательно, если вы уже использовали Google Cloud и Cloud Run раньше.
1. Настройте проект Google Cloud.
Если у вас еще не настроен проект Google Cloud, выполните следующие действия:
Создайте новый проект Google Cloud с помощью консоли Cloud или выберите существующий.
Свяжите проект с платежным аккаунтом, который необходим для Cloud Run.
Настройте 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, настроенный для обслуживания ваших потоков в качестве конечных точек веб-сайта.
При совершении вызова укажите потоки, которые вы хотите обслуживать:
ai.startFlowServer({
flows: [menuSuggestionFlow],
});
Вы также можете указать некоторые дополнительные параметры:
-
port
: сетевой порт для прослушивания. Если не указано, сервер прослушивает порт, определенный в переменной среды PORT, а если PORT не установлен, по умолчанию используется значение 3400. -
cors
: политика CORS сервера потока. Если вы будете получать доступ к этим конечным точкам из веб-приложения, вам, вероятно, потребуется указать это. -
pathPrefix
: необязательный префикс пути, который нужно добавить перед конечными точками потока. -
jsonParserOptions
: параметры для передачи в анализатор тела JSON Express.
Необязательно: Определите политику авторизации.
Все развернутые потоки должны требовать той или иной формы авторизации; в противном случае ваши потенциально дорогостоящие генеративные потоки ИИ могли бы быть вызваны кем угодно.
При развертывании потоков с помощью Cloud Run у вас есть два варианта авторизации:
Авторизация на основе Cloud IAM . Используйте встроенные средства управления доступом Google Cloud для ограничения доступа к вашим конечным точкам. Информацию о предоставлении этих учетных данных см. в разделе «Аутентификация» в документации Cloud Run.
Политика авторизации, определенная в коде . Используйте функцию политики авторизации потоков Genkit для проверки информации авторизации с помощью специального кода. Часто, но не обязательно, это авторизация на основе токенов.
Если вы хотите определить политику авторизации в коде, используйте параметр 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 модели, который они используют.
В этом примере выполните одно из следующих действий, в зависимости от выбранного вами поставщика модели:
Близнецы (ИИ Google)
Убедитесь, что Google AI доступен в вашем регионе .
Создайте ключ API для Gemini API с помощью Google AI Studio.
Сделайте ключ API доступным в среде Cloud Run:
- В облачной консоли включите API Secret Manager .
- На странице «Менеджер секретов» создайте новый секрет, содержащий ваш ключ API.
- После создания секрета на той же странице предоставьте своей учетной записи вычислительной службы по умолчанию доступ к секрету с помощью роли Секретного доступа диспетчера секретов . (Имя учетной записи вычислительной службы по умолчанию можно найти на странице IAM.)
На более позднем этапе, когда вы развернете службу, вам нужно будет указать имя этого секрета.
Близнецы (Vertex AI)
В облачной консоли включите API Vertex AI для своего проекта.
На странице IAM убедитесь, что учетной записи службы вычислений по умолчанию предоставлена роль пользователя Vertex AI .
Единственный секрет, который вам нужно настроить для этого руководства, — это поставщик модели, но в целом вы должны сделать что-то подобное для каждой службы, которую использует ваш поток.
4. Развертывание потоков в Cloud Run
Подготовив проект к развертыванию, вы можете развернуть его с помощью инструмента gcloud
.
Близнецы (ИИ Google)
gcloud run deploy --update-secrets=GOOGLE_GENAI_API_KEY=<your-secret-name>:latest
Близнецы (Vertex AI)
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"}'