Função do Cloud para resumo de conteúdo usando a API Vertex AI PaLM e o Google Cloud Storage

1. Introdução

Neste codelab, você vai encontrar as etapas para resumir o conteúdo enviado ao Google Cloud Storage usando o modelo de linguagem grande da Vertex AI para geração de texto ( text-bison) como uma função do Cloud em Python. A lista de serviços usados é:

  • API Vertex AI PaLM: uma API de modelo de linguagem grande (LLM) que fornece acesso ao modelo PaLM Text Bison da IA do Google.
  • Cloud Functions: uma plataforma sem servidor para executar funções sem gerenciar servidores.
  • Cloud Storage: um serviço gerenciado para armazenar dados não estruturados.
  • Cloud Logging: um serviço totalmente gerenciado que permite armazenar, pesquisar, analisar, monitorar e alertar sobre dados de registro.

O que você vai criar

Você criará um aplicativo implantado como uma função do Cloud em Python para resumir textos usando a API Palm.

2. Requisitos

  • Use um navegador, como o Chrome ou o Firefox.
  • Tenha um projeto do Google Cloud com o faturamento ativado.

3. Antes de começar

  1. No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
  2. Confira se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
  3. Verifique se todas as APIs necessárias (API Cloud Storage, API Vertex AI, API Cloud Functions e Cloud Logging) estão ativadas
  4. Você vai usar o Cloud Shell, um ambiente de linha de comando em execução no Google Cloud. Consulte a documentação para saber mais sobre os comandos e o uso da gcloud.
  5. No console do Cloud, clique em "Ativar o Cloud Shell" no canto superior direito:

51622c00acec2fa.png

Se o projeto não estiver definido, use este comando:

gcloud config set project <YOUR_PROJECT_ID>
  1. Verifique se todas as APIs necessárias estão ativadas executando o seguinte comando no terminal do Cloud Shell:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. Crie variáveis de ambiente para REGION e PROJECT_ID executando o seguinte comando no terminal do Cloud Shell:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. Função do Cloud para invocar a API Vertex AI

Vamos criar uma função do Cloud em Python e invocar a API Vertex AI nessa função.

Como criar uma nova conta de serviço

Execute o comando a seguir no terminal do Cloud Shell para criar uma nova conta de serviço.

gcloud iam service-accounts create vertex-service-acc

Para fornecer acesso ao projeto e aos recursos, atribua um papel à conta de serviço.

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com" --role=roles/ml.developer

Execute o comando abaixo para conceder à sua Conta do Google um papel que permita usar os papéis da conta de serviço e a anexar a outros recursos. Substitua USER_EMAIL pelo ID de e-mail da sua Conta do Google.

gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

Como criar a função Python

A API PaLM para texto é ideal para tarefas que podem ser concluídas com uma resposta da API, sem a necessidade de conversas contínuas. Vamos criar a função do Cloud para isso agora.

Execute os seguintes comandos no Cloud Shell para clonar o repositório e navegue até o projeto (use o mesmo terminal aberto na seção anterior):

git clone https://github.com/rominirani/genai-apptemplates-googlecloud

cd genai-apptemplates-googlecloud/summarization-gcs-cloudfunction

A pasta que nos preocupa aqui neste projeto é: summarization-gcs-cloudfunction.

Abra o editor do Cloud Shell no terminal e verifique o conteúdo da pasta do projeto que acabou de ser clonada do github para a máquina do Cloud Shell.

Esta pasta contém dois arquivos:

  1. O arquivo Python main.py define uma função HTTP simples do Cloud que usa um modelo de geração de texto da Vertex AI para gerar resumos curtos de entradas de texto. A função usa uma entrada de texto como parâmetro e retorna um breve resumo dela. A função usa vários parâmetros para controlar o processo de geração, como a criatividade, a diversidade e a fluência do texto gerado. A função do Cloud HTTP aceita um objeto de solicitação e retorna o resumo do modelo como a resposta.
  2. O arquivo requirements.txt tem dependências de pacote:
  • functions-framework==3.: Garante que a função use os recursos e correções de bugs mais recentes do Functions Framework.
  • google-cloud-aiplatform: obrigatório para usar o modelo de geração de texto da Vertex AI.
  • google-cloud-storage::necessário para criar buckets de armazenamento no Google Cloud Storage.
  • google-cloud-logging: necessário para gerar registros.

5. Implante a função

  1. Crie dois buckets do Cloud Storage:
  • Primeiro bucket: o bucket $BUCKET_NAME será usado para fazer upload dos arquivos de resumo. Crie a variável de ambiente para armazenar o nome do bucket da seguinte maneira:
export BUCKET_NAME='Your Bucket Name'
  • Segundo bucket: o bucket $BUCKET_NAME-summaries será usado para armazenar o arquivo resumido.
  • Usaremos o comando gsutil para criar os buckets:
  • O gsutil é um aplicativo em Python que permite acessar o Cloud Storage da linha de comando. É possível usar o gsutil para executar uma ampla gama de tarefas de gerenciamento de bucket e de objeto.
  • mb é a abreviação de "Criar bucket".
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. Agora, estamos prontos para implantar a função. Mas antes disso, verifique se a conta de serviço do bucket do Cloud Storage tem o papel Editor do Pub/Sub.
  2. Acesse o Google Cloud Storage e, no painel esquerdo, clique em "Configurações".

8ce34eb05153abf2.png

  1. Copie a "Conta de serviço" nas configurações e anote-as.
  2. Abra "IAM e administrador" no menu de navegação do console do Google Cloud.

c5a7103e90689684.png

  1. Na guia "Permissões", clique em "CONCEDER ACESSO" e insira o ID da conta de serviço que você anotou. Na seção "Novos principais", selecione "Papel" como "Editor do Pub/Sub". e clique em SALVAR.

11c2df774fa740a9.png

  1. Implante essa origem no Cloud Functions. Execute o seguinte comando no terminal do Cloud Shell:
  2. Você precisa estar na pasta summarization-gcs-cloudfunction do projeto.
  3. execute o seguinte comando:
gcloud functions deploy summarizeArticles \
--gen2 \
--runtime=python311 \
--source=. \
--region=$REGION \
--project=$PROJECT_ID \
--entry-point=summarize_gcs_object \
--trigger-bucket=$BUCKET_NAME \
--set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION \
--max-instances=1 \
--quiet
  1. No console do Google Cloud, acesse o Cloud Functions:

Isso vai listar a função do Cloud vertex-ai-function que acabamos de criar com o URL público dela. Usaremos essa função para criar um gatilho do GCS.

6. Invocar a função

Quando um arquivo é enviado para o bucket* $BUCKET_NAME*,* o gatilho do GCS invoca a função. O bucket $BUCKET_NAME"-summaries inclui o arquivo resumido com o mesmo nome.

Antes de começar, salve o arquivo de amostra story.md na pasta summarization-gcs-cloudfunction na máquina local.

  1. No console do Google Cloud, acesse o Cloud Storage.
  2. Abra o bucket $BUCKET_NAME na lista de buckets.
  3. Clique em "Fazer upload de arquivos" e selecione o arquivo story.md.

A função summarizeArticles é acionada e começa a resumir o conteúdo do arquivo.

  1. No painel de navegação à esquerda, clique em "Buckets".
  2. Abra o bucket $BUCKET_NAME"-summaries.

O arquivo story.md inclui um resumo do conteúdo do arquivo.

7. Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta postagem, siga estas etapas:

  1. No console do Google Cloud, acesse a página Gerenciar recursos.
  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em "Excluir".
  3. Na caixa de diálogo, digite o ID do projeto e clique em "Encerrar" para excluí-lo.
  4. Se quiser manter o projeto e excluir apenas alguns recursos, acesse o console do Cloud Storage, clique em Buckets e, na lista, marque os buckets que você quer excluir e clique em EXCLUIR.
  5. Também é possível excluir a função do Cloud. Para isso, acesse o Cloud Functions e, na lista de funções, marque a que você quer excluir e clique em "EXCLUIR".

8. Parabéns

Parabéns! Você usou programaticamente um LLM de geração de texto da Vertex AI para resumir textos nos seus dados. Confira a documentação do produto LLM da Vertex AI para saber mais sobre os modelos disponíveis.