Criar um resumo do YouTube com tecnologia Gemini

1. Introdução

No mundo digital acelerado de hoje, o tempo é um recurso precioso. O YouTube é um grande repositório de informações, mas vídeos longos podem exigir muito tempo. É aí que os resumos do YouTube se tornam inestimáveis. Essas ferramentas condensam vídeos longos em resumos concisos, permitindo que os usuários entendam rapidamente o conteúdo principal sem assistir o vídeo inteiro. Isso é especialmente útil para estudantes, profissionais e qualquer pessoa que queira extrair informações importantes de conteúdo de vídeo on-line com eficiência. Essencialmente, os resumos do YouTube permitem que os usuários maximizem o aprendizado e a ingestão de informações, minimizando o tempo gasto.

Ao final deste laboratório, você terá um aplicativo da Web funcional que pode gerar resumos de vídeos do YouTube. Você também vai entender melhor como usar a API Gemini e o SDK de IA Generativa do Google, além de integrá-los para criar um aplicativo da Web.

O aplicativo da Web vai ficar assim:

13a0825947f9892b.png

Basta fornecer um link para o vídeo do YouTube, e o Gemini faz o resto.

2. Antes de começar

Este codelab pressupõe que você já tenha um projeto na nuvem do Google Cloud com o faturamento ativado. Se você ainda não tem, siga as instruções abaixo para começar.

  1. No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
  2. Verifique se o faturamento está ativado para o projeto do Google Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
  3. Você vai usar o Cloud Shell, um ambiente de linha de comando executado no Google Cloud. Para acessar, clique em "Ativar Cloud Shell" na parte de cima do console do Google Cloud.

1829c3759227c19b.png

  1. Depois de se conectar ao Cloud Shell, verifique se sua conta já está autenticada e se o projeto está configurado com o ID do seu projeto usando o seguinte comando:
gcloud auth list
  1. Execute o comando a seguir no Cloud Shell para confirmar se o comando gcloud sabe sobre seu projeto.
gcloud config list project
  1. Se o projeto não estiver definido, use este comando:
gcloud config set project <YOUR_PROJECT_ID>

Também é possível conferir o ID do PROJECT_ID no console.

4032c45803813f30.jpeg

Clique nele para ver todos os seus projetos e o ID do projeto no lado direito.

2b4c041c426d8b29.jpeg

  1. Verifique se as seguintes APIs estão ativadas. Use o comando abaixo para definir isso:
  • API Vertex AI
  • API Cloud Run Admin
  • API Cloud Build
  • API Cloud Resource Manager
gcloud services enable aiplatform.googleapis.com \
                           run.googleapis.com \
                           cloudbuild.googleapis.com \
                           cloudresourcemanager.googleapis.com

A alternativa ao uso do comando gcloud é acessar o console usando este link. Consulte a documentação para ver o uso e os comandos gcloud.

Pré-requisitos

O que você vai aprender

  • Como criar uma API de back-end com tecnologia do Gemini usando a biblioteca de API Flask
  • Como criar um link de app de IA generativa que conecta o front-end e o back-end
  • Como implantar o aplicativo de IA generativa desenvolvido no Cloud Run

O que é necessário

  • Um computador em funcionamento com uma rede Wi-Fi confiável
  • Uma mente curiosa

3. Criar um app Python Flask no Cloud Run

Vamos criar o app Python Flask no Cloud Run usando primeiro o modelo gerado automaticamente no Cloud Shell.

Acesse o terminal do Cloud Shell e clique no botão "Abrir editor". b16d56e4979ec951.png

Verifique se o projeto do Cloud Code está definido no canto inferior esquerdo (barra de status) do editor do Cloud Shell, conforme destacado na imagem abaixo, e se ele está definido como o projeto ativo do Google Cloud em que o faturamento está ativado. Autorize se for solicitado.

OBSERVAÇÕES: pode levar um tempo depois que o editor do Cloud Shell for inicializado e carregar todos os plug-ins necessários para que

Cloud Code - Sign In

botão vai aparecer, aguarde

f5003b9c38b43262.png

Clique no projeto ativo na barra de status e aguarde a abertura do pop-up do Cloud Code. No pop-up, selecione "Novo aplicativo". 70f80078e01a02d8.png

Na lista de aplicativos, escolha Aplicativo do Cloud Run:

39abad102a72ae74.png

Na página 2/2, selecione o modelo Python Flask:

a78b3a0311403ad.png

Dê o nome que quiser ao projeto (por exemplo, "amazing-gemini-app") e clique em OK:

4d8f77279d9509cb.png

Isso vai abrir o modelo do novo projeto que você acabou de configurar.

e85a020a20d38e17.png

É assim que é simples criar um app Python Flask no Cloud Run com o Google Cloud Shell.

4. Criar o front-end

Como já foi dito, este é o aspecto do aplicativo da Web final:

13a0825947f9892b.png

Ele contém um campo de entrada para receber um link do YouTube do usuário, uma opção para escolher uma família de modelos diferente, uma caixa de texto para fornecer um comando adicional, se necessário, e um botão para enviar o formulário.

Se quiser um desafio, crie seu próprio formulário ou edite as propriedades CSS. Você também pode copiar o código abaixo e substituir o conteúdo do arquivo index.html na pasta templates.

<!DOCTYPE html>
<html>
 <head>
   <title>YouTube Summarizer</title>
   <style>
     body {
       font-family: sans-serif;
       display: flex;
       justify-content: center;
       align-items: center;
       min-height: 100vh;
       background-color: #f4f4f4;
     }
     .container {
       background-color: white;
       padding: 30px;
       border-radius: 8px;
       box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
       text-align: center;
     }
     h2 {
       text-align: center;
       margin-bottom: 20px;
     }
     input[type="text"], textarea, select {
       width: 100%;
       padding: 10px;
       margin-bottom: 15px;
       border: 1px solid #ccc;
       border-radius: 4px;
       box-sizing: border-box;
     }
     button {
       background-color: #4CAF50;
       color: white;
       padding: 12px 20px;
       border: none;
       border-radius: 4px;
       cursor: pointer;
     }
   </style>
 </head>
 <body>
   <div class="container">
     <h2>YouTube Summarizer</h2>
     <form action="/summarize" target="_blank" method="post">
       <input type="text" name="youtube_link" placeholder="Enter YouTube Link">
       <select name="model">
         <option value="gemini-2.0-flash-001">Gemini 2.0 Flash</option>
       </select>
       <textarea name="additional_prompt" placeholder="Write your additional prompt here. For example: 'explain to me like I am five years old'"></textarea>
       <button type="submit">Summarize</button>
     </form>
   </div>
 </body>
</html>

Para testar se você fez essa etapa corretamente, clique com o botão direito do mouse em app.py e escolha Executar arquivo Python no terminal.

690765473f94db9c.png

Se tudo der certo, você poderá acessar o aplicativo da Web clicando no botão Web Preview no canto superior direito do Cloud Editor e selecionando Preview on port 8080.

49cbdfdf77964065.jpeg

5. Criar o back-end

Depois de configurar o front-end, você precisará criar um serviço de back-end que use o modelo do Gemini para resumir o vídeo do YouTube fornecido pelo usuário. Você vai substituir o arquivo app.py para concluir esta tarefa.

Antes de mudar o código, crie um ambiente virtual e instale as bibliotecas necessárias para executar os componentes do Gemini.

Primeiro, adicione a biblioteca do SDK de IA Generativa do Google ao arquivo requirements.txt. Ele vai ficar assim:

Flask==2.3.3
requests==2.31.0
debugpy # Required for debugging.
google-genai==1.2.0

Em segundo lugar, crie um ambiente virtual e instale os pacotes de requirements.txt para executar o código de back-end sem problemas.

  1. Clique nas barras no canto superior esquerdo e escolha Terminal > Novo terminal. Outra opção é pressionar Ctrl + Shift + C para abrir um novo terminal.

2cda225f0cd71e7e.png 2. Crie um ambiente virtual digitando no terminal e aguarde a instalação ser concluída.

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Você pode criar um endpoint do Gemini usando a API Flask. O código em app.py deve ser semelhante ao fornecido abaixo.

import os

from flask import Flask, render_template, request
from google import genai
from google.genai import types

app = Flask(__name__)

PROJECT_ID = "REPLACE_WITH_YOUR_PROJECT_ID"

client = genai.Client(
   vertexai=True,
   project=PROJECT_ID,
   location="us-central1",
)

# Define the home page route.
@app.route('/', methods=['GET'])
def index():
   '''
   Renders the home page.
   Returns:The rendered template.
   '''
   return render_template('index.html')


def generate(youtube_link, model, additional_prompt):

   # Prepare youtube video using the provided link
   youtube_video = types.Part.from_uri(
       file_uri=youtube_link,
       mime_type="video/*",
   )

   # If addtional prompt is not provided, just append a space
   if not additional_prompt:
       additional_prompt = " "

   # Prepare content to send to the model
   contents = [
       youtube_video,
       types.Part.from_text(text="""Provide a summary of the video."""),
       additional_prompt,
   ]

   # Define content configuration
   generate_content_config = types.GenerateContentConfig(
       temperature = 1,
       top_p = 0.95,
       max_output_tokens = 8192,
       response_modalities = ["TEXT"],
   )

   return client.models.generate_content(
       model = model,
       contents = contents,
       config = generate_content_config,
   ).text

@app.route('/summarize', methods=['GET', 'POST'])
def summarize():
   '''
   Summarize the user provided YouTube video.
   Returns: Summary.
   '''

   # If the request is a POST request, process the form data.
   if request.method == 'POST':
       youtube_link = request.form['youtube_link']
       model = request.form['model']
       additional_prompt = request.form['additional_prompt']
     
       # Generate the summary.
       try:
           summary = generate(youtube_link, model, additional_prompt)
           return summary

       except ValueError as e:
           raise e
 
   # If the request is a GET request, redirect to the home page.
   else:
       return redirect('/')


if __name__ == '__main__':
   server_port = os.environ.get('PORT', '8080')
   app.run(debug=False, port=server_port, host='0.0.0.0')

Em essência, o código faz o seguinte:

Importa as bibliotecas necessárias:

  • Flask: para criar o aplicativo da Web.
  • os: para acesso a variáveis de ambiente.
  • google.genai: para interagir com a IA do Gemini do Google.
  • google.genai.types: para definir estruturas de dados para o Gemini.

Inicializar o cliente do Gemini:

  • Ele configura uma conexão com a Vertex AI do Google, permitindo que o app use o modelo de IA do Gemini. Substitua "REPLACE_WITH_YOUR_PROJECT_ID" pelo ID do projeto.

Como definir a função "generate":

  • Essa função usa como entrada um link de vídeo do YouTube, um ID de modelo do Gemini e um comando adicional. Em seguida, ele envia o vídeo e o comando para o Gemini e retorna o texto de resumo gerado.

Definir a rota da página inicial (/):

  • Essa função renderiza o modelo index.html, que mostra um formulário para o usuário inserir um link do YouTube.

Definir a rota de resumo (/summarize):

  • Essa função processa envios de formulário. Ele recupera o link, o modelo e o comando do YouTube do formulário, chama a função de geração para receber o resumo e o mostra no modelo result.html.

Como executar o aplicativo:

  • Ele recupera a porta do servidor das variáveis de ambiente e inicia o servidor da Web Flask.

Para testar o código, execute app.py no terminal. O mesmo método usado para testar o front-end. Clique com o botão direito do mouse em app.py e escolha Executar arquivo Python no terminal.

Teste o aplicativo. Ele vai funcionar como esperado.

6. Implantar o aplicativo da Web

Agora que você tem o aplicativo de IA generativa funcionando, vamos implantá-lo no Cloud Run para que você possa compartilhar com amigos e colegas.

Acesse o terminal do Cloud Shell e verifique se o projeto atual está configurado para seu projeto ativo. Caso contrário, use o comando gcloud configure para definir o ID do projeto:

gcloud config set project [PROJECT_ID]

Não se esqueça de substituir [PROJECT_ID] pelo ID do seu projeto. Verifique se o diretório de trabalho atual no terminal é **amazing-gemini-app**. Em seguida, insira os comandos a seguir nessa ordem, um por um:

gcloud run deploy --source .

Ele vai pedir que você insira um nome para o serviço, por exemplo, "youtube-summarizer". Escolha o número correspondente à região "us-central1". Diga y quando perguntar se você quer permitir invocações não autenticadas. Estamos permitindo o acesso não autenticado porque este é um aplicativo de demonstração. Recomendamos usar a autenticação adequada para seus aplicativos empresariais e de produção.

Quando a implantação for concluída, você vai receber um link semelhante a este:

https://amazing-gemini-app-*******.a.run.app/

Use o aplicativo na janela anônima ou no dispositivo móvel. Ele já deve estar ativo.

7. Desafio

Agora é sua hora de brilhar. Você tem o que é preciso para mudar o código e fazer upload de vídeos diretamente do seu computador?

8. Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste codelab, 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. Ou acesse Cloud Run no console do Google Cloud, selecione o serviço que você acabou de implantar e exclua.