Generative KI für Videoanalysen mit Vertex AI

1. Einführung

Hier erfahren Sie, wie Sie mit den generativen KI-Funktionen von Google die Ansichten von Influencern auf YouTube zu einem beliebigen Unternehmen oder Produkt analysieren können.

Mit dem Aufkommen von LLMs, die Erkenntnisse aus einer Vielzahl von Quellen wie Bilanzen und Ansichten auf Social-Media-Plattformen gewinnen, ist es noch einfacher geworden, die Meinungen von Influencern zu berücksichtigen.

Social-Media-Influencer, insbesondere in der Tech- und Finanzwelt, werden zunehmend als wichtige Befürworter eines Unternehmens oder der Produkte und Richtlinien seiner Wettbewerber angesehen.

Aufgaben

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

Umgebung

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

2. Pakete installieren und authentifizieren

Verwenden Sie in der ersten Zelle des neuen Notebooks diese Befehle, 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

Sie werden aufgefordert, die Laufzeitmaschine nach der Installation der oben genannten Pakete neu zu starten. Klicken Sie auf „Laufzeit neu starten“ oder wählen Sie im Menü „Laufzeit“ die Option „Laufzeit neu starten“ aus.

Google Cloud-Konto authentifizieren

Ihr Konto muss die Rolle Vertex AI-Nutzer haben.

  • Öffnen Sie die Google Cloud Console und suchen Sie nach dem Dienst „IAM und Verwaltung“. Wählen Sie auf dem Tab „BERECHTIGUNGEN“ unter „NACH HAUPTKONTEN ANSEHEN“ 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 klicken Sie auf „SPEICHERN“, wie in der Abbildung unten gezeigt:

c6d26238f3d57a45.png

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

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

Sie werden aufgefordert, den Zugriff zuzulassen. Fahren Sie damit fort.

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. Dadurch wird „llm“ mit dem Text-Bison-Modell von Vertex AI initialisiert.

!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 Video-Chunks in Einbettungen umzuwandeln. In diesem Teil des Codes initialisieren wir nur das Einbettungsobjekt. Im Abschnitt „Speichern und abrufen“ wenden wir die Einbettungen auf die aus dem Video erstellten Chunks an.

Chunking in der generativen KI ist der Prozess, bei dem große Inhalte in kleinere, überschaubare Teile oder „Chunks“ aufgeteilt werden. Das ist erforderlich, da generative KI-Modelle nur eine begrenzte Menge an Daten gleichzeitig verarbeiten können. Durch das Chunking der Daten kann sich das Modell jeweils auf einen Chunk konzentrieren und genauere und kohärentere Ergebnisse generieren.

Einbettungen sind eine Möglichkeit, Inhalte als Vektor von Zahlen darzustellen. So können Computer die Bedeutung von Daten auf eine anspruchsvollere Weise verstehen als mit herkömmlichen Methoden wie der Szenenerkennung oder der Keyframe-Extraktion bei Videos und dem Bag-of-Words-Ansatz bei Sprachdaten.

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 in Chunks aufteilen

Laden Sie das Video, um es zusammenzufassen oder Fragen dazu 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 aufteilen

Teilen Sie das Video mit der Recursive Character Splitter-Technik in mehrere Chunks 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 Vertex AI-Vektorsuche verwenden. Speichern Sie Ihre Dokumente und indexieren Sie sie in ChromaDB als Vektorspeicher. ChromaDB wird verwendet, um Vektoreinbettungen für die Verwendung mit LLMs zu speichern und abzurufen und um semantische Suchen in Daten durchzuführen.

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

Abruferkette erstellen

Erstellen Sie eine Abruferkette, um die Frage zu beantworten. Hier verknüpfen wir das Vertex AI Text Bison-Modell LLM und den Abrufer, 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 integrieren

Integrieren Sie die LLM-Anwendung mit Gradio für eine visuelle Frontend-Interaktion.

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 oben genannten Code aus. Sie können die Benutzeroberfläche entweder im Zellenergebnis ansehen oder auf den generierten Link klicken. Sie sollten die Benutzeroberfläche mit den Eingabe- und Ausgabekomponenten visualisieren können. Geben Sie eine Frage zum Video ein und sehen Sie sich die Antwort des Modells an.

825c38058aab0aae.png

So können wir jetzt YouTube-Videos einbinden und mit den Vertex AI PaLM API-Modellen analysieren. Sie können dies weiter ausbauen, um Datenbanken oder Data Warehouses zu integrieren. Weitere Informationen zu den verfügbaren Modellen finden Sie in der Produktdokumentation zu Vertex AI LLM.

10. Glückwunsch!

Glückwunsch! Sie haben ein Vertex AI Text Generation LLM-Programm erfolgreich verwendet, um Textanalysen für Ihre Daten durchzuführen und dabei nur SQL-Abfragen verwendet. Weitere Informationen zu den verfügbaren Modellen finden Sie in der Produktdokumentation zu Vertex AI LLM.