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:
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.
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.