Abläufe mit Cloud Run bereitstellen

Sie können Genkit-Abläufe mit Cloud Run als HTTPS-Endpunkte bereitstellen. Cloud Run bietet mehrere Bereitstellungsoptionen, darunter die containerbasierte Bereitstellung. Auf dieser Seite erfahren Sie, wie Sie Ihre Workflows direkt aus dem Code bereitstellen.

Hinweis

  • Installieren Sie die Google Cloud CLI.
  • Sie sollten mit dem Genkit-Konzept von Abläufen und deren Erstellung vertraut sein. Auf dieser Seite wird davon ausgegangen, dass Sie bereits Workflows haben, die Sie bereitstellen möchten.
  • Es ist hilfreich, aber nicht erforderlich, wenn Sie Google Cloud und Cloud Run bereits verwendet haben.

1. Google Cloud-Projekt einrichten

Wenn Sie noch kein Google Cloud-Projekt eingerichtet haben, führen Sie die folgenden Schritte aus:

  1. Erstellen Sie mithilfe der Cloud Console ein neues Google Cloud-Projekt oder wählen Sie ein vorhandenes Projekt aus.

  2. Verknüpfen Sie das Projekt mit einem Abrechnungskonto, was für Cloud Run erforderlich ist.

  3. Konfigurieren Sie die Google Cloud CLI für die Verwendung Ihres Projekts:

    gcloud init

2. Node-Projekt für die Bereitstellung vorbereiten

Damit Ihre Workflows bereitgestellt werden können, müssen Sie einige kleine Änderungen an Ihrem Projektcode vornehmen:

Start- und Build-Scripts zu „package.json“ hinzufügen

Wenn Sie ein Node.js-Projekt in Cloud Run bereitstellen, erwarten die Bereitstellungstools, dass Ihr Projekt ein start-Script und optional ein build-Script enthält. Für ein typisches TypeScript-Projekt sind in der Regel die folgenden Scripts ausreichend:

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

Code zum Konfigurieren und Starten des Workflow-Servers hinzufügen

Fügen Sie in der Datei, die von Ihrem start-Script ausgeführt wird, einen Aufruf von startFlowServer hinzu. Bei dieser Methode wird ein Express-Server gestartet, der Ihre Workflows als Webendpunkte bereitstellt.

Geben Sie beim Aufruf die gewünschten Auslieferungsabläufe an:

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

Es gibt auch einige optionale Parameter, die Sie angeben können:

  • port: Der Netzwerkport, auf dem gelauscht werden soll. Wenn nicht angegeben, überwacht der Server den in der Umgebungsvariablen „PORT“ definierten Port. Wenn „PORT“ nicht festgelegt ist, wird standardmäßig 3400 verwendet.
  • cors: die CORS-Richtlinie des Workflow-Servers. Wenn Sie von einer Webanwendung aus auf diese Endpunkte zugreifen, müssen Sie dies wahrscheinlich angeben.
  • pathPrefix: Ein optionales Pfadpräfix, das vor den Ablaufendpunkten hinzugefügt werden soll.
  • jsonParserOptions: Optionen, die an den JSON-Body-Parser von Express übergeben werden

Optional: Autorisierungsrichtlinie definieren

Alle bereitgestellten Abläufe sollten eine gewisse Form der Autorisierung erfordern. Andernfalls könnten Ihre potenziell teuren generativen KI-Abläufe von jedem aufgerufen werden.

Wenn Sie Ihre Workflows mit Cloud Run bereitstellen, haben Sie zwei Möglichkeiten zur Autorisierung:

  • Cloud IAM-basierte Autorisierung: Mit den nativen Zugriffsverwaltungsfunktionen von Google Cloud können Sie den Zugriff auf Ihre Endpunkte steuern. Informationen zum Angeben dieser Anmeldedaten finden Sie in der Cloud Run-Dokumentation unter Authentifizierung.

  • Im Code definierte Autorisierungsrichtlinie: Mit der Autorisierungsrichtlinienfunktion von Genkit-Abläufen können Sie Autorisierungsinformationen mit benutzerdefiniertem Code überprüfen. Häufig, aber nicht unbedingt, ist dies eine tokenbasierte Autorisierung.

Wenn Sie eine Autorisierungsrichtlinie im Code definieren möchten, verwenden Sie den Parameter authPolicy in der Ablaufdefinition:

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

Der Parameter auth der Autorisierungsrichtlinie stammt aus dem Attribut auth des Anfrageobjekts. Normalerweise wird diese Eigenschaft mit Express-Middleware festgelegt. Weitere Informationen finden Sie unter Autorisierung und Integrität.

API-Anmeldedaten für bereitgestellte Abläufe verfügbar machen

Nach der Bereitstellung müssen sich Ihre Workflows bei allen Remote-Diensten authentifizieren können, auf die sie angewiesen sind. Für die meisten Abläufe sind mindestens Anmeldedaten für den Zugriff auf den verwendeten Modell-API-Dienst erforderlich.

Führen Sie in diesem Beispiel je nach ausgewähltem Modellanbieter einen der folgenden Schritte aus:

Gemini (Google AI)

  1. Prüfen Sie, ob Google AI in Ihrer Region verfügbar ist.

  2. Erstellen Sie einen API-Schlüssel für die Gemini API mit Google AI Studio.

  3. Stellen Sie den API-Schlüssel in der Cloud Run-Umgebung bereit:

    1. Aktivieren Sie in der Cloud Console die Secret Manager API.
    2. Erstellen Sie auf der Seite Secret Manager ein neues Secret mit Ihrem API-Schlüssel.
    3. Nachdem Sie das Secret erstellt haben, gewähren Sie auf derselben Seite Ihrem Standard-Compute-Dienstkonto mit der Rolle Secret Manager Secret Accessor Zugriff auf das Secret. Sie können den Namen des Standard-Compute-Dienstkontos auf der IAM-Seite nachschlagen.

    Wenn Sie Ihren Dienst später bereitstellen, müssen Sie den Namen dieses Secrets angeben.

Gemini (Vertex AI)

  1. Aktivieren Sie in der Cloud Console die Vertex AI API für Ihr Projekt.

  2. Achten Sie darauf, dass dem Standarddienstkonto für Compute auf der Seite IAM die Rolle Vertex AI-Nutzer zugewiesen ist.

Für diese Anleitung müssen Sie nur ein Secret für den Modellanbieter einrichten. Im Allgemeinen müssen Sie jedoch für jeden Dienst, den Ihr Flow verwendet, etwas Ähnliches tun.

3. Abläufe in Cloud Run bereitstellen

Nachdem Sie Ihr Projekt für die Bereitstellung vorbereitet haben, können Sie es mit dem gcloud-Tool bereitstellen.

Gemini (Google AI)

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

Gemini (Vertex AI)

gcloud run deploy

Das Bereitstellungstool fordert Sie auf, alle erforderlichen Informationen anzugeben.

Wenn Sie gefragt werden, ob Sie nicht authentifizierte Aufrufe zulassen möchten, gehen Sie so vor:

  • Wählen Sie Y aus, wenn Sie IAM nicht verwenden und stattdessen eine Autorisierungsrichtlinie im Code definiert haben.
  • Wählen Sie N aus, um Ihren Dienst so zu konfigurieren, dass IAM-Anmeldedaten erforderlich sind.

Optional: Bereitstellen Ablauf testen

Nach Abschluss der Bereitstellung gibt das Tool die Dienst-URL aus. Sie können das mit curl testen:

curl -X POST https://<service-url>/menuSuggestionFlow \
  -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  -H "Content-Type: application/json" -d '{"data": "banana"}'