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

1. Introduction

Découvrez comment analyser les vues des personnes influentes sur YouTube pour n'importe quelle entreprise ou n'importe quel produit à l'aide des fonctionnalités d'IA générative de Google.

Avec l'avènement des LLM, qui exploitent des insights provenant de sources très diverses (bilans, vues des réseaux sociaux, etc.), l'opinion des influenceurs n'a jamais été aussi facile.

Les influenceurs des médias sociaux, en particulier dans le secteur des technologies Le monde de la finance est de plus en plus considéré comme les principaux défenseurs d'une entreprise ou de ses concurrents produits et règles.

Ce que vous allez faire

Dans cet atelier de programmation, vous allez découvrir comment le modèle PaLM2 de Vertex AI et Langchain s'intègre dans 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 de bac à sable de Google Colab.

2. Installer les packages et s'authentifier

Dans la première cellule du nouveau notebook, installez les packages requis à l'aide des commandes suivantes.

!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 l'ordinateur lors de l'exécution après avoir installé les packages ci-dessus. Cliquez sur REDÉMARRER L'EXÉCUTION ou sélectionnez "Redémarrer l'environnement d'exécution" dans le menu "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 "IAM and Admin service" (IAM et service d'administration). Dans l'onglet AUTORISATIONS, sous AFFICHER PAR LES PRINCIPALES, sélectionnez ACCORDER L'ACCÈS. Saisissez / Sélectionnez votre compte principal, puis ajoutez le rôle "Utilisateur Vertex AI" et ENREGISTRER, comme illustré dans l'image ci-dessous:

c6d26238f3d57a45.png

Revenez maintenant à 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()

Vous serez invité à autoriser l'accès. Continuez à le faire.

3. Initialiser et importer

Initialisez votre projet en saisissant l'extrait 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. Lancer les représentations vectorielles continues

Nous utiliserons les représentations vectorielles continues de Vertex AI pour convertir les fragments vidéo en représentations vectorielles continues. Dans cette partie du code, nous allons uniquement initialiser l'objet de représentations vectorielles continues. Dans la section "Store and retrieve" (Stocker et récupérer), nous appliquerons les représentations vectorielles continues aux fragments créés à partir de la vidéo.

Dans l'IA générative, la segmentation est le processus qui consiste à décomposer des contenus volumineux en fragments plus petits et plus faciles à gérer. En effet, les modèles d'IA générative limitent la quantité de données qu'ils peuvent traiter simultanément. En fragmentant les données, le modèle peut se concentrer sur un fragment à la fois, et générer des sorties plus précises et cohérentes.

Les représentations vectorielles continues sont un moyen de représenter le contenu sous la forme d'un vecteur de nombres. Cela permet aux ordinateurs de comprendre la signification des données d'une manière plus sophistiquée que les méthodes traditionnelles, telles que la détection de plans ou l'extraction d'images clés, s'il s'agit de vidéos, de sacs de mots ou de 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 diviser la vidéo

Chargez la vidéo permettant de résumer ou de 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 parties en utilisant la technique de séparation des 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 vectoriel. ChromaDB permet de stocker et de récupérer des représentations vectorielles continues à utiliser avec les LLM et d'effectuer une recherche sémantique sur des 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érateurs

Crée une chaîne de récupérateurs pour répondre à la question. C'est là que nous associons le LLM du modèle Text Bison de Vertex AI et le récupérateur qui récupère les représentations vectorielles continues 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 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égrer l'application LLM à Gradio pour une interaction visuelle dans l'interface

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

Testons maintenant la solution. Exécutez la cellule contenant le code ci-dessus. Affichez l'interface utilisateur dans le résultat de la cellule ou cliquez sur le lien généré. Vous devriez être en mesure de visualiser l'interface avec les composants d'entrée-sortie. Saisissez une question dans la vidéo et observez la réponse du modèle.

825c38058aab0aae.png

Nous pouvons ainsi intégrer des vidéos YouTube et les analyser à l'aide des modèles d'API Vertex AI PaLM. Vous pouvez étendre davantage cette fonctionnalité 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 sur les LLM Vertex AI.

10. Félicitations !

Félicitations ! Vous avez utilisé un LLM Vertex AI Text Generation de manière programmatique pour effectuer des analyses de texte sur vos données uniquement à l'aide de requêtes SQL. Consultez la documentation sur les LLM de Vertex AI pour en savoir plus sur les modèles disponibles.