IA generativa para análise de vídeos com a Vertex AI

1. Introdução

Saiba como analisar as visualizações de influenciadores no YouTube em qualquer empresa ou produto usando os recursos de IA generativa do Google.

Com o advento dos LLMs aproveitando insights de uma ampla variedade de fontes, como balanços patrimoniais, visualizações em plataformas de mídias sociais, as opiniões dos influenciadores ficaram mais fáceis.

Influenciadores de redes sociais, especialmente do setor de tecnologia O mundo financeiro é cada vez mais visto como os principais proponentes de uma organização ou de seus produtos e políticas.

O que você vai criar

Neste codelab, você vai aprender como o modelo PaLM2 na Vertex AI e no Langchain servem para a solução de análise de influenciadores do YouTube.

Ambiente

Acesse https://colab.research.google.com/#create=true para criar um notebook no ambiente sandbox do Google Colab.

2. Instalar pacotes e autenticar

Na primeira célula do novo notebook, use estes comandos para instalar os pacotes necessários.

!pip install google-cloud-aiplatform
!pip install langchain
!pip install chromadb
!pip install pytube
!pip install youtube-transcript-api
!pip install gradio
from google.cloud import aiplatform

Será solicitado que você reinicie a máquina do ambiente de execução depois de instalar os pacotes acima. Clique em REINICIAR EXECUÇÃO ou selecione "Reiniciar ambiente de execução" no menu "Ambiente de execução".

Autentique sua conta do Google Cloud

Sua conta precisa ter a função de usuário da Vertex AI.

  • Abra o console do Google Cloud e pesquise "IAM e serviço de administrador". Na guia "PERMISSÕES", em "VER POR PRINCÍPIOS", selecione "CONCEDER ACESSO". Insira / selecione sua principal e adicione a função "Usuário da Vertex AI" e em SALVAR, conforme mostrado na imagem abaixo:

c6d26238f3d57a45.png

Volte para a guia do Colab e insira o snippet de código abaixo na segunda célula do arquivo de trabalho atual. Isso vai verificar a autenticação.

from google.colab import auth as google_auth
google_auth.authenticate_user()

Será solicitado que você permita o acesso. Continue a fazer isso.

3. Inicializar e importar

Inicialize seu projeto inserindo o snippet abaixo na próxima célula.

import vertexai
PROJECT_ID = "<projectid>" #enter your project id here
vertexai.init(project=PROJECT_ID)

Importar as bibliotecas para a solução

Use estes comandos para importar as bibliotecas necessárias.

from langchain.document_loaders import YoutubeLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.llms import VertexAI

Inicializar o modelo LLM da Vertex AI

Use este snippet de código para inicializar o modelo LLM da Vertex AI. Isso inicializa o "llm" com o modelo Text-Bison da Vertex AI.

!python3 -m pip install langchain

llm = VertexAI(
model_name="text-bison@001",
max_output_tokens=256,
temperature=0.1,
top_p=0.8,
top_k=40,
verbose=True,
)

4. Iniciar embeddings

Vamos usar os embeddings da Vertex AI para converter os blocos de vídeo em embeddings. Nesta parte do código, vamos inicializar apenas o objeto de embeddings. Na seção de armazenamento e recuperação, aplicaremos os embeddings aos blocos criados a partir do vídeo.

O agrupamento na IA generativa é o processo de dividir um conteúdo grande em partes menores e gerenciáveis. Isso é feito porque os modelos de IA generativa têm limites para a quantidade de dados que podem processar de uma só vez. Ao agrupar os dados, o modelo pode se concentrar em uma parte por vez e gerar resultados mais precisos e coerentes.

Embeddings são uma maneira de representar conteúdo como um vetor de números. Isso permite que os computadores entendam o significado dos dados de uma forma mais sofisticada do que os métodos tradicionais, como detecção de imagens ou extração de frames-chave, se for para vídeos e dados de idioma.

from langchain.embeddings import VertexAIEmbeddings

# Embedding
EMBEDDING_QPM = 100
EMBEDDING_NUM_BATCH =5
embeddings = VertexAIEmbeddings(
    requests_per_minute=EMBEDDING_QPM,
    num_instances_per_batch=EMBEDDING_NUM_BATCH,
)

5. Carregar e dividir o vídeo

Carregue o vídeo para resumir ou fazer perguntas.

loader = YoutubeLoader.from_youtube_url("https://www.youtube.com/watch?v=A8jyW_6hCGU&t=161s", add_video_info=True)
result = loader.load()

Dividir o vídeo

Divida o vídeo em várias partes usando a técnica do divisor de caracteres recursivos.

text_splitter = RecursiveCharacterTextSplitter(chunk_size=1500, chunk_overlap=0)
docs = text_splitter.split_documents(result)
print(f"# of documents = {len(docs)}")

6. Armazenar e recuperar

Armazene seus documentos

Para este exercício, vamos usar o ChromaDB. Você também pode usar a Vertex AI Vector Search. Armazene seus documentos e indexe-os no ChromaDB como um armazenamento vetorial. O ChromaDB é usado para armazenar e recuperar embeddings de vetores para uso com LLMs e para realizar pesquisas semânticas sobre dados.

db = Chroma.from_documents(docs, embeddings)
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": 2})

Criar uma cadeia de retriever

Crie uma cadeia de recuperação para responder à pergunta. É aqui que associamos o LLM do modelo Text Bison na Vertex AI e o recuperador que recupera os embeddings do Chroma DB.

qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True)

7. Defina seu comando

Defina seu comando para fazer perguntas e receber respostas do conteúdo indexado.

def sm_ask(question, print_results=True):
  video_subset = qa({"query": question})
  context = video_subset
  prompt = f"""
  Answer the following question in a detailed manner, using information from the text below. If the answer is not in the text,say I dont know and do not generate your own response.

  Question:
  {question}
  Text:
  {context}

  Question:
  {question}

  Answer:
  """
  parameters = {
  "temperature": 0.1,
  "max_output_tokens": 256,
  "top_p": 0.8,
  "top_k": 40
  }
  response = llm.predict(prompt, **parameters)
  return {
  "answer": response

  }

8. Integrar o aplicativo LLM

Integrar o aplicativo LLM com o GRadio para gerar uma interação visual de front-end.

import gradio as gr
def get_response(input_text):
  response = sm_ask(input_text)
  return response

grapp = gr.Interface(fn=get_response, inputs="text", outputs="text")
grapp.launch()

9. Testar a solução

Agora vamos testar a solução. Execute a célula que contém o código acima. Visualize a interface no resultado da célula ou clique no link gerado. A interface com os componentes de entrada e saída vai aparecer. Insira uma pergunta no vídeo e veja a resposta do modelo.

825c38058aab0aae.png

Com isso, agora podemos integrar vídeos do YouTube e analisá-los usando modelos da API PaLM da Vertex AI. É possível estender isso ainda mais para integração com bancos de dados ou data warehouses. Consulte a documentação do produto LLM da Vertex AI para saber mais sobre os modelos disponíveis.

10. Parabéns!

Parabéns! Você usou programaticamente um LLM de geração de texto da Vertex AI para realizar análises de texto nos seus dados usando apenas consultas SQL. Confira a documentação do produto LLM da Vertex AI para saber mais sobre os modelos disponíveis.