Generatywna AI w statystykach filmów z Vertex AI

1. Wprowadzenie

Dowiedz się, jak analizować poglądy Inluencerów w YouTube na temat dowolnej firmy lub usługi przy użyciu funkcji generatywnej AI od Google.

Dzięki pojawieniu się modeli LLM na podstawie statystyk z wielu różnych źródeł, takich jak bilanse czy wyświetlenia w mediach społecznościowych, opinie influencerów stały się jeszcze łatwiejsze.

Influencerzy z mediów społecznościowych, głównie z branży technologicznej Świat finansów jest coraz częściej postrzegany jako najważniejsi przedstawiciele organizacji lub jej konkurentów produkty i .

Co utworzysz

Podczas tego ćwiczenia w programie dowiesz się, jak model PaLM2 w Vertex AI i Langchain działa na potrzeby narzędzia do analizy influencerów w YouTube.

Środowisko

Wejdź na https://colab.research.google.com/#create=true, aby utworzyć nowy notatnik w środowisku piaskownicy Google Colab.

2. Instaluj pakiety i uwierzytelniaj się

W pierwszej komórce nowego notatnika zainstaluj wymagane pakiety za pomocą tych poleceń.

!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

Po zainstalowaniu powyższych pakietów pojawi się prośba o ponowne uruchomienie środowiska wykonawczego. Kliknij Uruchom ponownie środowisko wykonawcze lub wybierz Uruchom ponownie środowisko wykonawcze z menu Środowisko wykonawcze.

Uwierzytelnianie konta Google Cloud

Twoje konto powinno mieć przypisaną rolę użytkownika Vertex AI.

  • Otwórz konsolę Google Cloud i wyszukaj Uprawnienia oraz usługę Administracja. Na karcie UPRAWNIENIA w sekcji WYŚWIETL WEDŁUG PODMIOTÓW wybierz PRZYZNAJ DOSTĘP. Wpisz lub wybierz podmiot zabezpieczeń, a następnie dodaj rolę „Użytkownik Vertex AI” i ZAPISZ, tak jak na ilustracji poniżej:

c6d26238f3d57a45.png

Teraz wróć na kartę Colab i wpisz poniższy fragment kodu w drugiej komórce bieżącego pliku roboczego. Spowoduje to sprawdzenie uwierzytelniania.

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

Pojawi się prośba o zezwolenie na dostęp. Kontynuuj.

3. Inicjowanie i importowanie

Zainicjuj swój projekt, wpisując w następnej komórce poniższy fragment kodu.

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

Importowanie bibliotek do rozwiązania

Za pomocą tych poleceń zaimportuj wymagane biblioteki.

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

Inicjowanie modelu LLM Vertex AI

Użyj tego fragmentu kodu, aby zainicjować model LLM Vertex AI. Spowoduje to inicjalizację kodu „llm” modelem Text-Bison w 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. Rozpocznij wektory dystrybucyjne

Użyjemy wektorów dystrybucyjnych Vertex AI, aby przekonwertować fragmenty wideo na wektory dystrybucyjne. W tej części kodu zainicjujemy tylko obiekt wektorów dystrybucyjnych. W sekcji Sklep i pobieranie zastosujemy wektory dystrybucyjne do fragmentów utworzonych z filmu.

Dzielenie treści na fragmenty w generatywnej AI to proces dzielenia dużych treści na mniejsze, łatwe do opanowania fragmenty. Jest to spowodowane tym, że modele generatywnej AI mają ograniczenia dotyczące ilości danych, które mogą przetworzyć jednocześnie. Dzięki dzieleniu danych na fragmenty model może skupić się na jednym fragmencie naraz i generować dokładniejsze i spójniejsze dane wyjściowe.

Wektory dystrybucyjne to sposób przedstawienia treści w postaci wektora liczb. Dzięki temu komputery mogą rozumieć znaczenie danych w bardziej zaawansowany sposób niż tradycyjne metody, takie jak wykrywanie ujęć czy wyodrębnianie klatek kluczowych, zarówno w przypadku filmów, jak i toreb słów kluczowych (w przypadku danych językowych).

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. Wczytanie filmu i podzielenie go na fragmenty

Wczytaj film, aby podsumować go lub zadać pytanie.

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

Podziel film

Podziel film na kilka fragmentów za pomocą metody dzielenia znaków rekurencyjnych.

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

6. Przechowywanie i pobieranie

Przechowywanie dokumentów

W tym ćwiczeniu używamy ChromaDB. Możesz też korzystać z wyszukiwania wektorowego Vertex AI. Przechowuj dokumenty i indeksuj je w ChromaDB jako magazyn wektorowy. ChromaDB służy do przechowywania i pobierania wektorów dystrybucyjnych wektorów do użytku z LLM oraz do wyszukiwania semantycznego danych.

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

Utwórz łańcuch retrievera

Utwórz łańcuch retrievera, aby odpowiedzieć na to pytanie. W tym miejscu kojarzymy model LLM Text Bison w Vertex AI z narzędziem do pobierania, które pobiera wektory dystrybucyjne z bazy danych Chroma.

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

7. Zdefiniuj prompt

Zdefiniuj prompt, aby zadawać pytania i uzyskiwać odpowiedzi na podstawie zindeksowanych treści.

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. Zintegruj aplikację LLM

Zintegruj aplikację LLM z Gradio, aby zapewnić wizualny interfejs użytkownika.

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. Testowanie rozwiązania

Teraz przetestujmy to rozwiązanie. Uruchom kod z komórki zawierającej powyższy kod. Wyświetl interfejs w wyniku komórki lub kliknij wygenerowany link. Możesz zwizualizować interfejs, używając komponentów wejściowych i wyjściowych. Zadaj pytanie na filmie i wyświetl odpowiedź modelu.

825c38058aab0aae.png

Dzięki temu możemy integrować filmy z YouTube i analizować je za pomocą modeli interfejsu Vertex AI PaLM API. Możesz rozszerzyć ten zakres, aby zintegrować go z bazami danych lub hurtowniami danych. Więcej informacji o dostępnych modelach znajdziesz w dokumentacji usługi Vertex AI LLM.

10. Gratulacje!

Gratulacje! Udało Ci się automatycznie użyć modelu LLM do generowania tekstu w Vertex AI do przeprowadzania analizy tekstu na danych tylko przy użyciu zapytań SQL. Więcej informacji o dostępnych modelach znajdziesz w dokumentacji usługi Vertex AI LLM.