IA generativa para estadísticas de video con Vertex AI

1. Introducción

Aprende a analizar las vistas de los influencers en YouTube sobre cualquier empresa o producto con las capacidades de la IA generativa de Google.

Con la llegada de los LLM, que obtienen estadísticas de una amplia variedad de fuentes, como balances y vistas en plataformas de redes sociales, las opiniones de influencers son cada vez más fáciles de entender.

Influencers de redes sociales, especialmente en el área de tecnología y Cada vez más, las finanzas se ven como defensores clave de una organización o de sus competidores. productos y y políticas de seguridad.

Qué compilarás

En este codelab, explorarás cómo el modelo PaLM 2 en VertexAI y Langchain se combinan para la solución de estadísticas de influencers de YouTube.

Entorno

Ve a https://colab.research.google.com/#create=true para crear un notebook nuevo en el entorno de la zona de pruebas de Google Colab.

2. Instala paquetes y autentica

En la primera celda del notebook nuevo, usa estos comandos para instalar los paquetes requeridos.

!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 del entorno de ejecución después de instalar los paquetes anteriores. Haz clic en RESTART RUNTIME o selecciona Reiniciar entorno de ejecución en el menú Entorno de ejecución.

Autentica tu Cuenta de Google Cloud

Tu cuenta debe tener el rol de usuario de Vertex AI.

  • Abre la consola de Google Cloud y busca IAM y servicio de administración. En la pestaña PERMISOS, en VER POR PRINCIPALS, selecciona OTORGAR ACCESO. Ingresa o selecciona tu principal y, luego, agrega el rol “Usuario de Vertex AI”. y GUARDAR, como se muestra en la siguiente imagen:

c6d26238f3d57a45.png

Ahora vuelve a la pestaña Colab y, luego, ingresa el siguiente fragmento de código en la segunda celda del archivo de trabajo actual. Esta acción verificará la autenticación.

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

Se te pedirá que permitas el acceso. Continúa haciéndolo.

3. Inicializa e importa

Inicializa tu proyecto. Para ello, ingresa el fragmento a continuación 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 requeridas.

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 inicializará "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. Iniciar incorporaciones

Usaremos las incorporaciones de Vertex AI para convertir los fragmentos de videos en incorporaciones. En esta parte del código, solo inicializaremos el objeto embeddings. En la sección de almacenamiento y recuperación, aplicaremos las incorporaciones a los fragmentos creados a partir del video.

La agrupación en la IA generativa es el proceso de dividir el contenido grande en partes más pequeñas y manejables. Esto se debe a que los modelos de IA generativa tienen límites sobre la cantidad de datos que pueden procesar a la vez. Cuando fragmentas los datos, el modelo puede enfocarse en un fragmento a la vez y generar resultados más precisos y coherentes.

Las incorporaciones 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 es para videos y bolsas de palabras si es para datos 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. Carga y fragmenta el video

Carga el video para resumir o formular 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 separador 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. Almacena y recupera

Almacena tus documentos

Para este ejercicio, usaremos ChromaDB. También puedes usar Vertex AI Vector Search. Almacena tus documentos y, luego, indícalos en ChromaDB como un almacén de vectores. ChromaDB se usa para almacenar y recuperar incorporaciones vectoriales para usarlas con los 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})

Cómo crear una cadena de retriever

Crea una cadena de retriever para responder la pregunta. Aquí es donde asociamos el LLM del modelo Text Bison de Vertex AI y el retriever que recupera las incorporaciones de la base de datos de croma.

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 a partir 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 en el video y ve la respuesta del modelo.

825c38058aab0aae.png

Con esto, ahora podemos integrar videos de YouTube y analizarlos con los modelos de la API de PaLM de Vertex AI. Puedes extenderlo aún más para integrarlo en bases de datos o almacenes de datos. Consulta la documentación del producto Vertex AI LLM para obtener más información sobre los modelos disponibles.

10. ¡Felicitaciones!

¡Felicitaciones! Usaste correctamente un LLM de generación de texto de Vertex AI de manera programática para realizar análisis de texto en tus datos solo con consultas en SQL. Consulta la documentación del producto Vertex AI LLM para obtener más información sobre los modelos disponibles.