1. Wprowadzenie
Dowiedz się, jak analizować wyświetlenia filmów influencerów w YouTube dotyczących dowolnej firmy lub produktu za pomocą generatywnej AI od Google.
Dzięki pojawieniu się LLM, które wykorzystują informacje z różnych źródeł, takich jak bilanse, wyświetlenia na platformach mediów społecznościowych czy opinie influencerów, stało się to jeszcze łatwiejsze.
Osoby wpływowe w mediach społecznościowych, zwłaszcza w świecie technologii i finansów, są coraz częściej postrzegane jako kluczowi zwolennicy organizacji lub produktów i zasad jej konkurentów.
Co utworzysz
W tym ćwiczeniu dowiesz się, jak model PaLM2 w Vertex AI i Langchain współpracują ze sobą w rozwiązaniu do analizy danych o influencerach w YouTube.
Środowisko
Aby utworzyć nowy notatnik w środowisku piaskownicy Google Colab, otwórz stronę https://colab.research.google.com/#create=true.
2. Instalowanie pakietów i uwierzytelnianie
W pierwszej komórce nowego notatnika użyj tych poleceń, aby zainstalować wymagane pakiety.
!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 maszyny środowiska wykonawczego. Kliknij URUCHOM PONOWNIE ŚRODOWISKO WYKONAWCZE lub wybierz Uruchom ponownie środowisko wykonawcze w menu Środowisko wykonawcze.
Uwierzytelnianie konta Google Cloud
Twoje konto powinno mieć rolę użytkownika Vertex AI.
- Otwórz konsolę Google Cloud i wyszukaj usługę Uprawnienia i Administracja. Na karcie UPRAWNIENIA w sekcji WYŚWIETL WEDŁUG PODMIOTÓW ZABEZPIECZEŃ kliknij PRZYZNAJ DOSTĘP. Wpisz lub wybierz podmiot zabezpieczeń, a następnie dodaj rolę „Użytkownik Vertex AI” i kliknij ZAPISZ, jak pokazano na ilustracji poniżej:

Wróć teraz na kartę Colab i w drugiej komórce bieżącego pliku roboczego wpisz ten fragment kodu. 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. Rób to dalej.
3. Inicjowanie i importowanie
Zainicjuj 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)
Zaimportuj biblioteki dla rozwiązania
Użyj tych poleceń, aby zaimportować 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. Inicjuje to zmienną „llm” za pomocą modelu 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. Inicjowanie wektorów dystrybucyjnych
Użyjemy wektorów dystrybucyjnych Vertex AI, aby przekształcić fragmenty filmu w wektory dystrybucyjne. W tej części kodu zainicjujemy tylko obiekt osadzania. W sekcji przechowywania i pobierania zastosujemy embeddingi do fragmentów utworzonych z filmu.
Dzielenie na części w generatywnej AI to proces dzielenia dużych treści na mniejsze, łatwe do zarządzania części. Dzieje się tak, ponieważ modele generatywnej AI mają ograniczenia dotyczące ilości danych, które mogą przetwarzać jednocześnie. Dzieląc dane na części, model może skupić się na jednej z nich i generować dokładniejsze i spójniejsze wyniki.
Wektory dystrybucyjne to sposób reprezentowania treści jako wektora liczb. Dzięki temu komputery mogą rozumieć znaczenie danych w bardziej zaawansowany sposób niż w przypadku tradycyjnych metod, takich jak wykrywanie ujęć lub wyodrębnianie kluczowych klatek (w przypadku filmów) czy model bag-of-words (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. Wczytaj i podziel film na części
Wczytaj film, który chcesz podsumować lub z którego chcesz zadać pytania.
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 części za pomocą techniki Recursive Character Splitter.
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ż użyć wyszukiwania wektorowego w Vertex AI. Przechowuj dokumenty i indeksuj je w ChromaDB jako bazę wektorową. ChromaDB służy do przechowywania i pobierania wektorów dystrybucyjnych do użytku z modelami LLM oraz do przeprowadzania wyszukiwania semantycznego w danych.
db = Chroma.from_documents(docs, embeddings)
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": 2})
Tworzenie łańcucha pobierania
Utwórz łańcuch pobierania, aby odpowiedzieć na pytanie. W tym miejscu łączymy model LLM Vertex AI Text Bison i retriever, który pobiera wektory dystrybucyjne z Chroma DB.
qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True)
7. Określ prompt
Określ prompt, aby zadawać pytania i uzyskiwać odpowiedzi z indeksowanych 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. Integracja aplikacji LLM
Zintegruj aplikację LLM z Gradio, aby uzyskać 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
Przetestujmy teraz rozwiązanie. Uruchom komórkę zawierającą powyższy kod. Wyświetl interfejs w wyniku komórki lub kliknij wygenerowany link. Powinien być widoczny interfejs z komponentami wejścia-wyjścia. Wpisz pytanie dotyczące filmu i wyświetl odpowiedź modelu.

Dzięki temu możemy teraz integrować filmy z YouTube i analizować je za pomocą modeli interfejsu Vertex AI PaLM API. Możesz rozszerzyć tę funkcję, aby zintegrować ją z bazami danych lub hurtowniami danych. Więcej informacji o dostępnych modelach znajdziesz w dokumentacji produktu Vertex AI LLM.
10. Gratulacje!
Gratulacje! Udało Ci się użyć modelu LLM do generowania tekstu w Vertex AI w sposób zautomatyzowany, aby przeprowadzić analitykę tekstu na podstawie danych przy użyciu tylko zapytań SQL. Więcej informacji o dostępnych modelach znajdziesz w dokumentacji produktu Vertex AI LLM.