1. Introdução
Saiba como analisar as opiniões dos influenciadores no YouTube sobre qualquer empresa ou produto usando os recursos de IA generativa do Google.
Com o surgimento dos LLMs, ficou muito mais fácil aproveitar insights de várias fontes, como balanços patrimoniais, visualizações em plataformas de redes sociais e opiniões de influenciadores.
Os influenciadores de rede social, principalmente no mundo da tecnologia e das finanças, são cada vez mais vistos como defensores importantes de uma organização ou dos produtos e políticas dos concorrentes.
O que você vai criar
Neste codelab, você vai aprender como o modelo PaLM2 na Vertex AI e o Langchain se unem 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 de 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
Ele vai pedir para você reiniciar a máquina de execução após instalar os pacotes acima. Clique em REINICIAR TEMPO DE EXECUÇÃO ou selecione "Reiniciar tempo de execução" no menu "Tempo de execução".
Autenticar sua conta do Google Cloud
Sua conta precisa ter o papel de usuário da Vertex AI.
- Abra o console do Google Cloud e pesquise o serviço IAM e administrador. Na guia PERMISSÕES em VISUALIZAR POR PRINCIPAIS, selecione PERMITIR ACESSO. Insira / selecione seu principal e adicione a função "Usuário da Vertex AI" e clique em SALVAR, conforme mostrado na imagem abaixo:

Agora 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()
Ele vai pedir que você permita o acesso. Continue fazendo 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 de LLM da Vertex AI. Isso inicializa "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 trechos de vídeo em embeddings. Nesta parte do código, vamos apenas inicializar o objeto de incorporações. Na seção "Armazenar e recuperar", vamos aplicar os embeddings aos trechos criados com base no vídeo.
O chunking na IA generativa é o processo de dividir conteúdo grande em partes menores e gerenciáveis, ou "chunks". Isso é feito porque os modelos de IA generativa têm limites na quantidade de dados que podem processar de uma só vez. Ao dividir os dados, o modelo pode se concentrar em um bloco por vez e gerar resultados mais precisos e coerentes.
Embeddings são uma forma de representar conteúdo como um vetor de números. Isso permite que os computadores entendam o significado dos dados de uma maneira mais sofisticada do que os métodos tradicionais, como detecção de corte ou extração de keyframe, se for para vídeos, e bag-of-words, se for para dados de linguagem.
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ários trechos usando a técnica de divisão recursiva de caracteres.
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
Armazenar seus documentos
Neste exercício, vamos usar o ChromaDB. Você também pode usar o Vertex AI Vector Search. Armazene e indexe seus documentos no ChromaDB como um repositório de vetores. O ChromaDB é usado para armazenar e recuperar embeddings de vetor para uso com LLMs e para realizar pesquisas semânticas em dados.
db = Chroma.from_documents(docs, embeddings)
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": 2})
Criar uma cadeia de recuperação
Crie uma cadeia de recuperação para responder à pergunta. É aqui que associamos o LLM do modelo Text Bison da Vertex AI e o retriever que recupera os embeddings do banco de dados Chroma.
qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True)
7. Definir 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 de LLM
Integre o aplicativo de LLM ao Gradio para 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. Confira a interface no resultado da célula ou clique no link gerado. Você poderá visualizar a interface com os componentes de entrada e saída. Faça uma pergunta sobre o vídeo e confira a resposta do modelo.

Com isso, agora podemos integrar vídeos do YouTube e analisá-los usando modelos da API PaLM da Vertex AI. Você pode estender ainda mais essa 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 um LLM de geração de texto da Vertex AI de forma programática 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.