Genkit mit Cloud Run

Sie können Genkit-Abläufe mit Cloud Run als Webdienste bereitstellen. Auf dieser Seite wird beispielsweise beschrieben, wie Sie den Standard-Beispielfluss bereitstellen.

  1. Installieren Sie die Google Cloud CLI, falls noch nicht geschehen.

  2. Erstellen Sie mithilfe der Cloud Console ein neues Google Cloud-Projekt oder wählen Sie ein vorhandenes Projekt aus. Das Projekt muss mit einem Rechnungskonto verknüpft sein.

    Nachdem Sie ein Projekt erstellt oder ausgewählt haben, konfigurieren Sie die Google Cloud CLI so, dass es verwendet wird:

    gcloud auth login
    gcloud init
  3. Erstellen Sie ein Verzeichnis für das Genkit-Beispielprojekt:

    mkdir -p ~/tmp/genkit-cloud-project
    cd ~/tmp/genkit-cloud-project

    Wenn Sie eine IDE verwenden, öffnen Sie sie in diesem Verzeichnis.

  4. Initialisieren Sie ein Go-Modul in Ihrem Projektverzeichnis:

    go mod init example/cloudrun
    go mod get github.com/firebase/genkit/go
  5. So erstellen Sie eine Beispiel-App mit Genkit:

    package main
    
    import (
        "context"
        "fmt"
        "log"
        "net/http"
        "os"
    
        "github.com/firebase/genkit/go/ai"
        "github.com/firebase/genkit/go/genkit"
        "github.com/firebase/genkit/go/plugins/googlegenai"
        "github.com/firebase/genkit/go/plugins/server"
    )
    
    func main() {
        ctx := context.Background()
    
        // Initialize Genkit with the Google AI plugin and Gemini 2.0 Flash.
        // Alternatively, use &googlegenai.VertexAI{} and "vertexai/gemini-2.0-flash"
        // to use Vertex AI as the provider instead.
        g, err := genkit.Init(ctx,
            genkit.WithPlugins(&googlegenai.GoogleAI{}),
            genkit.WithDefaultModel("googleai/gemini-2.0-flash"),
        )
        if err != nil {
            log.Fatalf("failed to initialize Genkit: %w", err)
        }
    
        flow := genkit.DefineFlow(g, "jokesFlow", func(ctx context.Context, topic string) (string, error) {
            resp, err := genkit.Generate(ctx, g,
                ai.WithPrompt(`Tell a short joke about %s. Be creative!`, topic),
            )
            if err != nil {
                return "", fmt.Errorf("failed to generate joke: %w", err)
            }
    
            return resp.Text(), nil
        })
    
        mux := http.NewServeMux()
        mux.HandleFunc("POST /jokesFlow", genkit.Handler(flow))
        log.Fatal(server.Start(ctx, "127.0.0.1:"+os.Getenv("PORT"), mux))
    }
    
  6. Stellen Sie API-Anmeldedaten für Ihre bereitgestellte Funktion bereit. Wählen Sie anhand Ihrer Auswahl im Beispiel oben die erforderlichen Anmeldedaten 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.

  7. Optional: Testen Sie den Ablauf in der Entwickler-UI:

    1. Richten Sie Ihre lokale Umgebung für den ausgewählten Modellanbieter ein:

      Gemini (Google AI)

      export GEMINI_API_KEY=<your API key>

      Gemini (Vertex AI)

      export GOOGLE_CLOUD_PROJECT=<your project ID>
      export GOOGLE_CLOUD_LOCATION=us-central1
      gcloud auth application-default login
    2. Benutzeroberfläche starten:

      genkit start -- go run .
    3. Führen Sie den Ablauf in der Entwickler-Benutzeroberfläche (http://localhost:4000/) aus:

      1. Klicken Sie auf jokesFlow.

      2. Geben Sie auf dem Tab JSON-Eingabe ein Thema für das Modell an:

        "bananas"
        
      3. Klicken Sie auf Ausführen.

  8. Wenn bisher alles wie erwartet funktioniert, können Sie den Ablauf erstellen und bereitstellen:

    Gemini (Google AI)

    gcloud run deploy --port 3400 \
      --update-secrets=GEMINI_API_KEY=<your-secret-name>:latest

    Gemini (Vertex AI)

    gcloud run deploy --port 3400 \
      --set-env-vars GOOGLE_CLOUD_PROJECT=<your-gcloud-project> \
      --set-env-vars GOOGLE_CLOUD_LOCATION=us-central1

    (GOOGLE_CLOUD_LOCATION konfiguriert die Vertex API-Region, die Sie verwenden möchten.)

    Wählen Sie N aus, wenn Sie gefragt werden, ob Sie nicht authentifizierte Aufrufe zulassen möchten. Wenn Sie N auswählen, wird Ihr Dienst so konfiguriert, dass IAM-Anmeldedaten erforderlich sind. Informationen zum Angeben dieser Anmeldedaten finden Sie in der Cloud Run-Dokumentation unter Authentifizierung.

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 '"bananas"'