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ê encontra 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. Os serviços usados são:

  • API PaLM da Vertex AI: uma API de modelo de linguagem grande (LLM) que oferece acesso ao modelo de texto Bison do PaLM da IA do Google.
  • Cloud Functions: uma plataforma sem servidor para executar funções sem precisar 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ê vai 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 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 executado no Google Cloud. Consulte a documentação para ver o uso e os comandos 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 nela.

Como criar uma conta de serviço

Crie uma conta de serviço executando o seguinte comando no terminal do Cloud Shell.

gcloud iam service-accounts create vertex-service-acc

Para conceder 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

Para conceder à sua Conta do Google um papel que permita que você use os papéis da conta de serviço e anexe a conta de serviço a outros recursos, execute o comando abaixo. Substitua USER_EMAIL pelo ID do 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 conversa contínua. Vamos criar a função do Cloud agora.

Execute os comandos a seguir no Cloud Shell para clonar o repositório e navegar 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 interessa 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 sua máquina do Cloud Shell.

Essa pasta contém dois arquivos:

  1. O arquivo Python main.py define uma função do Cloud Functions HTTP simples que usa um modelo de geração de texto da Vertex AI para gerar resumos curtos de entradas de texto. A função recebe uma entrada de texto como parâmetro e retorna um resumo curto dela. A função usa vários parâmetros para controlar o processo de geração, como criatividade, diversidade e fluência do texto gerado. A função do Cloud HTTP aceita um objeto de solicitação e retorna o resumo do modelo como resposta.
  2. O arquivo requirements.txt tem dependências de pacote:
  • functions-framework==3.: Garante que a função use os recursos e as correções de bugs mais recentes do Functions Framework.
  • google-cloud-aiplatform: necessá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 a serem resumidos. 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.
  • Vamos usar 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 variedade de tarefas de gerenciamento de buckets e objetos.
  • mb significa "Make Bucket"
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. Neste ponto, 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 de 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" das configurações e anote.
  2. Abra o 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 a função como "Editor do Pub/Sub" e clique em "SALVAR".

11c2df774fa740a9.png

  1. Implante essa origem no Cloud Functions. Execute o comando a seguir no terminal do Cloud Shell:
  2. Confira se você está na pasta summarization-gcs-cloudfunction neste 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 Cloud Functions:

Isso vai listar a função do Cloud vertex-ai-function que acabamos de criar com o URL público dela. Vamos usar 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 exemplo story.md da pasta summarization-gcs-cloudfunction na sua 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 seu 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 "Desligar" para excluir o projeto.
  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 navegando até "Cloud Functions" e, na lista de funções, marcando aquela que você quer excluir e clicando em "EXCLUIR".

8. Parabéns

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