Genkit с Cloud Run,Genkit с Cloud Run,Genkit с Cloud Run,Genkit с Cloud Run

Вы можете развернуть потоки Genkit как веб-сервисы с помощью Cloud Run. На этой странице в качестве примера описывается процесс развертывания примера потока по умолчанию.

  1. Установите Google Cloud CLI, если вы еще этого не сделали.

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

    После создания или выбора проекта настройте интерфейс командной строки Google Cloud для его использования:

    gcloud auth login
    gcloud init
  3. Создайте каталог для примера проекта Genkit:

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

    Если вы собираетесь использовать IDE, откройте ее в этом каталоге.

  4. Инициализируйте модуль Go в каталоге вашего проекта:

    go mod init example/cloudrun
    go mod get github.com/firebase/genkit/go
  5. Создайте пример приложения с помощью 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. Сделайте учетные данные API доступными для развернутой функции. Выберите, какие учетные данные вам нужны, исходя из вашего выбора в приведенном выше примере:

    Близнецы (ИИ Google)

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

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

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

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

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

    Близнецы (Vertex AI)

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

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

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

  7. Необязательно : попробуйте свой алгоритм в пользовательском интерфейсе разработчика:

    1. Настройте локальную среду для выбранного вами поставщика модели:

      Близнецы (ИИ Google)

      export GEMINI_API_KEY=<your API key>

      Близнецы (Vertex AI)

      export GOOGLE_CLOUD_PROJECT=<your project ID>
      export GOOGLE_CLOUD_LOCATION=us-central1
      gcloud auth application-default login
    2. Запустите пользовательский интерфейс:

      genkit start -- go run .
    3. В пользовательском интерфейсе разработчика (http://localhost:4000/) запустите поток:

      1. Нажмите шуткиFlow .

      2. На вкладке «Ввод JSON» укажите тему модели:

        "bananas"
        
      3. Нажмите «Выполнить» .

  8. Если пока все работает так, как ожидалось, вы можете создать и развернуть поток:

    Близнецы (ИИ Google)

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

    Близнецы (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 настраивает регион Vertex API, который вы хотите использовать.)

    Выберите N , когда вас спросят, хотите ли вы разрешить неаутентифицированные вызовы. Ответ N приведет к тому, что ваша служба будет требовать учетные данные IAM. Информацию о предоставлении этих учетных данных см. в разделе «Аутентификация» в документации Cloud Run.

После завершения развертывания инструмент распечатает URL-адрес службы. Вы можете проверить это с помощью curl :

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