Generative KI für Videoanalysen mit Vertex AI

1. Einführung

Hier erfahren Sie, wie Sie mit den Gen AI-Funktionen von Google die Aufrufe von Inluencern auf YouTube zu einem Unternehmen oder Produkt analysieren können.

Seitdem LLMs auf Erkenntnisse aus einer Vielzahl von Quellen wie Bilanzen und Ansichten auf Social-Media-Plattformen zurückgreifen können, ist es umso einfacher geworden, die Meinungen der Influencer zu ermitteln.

Social-Media-Influencer, insbesondere aus den Bereichen Technik und Die Finanzwelt wird zunehmend als Hauptbefürworter eines Unternehmens oder der seiner Mitbewerber betrachtet. Produkte und Richtlinien.

Aufgaben

In diesem Codelab erfahren Sie, wie das PaLM2-Modell in VertexAI und Langchain für die YouTube-Influencer-Analyselösung zusammenwirken.

Umgebung

Rufen Sie https://colab.research.google.com/#create=true auf, um in der Google Colab-Sandbox-Umgebung ein neues Notebook zu erstellen.

2. Pakete installieren und authentifizieren

Verwenden Sie diese Befehle in der ersten Zelle im neuen Notebook, um die erforderlichen Pakete zu installieren.

!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

Nach der Installation der oben genannten Pakete werden Sie aufgefordert, den Laufzeitcomputer neu zu starten. Klicken Sie auf RUNTIME ERNEUT STARTEN oder wählen Sie im Menü Laufzeit die Option Laufzeit neu starten aus.

Google Cloud-Konto authentifizieren

Ihr Konto sollte die Rolle Vertex AI-Nutzer haben.

  • Öffnen Sie die Google Cloud Console und suchen Sie nach IAM und Admin-Dienst. Wählen Sie auf dem Tab „BERECHTIGUNGEN“ unter „DURCH PRINZIPIEN ANZEIGEN“ die Option ZUGRIFF GEWÄHREN aus. Geben Sie Ihr Hauptkonto ein oder wählen Sie es aus und fügen Sie dann die Rolle „Vertex AI-Nutzer“ hinzu und SPEICHERN, wie in der folgenden Abbildung dargestellt:

c6d26238f3d57a45.png

Kehren Sie nun zum Colab-Tab zurück und geben Sie das folgende Code-Snippet in die zweite Zelle der aktuellen Arbeitsdatei ein. Dadurch wird die Authentifizierung geprüft.

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

Sie werden aufgefordert, den Zugriff zu erlauben. Machen Sie weiter.

3. Initialisieren und importieren

Initialisieren Sie Ihr Projekt, indem Sie das folgende Snippet in die nächste Zelle eingeben.

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

Bibliotheken für die Lösung importieren

Verwenden Sie diese Befehle, um die erforderlichen Bibliotheken zu importieren.

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

Vertex AI-LLM-Modell initialisieren

Verwenden Sie dieses Code-Snippet, um das Vertex AI-LLM-Modell zu initialisieren. Damit wird „llm“ initialisiert. mit dem Text-Bison-Modell von 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. Einbettungen initiieren

Wir verwenden die Vertex AI-Einbettungen, um die Videoblöcke in Einbettungen umzuwandeln. In diesem Teil des Codes initialisieren wir nur dasembeddings-Objekt. Im Abschnitt zum Speichern und Abrufen wenden wir die Einbettungen auf die aus dem Video erstellten Blöcke an.

Bei der Chunking-Funktion in generativer KI werden große Inhalte in kleinere, überschaubare Teile oder „Blöcke“ zerlegt. Das liegt daran, dass Generative-AI-Modelle nur eine begrenzte Anzahl von Daten haben, die gleichzeitig verarbeitet werden können. Durch das Aufteilen der Daten kann sich das Modell auf einzelne Chunks konzentrieren und genauere und kohärente Ausgaben generieren.

Mit Einbettungen können Inhalte als Zahlenvektor dargestellt werden. Dadurch können Computer die Bedeutung von Daten auf komplexere Weise verstehen als traditionelle Methoden, wie z. B. Szenenerkennung oder Keyframe-Extraktion, wenn es sich um Videos und Bag-of-Words oder um Sprachdaten handelt.

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. Video laden und aufteilen

Laden Sie das Video, um es zusammenzufassen oder Fragen zu stellen.

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

Video teilen

Teilen Sie das Video mit der Methode „Rekursiver Zeichenaufteilung“ in mehrere Teile auf.

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

6. Speichern und abrufen

Dokumente speichern

Für diese Übung verwenden wir ChromaDB. Sie können auch die Vektorsuche von Vertex AI verwenden. Speichern Sie Ihre Dokumente und indexieren Sie sie in ChromaDB als Vektorspeicher. ChromaDB wird zum Speichern und Abrufen von Vektoreinbettungen zur Verwendung mit LLMs und zur semantischen Suche von Daten verwendet.

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

Retriever-Kette erstellen

Erstelle eine Retriever-Kette, um die Frage zu beantworten. Hier verknüpfen wir das LLM des Vertex AI Text Bison-Modells und den Retriever, der die Einbettungen aus Chroma DB abruft.

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

7. Prompt definieren

Definieren Sie Ihren Prompt, um Fragen zu stellen und Antworten aus den indexierten Inhalten zu erhalten.

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. LLM-Anwendung einbinden

Integrieren Sie die LLM-Anwendung in Gradio, um eine visuelle Frontend-Interaktion zu ermöglichen.

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. Lösung testen

Jetzt testen wir die Lösung. Führen Sie die Zelle mit dem obigen Code aus. Sehen Sie sich entweder die Benutzeroberfläche im Zellenergebnis an oder klicken Sie auf den generierten Link. Sie sollten die Benutzeroberfläche mit den Input-Output-Komponenten visualisieren können. Geben Sie eine Frage zum Video ein und sehen Sie sich die Modellantwort an.

825c38058aab0aae.png

Damit können wir jetzt YouTube-Videos einbinden und mit PaLM API-Modellen von Vertex AI analysieren. Sie können dies auf die Einbindung in Datenbanken oder Data Warehouses erweitern. Weitere Informationen zu verfügbaren Modellen finden Sie in der Produktdokumentation zu Vertex AI LLM.

10. Glückwunsch!

Glückwunsch! Sie haben erfolgreich ein Vertex AI Text Generation LLM programmatisch verwendet, um nur mithilfe von SQL-Abfragen Textanalysen an Ihren Daten durchzuführen. Weitere Informationen zu verfügbaren Modellen finden Sie in der Produktdokumentation zu Vertex AI LLM.