1. Introducción
Aprende a analizar las opiniones de los influencers en YouTube sobre cualquier empresa o producto con las capacidades de IA generativa de Google.
Con la llegada de los LLM, aprovechar estadísticas de una amplia variedad de fuentes, como balances, opiniones en plataformas de redes sociales y opiniones de influencers, se volvió mucho más fácil.
Los influencers de redes sociales, en especial en el mundo de la tecnología y las finanzas, se consideran cada vez más como defensores clave de una organización o de los productos y las políticas de sus competidores.
Qué compilarás
En este codelab, explorarás cómo se combinan el modelo PaLM2 en Vertex AI y Langchain para la solución de análisis de influencers de YouTube.
Entorno
Ve a https://colab.research.google.com/#create=true para crear un notebook nuevo en el entorno de pruebas de Google Colab.
2. Instala paquetes y autentica
En la primera celda del notebook nuevo, usa estos comandos para instalar los paquetes necesarios.
!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
Se te pedirá que reinicies la máquina de tiempo de ejecución después de instalar los paquetes anteriores. Haz clic en REINICIAR TIEMPO DE EJECUCIÓN o selecciona Reiniciar tiempo de ejecución en el menú Tiempo de ejecución.
Autentica tu cuenta de Google Cloud
Tu cuenta debe tener el rol de usuario de Vertex AI.
- Abre Google Cloud Console y busca el servicio IAM y administración. En la pestaña PERMISOS, en VER POR PRINCIPALES, selecciona OTORGAR ACCESO. Ingresa o selecciona tu principal y, luego, agrega el rol "Usuario de Vertex AI" y GUARDA, como se muestra en la siguiente imagen:

Ahora, vuelve a la pestaña de Colab y, en la segunda celda del archivo de trabajo actual, ingresa el siguiente fragmento de código. Esto verificará la autenticación.
from google.colab import auth as google_auth
google_auth.authenticate_user()
Cloud te solicita que permitas el acceso. Continúa haciéndolo.
3. Inicializa e importa
Para inicializar tu proyecto, ingresa el siguiente fragmento en la siguiente celda.
import vertexai
PROJECT_ID = "<projectid>" #enter your project id here
vertexai.init(project=PROJECT_ID)
Importa las bibliotecas para la solución
Usa estos comandos para importar las bibliotecas necesarias.
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
Inicializa el modelo de LLM de Vertex AI
Usa este fragmento de código para inicializar el modelo de LLM de Vertex AI. Esto inicializa "llm" con el modelo Text-Bison de 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. Inicia los embeddings
Usaremos los embeddings de Vertex AI para convertir los fragmentos de video en embeddings. En esta parte del código, solo inicializaremos el objeto de embeddings. En la sección de almacenamiento y recuperación, aplicaremos los embeddings a los fragmentos creados a partir del video.
La fragmentación en la IA generativa es el proceso de dividir contenido grande en partes más pequeñas y manejables o "fragmentos". Esto se hace porque los modelos de IA generativa tienen límites en la cantidad de datos que pueden procesar a la vez. Al fragmentar los datos, el modelo puede enfocarse en un fragmento a la vez y generar resultados más precisos y coherentes.
Los embeddings son una forma de representar el contenido como un vector de números. Esto permite que las computadoras comprendan el significado de los datos de una manera más sofisticada que los métodos tradicionales, como la detección de tomas o la extracción de fotogramas clave, si se trata de videos y de bolsa de palabras, si se trata de datos de lenguaje.
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. Carga y fragmenta el video
Carga el video para resumir o hacer preguntas.
loader = YoutubeLoader.from_youtube_url("https://www.youtube.com/watch?v=A8jyW_6hCGU&t=161s", add_video_info=True)
result = loader.load()
Divide el video
Divide el video en varios fragmentos con la técnica de división de caracteres recursiva.
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1500, chunk_overlap=0)
docs = text_splitter.split_documents(result)
print(f"# of documents = {len(docs)}")
6. Almacenamiento y recuperación
Almacena tus documentos
Para este ejercicio, usaremos ChromaDB. También puedes usar Vertex AI Vector Search. Almacena tus documentos y crea un índice de ellos en ChromaDB como un almacén de vectores. ChromaDB se usa para almacenar y recuperar embeddings de vectores para usarlos con LLM y realizar búsquedas semánticas en los datos.
db = Chroma.from_documents(docs, embeddings)
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": 2})
Crea una cadena de recuperador
Crea una cadena de recuperador para responder la pregunta. Aquí es donde asociamos el LLM del modelo Text Bison de Vertex AI y el recuperador que recupera los embeddings de Chroma DB.
qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True)
7. Define tu instrucción
Define tu instrucción para hacer preguntas y obtener respuestas del contenido 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. Integra la aplicación de LLM
Integra la aplicación de LLM con Gradio para una interacción visual de frontend.
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. Prueba la solución
Ahora, probemos la solución. Ejecuta la celda que contiene el código anterior. Visualiza la IU en el resultado de la celda o haz clic en el vínculo que se genera. Deberías poder visualizar la interfaz con los componentes de entrada y salida. Ingresa una pregunta sobre el video y visualiza la respuesta del modelo.

Con esto, ahora podemos integrar videos de YouTube y analizarlos con los modelos de la API de PaLM de Vertex AI. Puedes extender esto aún más para integrarlo con bases de datos o almacenes de datos. Consulta la documentación del producto de LLM de Vertex AI para obtener más información sobre los modelos disponibles.
10. ¡Felicitaciones!
¡Felicitaciones! Usaste con éxito un LLM de generación de texto de Vertex AI de forma programática para realizar análisis de texto en tus datos con solo consultas en SQL. Consulta la documentación del producto de LLM de Vertex AI para obtener más información sobre los modelos disponibles.