IA générative pour l'analyse de vidéos avec Vertex AI

1. Introduction

Découvrez comment analyser les vues des influenceurs sur YouTube pour une entreprise ou un produit à l'aide des fonctionnalités d'IA générative de Google.

Avec l'avènement des LLM, il est devenu beaucoup plus facile d'exploiter les insights provenant d'un large éventail de sources, telles que les bilans, les vues sur les plates-formes de réseaux sociaux et les opinions des influenceurs.

Les influenceurs sur les réseaux sociaux, en particulier dans le monde de la technologie et de la finance, sont de plus en plus considérés comme des promoteurs clés des produits et des règles d'une organisation ou de ses concurrents.

Ce que vous allez faire

Dans cet atelier de programmation, vous allez découvrir comment le modèle PaLM2 dans Vertex AI et Langchain se combinent pour la solution d'analyse des influenceurs YouTube.

Environnement

Accédez à https://colab.research.google.com/#create=true pour créer un notebook dans l'environnement bac à sable de Google Colab.

2. Installer des packages et s'authentifier

Dans la première cellule du nouveau notebook, utilisez ces commandes pour installer les packages requis.

!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

Vous serez invité à redémarrer la machine d'exécution après avoir installé les packages ci-dessus. Cliquez sur RESTART RUNTIME (REDÉMARRER L'ENVIRONNEMENT D'EXÉCUTION) ou sélectionnez Restart runtime (Redémarrer l'environnement d'exécution) dans le menu "Runtime" (Environnement d'exécution).

Authentifier votre compte Google Cloud

Votre compte doit disposer du rôle Utilisateur Vertex AI.

  • Ouvrez la console Google Cloud et recherchez le service IAM et administration. Dans l'onglet AUTORISATIONS, sous AFFICHER PAR COMPTE PRINCIPAL, sélectionnez ACCORDER L'ACCÈS. Saisissez / sélectionnez votre compte principal, puis ajoutez le rôle "Utilisateur Vertex AI" et ENREGISTREZ, comme illustré dans l'image ci-dessous :

c6d26238f3d57a45.png

Revenez à l'onglet Colab et saisissez l'extrait de code ci-dessous dans la deuxième cellule du fichier de travail actuel. Cela permettra de vérifier l'authentification.

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

Il vous invitera à autoriser l'accès. Continuez à le faire.

3. Initialiser et importer

Initialisez votre projet en saisissant l'extrait de code ci-dessous dans la cellule suivante.

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

Importer les bibliothèques pour la solution

Utilisez ces commandes pour importer les bibliothèques requises.

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

Initialiser le modèle LLM Vertex AI

Utilisez cet extrait de code pour initialiser le modèle LLM Vertex AI. Cela initialise "llm" avec le modèle 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. Initialiser les embeddings

Nous allons utiliser les embeddings Vertex AI pour convertir les segments vidéo en embeddings. Dans cette partie du code, nous n'initialiserons que l'objet d'intégration. Dans la section "Stocker et récupérer", nous appliquerons les embeddings aux blocs créés à partir de la vidéo.

Dans l'IA générative, le chunking consiste à diviser un contenu volumineux en éléments plus petits et plus faciles à gérer. En effet, les modèles d'IA générative sont limités en termes de volume de données qu'ils peuvent traiter simultanément. En segmentant les données, le modèle peut se concentrer sur un segment à la fois et générer des résultats plus précis et cohérents.

Les embeddings sont une façon de représenter du contenu sous forme de vecteur de nombres. Cela permet aux ordinateurs de comprendre la signification des données de manière plus sophistiquée que les méthodes traditionnelles, telles que la détection de plans ou l'extraction d'images clés pour les vidéos, et le sac de mots pour les données linguistiques.

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. Charger et segmenter la vidéo

Chargez la vidéo à résumer ou à partir de laquelle poser des questions.

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

Diviser la vidéo

Divisez la vidéo en plusieurs segments à l'aide de la technique de fractionnement de caractères récursifs.

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

6. Stocker et récupérer

Stocker vos documents

Pour cet exercice, nous utilisons ChromaDB. Vous pouvez également utiliser Vertex AI Vector Search. Stockez vos documents et indexez-les dans ChromaDB en tant que magasin de vecteurs. ChromaDB est utilisé pour stocker et récupérer des embeddings vectoriels à utiliser avec les LLM et pour effectuer une recherche sémantique sur les données.

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

Créer une chaîne de récupération

Créez une chaîne de récupération pour répondre à la question. C'est ici que nous associons le LLM du modèle Vertex AI Text Bison et le retriever qui récupère les embeddings de Chroma DB.

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

7. Définir votre requête

Définissez votre requête pour poser des questions et obtenir des réponses à partir du contenu indexé.

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. Intégrer l'application LLM

Intégrez l'application LLM à Gradio pour une interaction visuelle avec l'interface utilisateur.

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. Tester la solution

Passons maintenant au test de la solution. Exécutez la cellule contenant le code ci-dessus. Affichez l'UI dans le résultat de la cellule ou cliquez sur le lien généré. Vous devriez pouvoir visualiser l'interface avec les composants d'entrée et de sortie. Saisissez une question sur la vidéo et consultez la réponse du modèle.

825c38058aab0aae.png

Nous pouvons désormais intégrer des vidéos YouTube et les analyser à l'aide des modèles de l'API Vertex AI PaLM. Vous pouvez également l'étendre pour l'intégrer à des bases de données ou des entrepôts de données. Pour en savoir plus sur les modèles disponibles, consultez la documentation produit sur les LLM Vertex AI.

10. Félicitations !

Félicitations ! Vous avez réussi à utiliser un LLM de génération de texte Vertex AI de manière programmatique pour effectuer des analyses de texte sur vos données en utilisant uniquement des requêtes SQL. Consultez la documentation produit sur les LLM Vertex AI pour en savoir plus sur les modèles disponibles.