IA generativa per l'analisi dei video con Vertex AI

1. Introduzione

Scopri come analizzare le opinioni degli inluencer su YouTube su qualsiasi azienda o prodotto utilizzando le funzionalità di IA generativa di Google.

Con l'avvento dei modelli LLM attingendo a informazioni provenienti da un'ampia gamma di fonti, come i bilanci e le opinioni sulle piattaforme di social media, le opinioni degli influencer sono diventate sempre più facili.

Influencer dei social media, soprattutto nel settore tecnologico e Il mondo finanziario è sempre più visto come i principali fautori di un'organizzazione o di aziende concorrenti di Google Cloud e criteri.

Cosa creerai

In questo codelab, scoprirai come il modello PaLM2 in Vertex AI e Langchain si uniscono per la soluzione di analisi degli influencer di YouTube.

Ambiente

Vai a https://colab.research.google.com/#create=true per creare un nuovo blocco note nell'ambiente sandbox di Google Colab.

2. Installa i pacchetti ed esegui l'autenticazione

Nella prima cella del nuovo blocco note, utilizza questi comandi per installare i pacchetti richiesti.

!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

Ti verrà chiesto di riavviare il computer runtime dopo l'installazione dei pacchetti sopra indicati. Fai clic su RIAVVIA RUNTIME o seleziona Riavvia runtime dal menu Runtime.

Autentica il tuo account Google Cloud

Il tuo account deve avere il ruolo Utente Vertex AI.

  • Apri la console Google Cloud e cerca il servizio IAM e amministratore. Nella scheda AUTORIZZAZIONI, in VISUALIZZA IN BASE ALLE PRINCIPALI, seleziona CONCEDI L'ACCESSO. Inserisci / seleziona la tua entità, quindi aggiungi il ruolo "Vertex AI User" e SALVA, come mostrato nell'immagine di seguito:

c6d26238f3d57a45.png

Torna alla scheda Colab e inserisci lo snippet di codice riportato di seguito nella seconda cella del file di lavoro corrente. Verrà verificata l'autenticazione.

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

Ti verrà chiesto di consentire l'accesso. Continua a farlo.

3. Inizializzare e importare

Inizializza il tuo progetto inserendo lo snippet seguente nella cella successiva.

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

Importa le librerie per la soluzione

Utilizza questi comandi per importare le librerie richieste.

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

Inizializzare il modello LLM di Vertex AI

Utilizza questo snippet di codice per inizializzare il modello LLM Vertex AI. Questo comando inizializza "llm" con il modello Text-Bison di 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. Avvia incorporamenti

Utilizzeremo gli incorporamenti di Vertex AI per convertire i blocchi video in incorporamenti. In questa parte del codice, inizializzamo solo l'oggetto Embeddings. Nella sezione dello store e del recupero, applicheremo gli incorporamenti ai blocchi creati a partire dal video.

La scomposizione nell'IA generativa è il processo di suddivisione di contenuti di grandi dimensioni in parti o "blocchi" più piccoli e gestibili. Questo perché i modelli di IA generativa impongono dei limiti alla quantità di dati che possono elaborare contemporaneamente. Mediante il chunking dei dati, il modello può concentrarsi su un blocco alla volta e generare output più accurati e coerenti.

Gli incorporamenti sono un modo per rappresentare i contenuti come un vettore di numeri. Ciò consente ai computer di comprendere il significato dei dati in un modo più sofisticato rispetto ai metodi tradizionali, come il rilevamento di scatti o l'estrazione di fotogrammi chiave, per video e bag-of-words, per dati linguistici.

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. Carica e suddivide il video

Carica il video per fare un riassunto o porre domande.

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

Dividi il video

Suddividi il video in più blocchi utilizzando la tecnica di suddivisione dei caratteri ricorsiva.

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

6. Archivia e recupera

Archivia i tuoi documenti

Per questo esercizio utilizziamo ChromaDB. Puoi anche utilizzare Vertex AI Vector Search. Archivia i tuoi documenti e indicizzali in ChromaDB come archivio vettoriale. ChromaDB viene utilizzato per archiviare e recuperare incorporamenti vettoriali da utilizzare con gli LLM e per eseguire una ricerca semantica sui dati.

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

Crea una catena di retriever

Crea una catena di retriever per rispondere alla domanda. È qui che associamo l'LLM del modello di testo Bison di Vertex AI e il retriever che recupera gli incorporamenti da Chroma DB.

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

7. Definisci il tuo prompt

Definisci il prompt per porre domande e ricevere risposte dai contenuti indicizzati.

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 l'applicazione LLM

Integrare l'applicazione LLM con Gradio per un'interazione visiva 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. Testa la soluzione

Ora procediamo con il test della soluzione. Esegui la cella contenente il codice riportato sopra. Visualizza l'interfaccia utente nel risultato della cella o fai clic sul link generato. Dovresti essere in grado di visualizzare l'interfaccia con i componenti di input-output. Inserisci una domanda sul video e visualizza la risposta del modello.

825c38058aab0aae.png

Ora possiamo integrare i video di YouTube e analizzarli utilizzando i modelli dell'API Vertex AI PaLM. Puoi estenderlo ulteriormente per integrarlo con database o data warehouse. Per saperne di più sui modelli disponibili, consulta la documentazione del prodotto LLM Vertex AI.

10. Complimenti!

Complimenti! Hai utilizzato correttamente un LLM di generazione del testo Vertex AI in modo programmatico per eseguire l'analisi del testo sui tuoi dati solo utilizzando query SQL. Consulta la documentazione del prodotto LLM Vertex AI per saperne di più sui modelli disponibili.