1. Introdução
Neste codelab, você encontra as etapas para realizar a síntese do conteúdo enviado para o Google Cloud Storage usando o modelo de linguagem grande da Vertex AI para geração de texto ( text-bison) como uma função de nuvem em Python. A lista de serviços usados é a seguinte:
- API Vertex AI PaLM: uma API de modelo de linguagem grande (LLM) que oferece acesso ao modelo PaLM Text Bison 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 criar alertas sobre dados de registro.
O que você vai criar
Você vai criar um aplicativo implantado como uma função do Cloud Python para resumir texto usando a API PaLM.
2. Requisitos
3. Antes de começar
- No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
- Confira se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
- Verifique se todas as APIs necessárias (API Cloud Storage, API Vertex AI, API Cloud Function e API Cloud Logging) estão ativadas.
- Você vai usar o Cloud Shell, um ambiente de linha de comando executado no Google Cloud. Consulte a documentação para conferir o uso e os comandos do gcloud.
- No console do Cloud, clique em "Ativar o Cloud Shell" no canto superior direito:
Se o projeto não estiver definido, use este comando:
gcloud config set project <YOUR_PROJECT_ID>
- 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
- 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 nova conta de serviço executando o comando abaixo no terminal do Cloud Shell.
gcloud iam service-accounts create vertex-service-acc
Para conceder acesso ao projeto e aos recursos, conceda 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 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 conversa contínua. Vamos criar a função do Cloud para isso agora.
Execute os comandos abaixo 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 Cloud Shell Editor 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.
Essa pasta contém dois arquivos:
- O arquivo Python main.py define uma função do Cloud 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 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 HTTP Cloud aceita um objeto de solicitação e retorna o resumo do modelo como resposta.
- 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 Framework de funções.
- 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: obrigatório para gerar registros.
5. Implante a função
- 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 Python que permite acessar o Cloud Storage pela linha de comando. É possível usar o gsutil para executar uma ampla gama de tarefas de gerenciamento de bucket e de objeto.
- mb significa "Make Bucket"
gsutil mb -l $REGION gs://"$BUCKET_NAME"
gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
- Agora, estamos prontos para implantar a função. Antes disso, verifique se a conta de serviço do bucket do Cloud Storage tem a função de editor do Pub/Sub.
- Acesse o Google Cloud Storage e, no painel à esquerda, clique em "Configurações".
- Copie e anote a "Conta de serviço" nas configurações.
- Abra o IAM e o administrador no menu de navegação do console do Google Cloud.
- 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 "Editor do Pub/Sub" como função e clique em SALVAR.
- Implante essa fonte no Cloud Functions. Execute o seguinte comando no terminal do Cloud Shell:
- Verifique se você está na pasta summarization-gcs-cloudfunction neste projeto.
- 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
- No console do Google Cloud, acesse o Cloud Functions:
Isso vai listar a função 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 acionador 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 da pasta summarization-gcs-cloudfunction na máquina local.
- No console do Google Cloud, acesse o Cloud Storage.
- Abra o bucket
$BUCKET_NAME
na lista de buckets. - 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.
- No painel de navegação à esquerda, clique em Buckets.
- 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:
- No console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em "Excluir".
- Na caixa de diálogo, digite o ID do projeto e clique em "Encerrar" para excluir o projeto.
- Se você 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 "DELETE".
- Também é possível excluir o Cloud Function acessando o Cloud Functions e, na lista de funções, marcando a 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 realizar o resumo de texto nos seus dados. Consulte a documentação do produto LLM da Vertex AI para saber mais sobre os modelos disponíveis.