1. מבוא
רוצים לדעת איך לנתח את הצפיות של משפיענים ב-YouTube בכל חברה או מוצר באמצעות יכולות ה-AI הגנרטיבי של Google?
עם התפתחות של מודלים גדולים של שפה (LLM), קל יותר להפיק תובנות ממגוון רחב של מקורות, כמו מאזנים, צפיות בפלטפורמות של מדיה חברתית ודעות של משפיענים.
משפיענים ברשתות החברתיות, במיוחד בתחום הטכנולוגיה והפיננסים, נתפסים יותר ויותר כדמויות מרכזיות שמקדמות ארגון או את המוצרים והמדיניות של המתחרים שלו.
מה תפַתחו
ב-Codelab הזה נסביר איך משתמשים במודל PaLM2 ב-VertexAI וב-Langchain כדי ליצור פתרון לניתוח נתונים של משפיענים ב-YouTube.
סביבה
כדי ליצור notebook חדש בסביבת ארגז החול של Google Colab, עוברים אל https://colab.research.google.com/#create=true.
2. התקנת חבילות ואימות
בתא הראשון במחברת החדשה, משתמשים בפקודות האלה כדי להתקין את החבילות הנדרשות.
!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
אחרי שתתקינו את החבילות שלמעלה, תופיע בקשה להפעיל מחדש את מכונת זמן הריצה. לוחצים על 'הפעלה מחדש של זמן הריצה' או בוחרים באפשרות 'הפעלה מחדש של זמן הריצה' בתפריט 'זמן ריצה'.
אימות חשבון Google Cloud
לחשבון שלכם צריך להיות התפקיד משתמש ב-Vertex AI.
- פותחים את מסוף Google Cloud ומחפשים את השירות IAM and Admin. בכרטיסייה PERMISSIONS (הרשאות) בקטע VIEW BY PRINCIPALS (תצוגה לפי ישויות), בוחרים באפשרות GRANT ACCESS (הענקת גישה). מזינים או בוחרים את הגורם הראשי, מוסיפים את התפקיד Vertex AI User (משתמש ב-Vertex AI) ולוחצים על SAVE (שמירה), כמו שמוצג בתמונה שלמטה:

עכשיו חוזרים לכרטיסיית Colab ומזינים את קטע הקוד שבהמשך בתא השני בקובץ העבודה הנוכחי. הפעולה הזו תבדוק את האימות.
from google.colab import auth as google_auth
google_auth.authenticate_user()
תופיע בקשה לאפשר גישה. תמשיכו לעשות את זה.
3. התחלה וייבוא
מאתחלים את הפרויקט על ידי הזנת קטע הקוד שבהמשך בתא הבא.
import vertexai
PROJECT_ID = "<projectid>" #enter your project id here
vertexai.init(project=PROJECT_ID)
ייבוא הספריות של הפתרון
משתמשים בפקודות האלה כדי לייבא את הספריות הנדרשות.
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
הפעלת מודל LLM של Vertex AI
משתמשים בקטע הקוד הזה כדי לאתחל את מודל ה-LLM של Vertex AI. הפעולה הזו מאתחלת את llm עם מודל Text-Bison של 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. הפעלת הטמעות
נשתמש בהטמעות של Vertex AI כדי להמיר את חלקי הסרטון להטמעות. בחלק הזה של הקוד, נאכלס רק את אובייקט ההטמעות. בקטע של אחסון ושליפה, נחיל את ההטמעות על החלקים שנוצרו מהסרטון.
חלוקה לחלקים ב-AI גנרטיבי היא תהליך של פירוק תוכן גדול לחלקים קטנים יותר ונוחים לניהול. הסיבה לכך היא שיש מגבלות על כמות הנתונים שמודלים של AI גנרטיבי יכולים לעבד בבת אחת. המודל יכול להתמקד בחלק אחד בכל פעם וליצור פלט מדויק ועקבי יותר.
הטמעות הן דרך לייצג תוכן כווקטור של מספרים. כך המחשבים יכולים להבין את משמעות הנתונים בצורה מתוחכמת יותר משיטות מסורתיות, כמו זיהוי סצנות או חילוץ פריים מרכזי, אם מדובר בסרטונים, או שיטת bag-of-words, אם מדובר בנתוני שפה.
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. טעינה וחלוקה של הסרטון לחלקים
טוענים את הסרטון שרוצים לסכם או לשאול עליו שאלות.
loader = YoutubeLoader.from_youtube_url("https://www.youtube.com/watch?v=A8jyW_6hCGU&t=161s", add_video_info=True)
result = loader.load()
פיצול הסרטון
מפצלים את הסרטון לכמה חלקים באמצעות הטכניקה 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. אחסון ואחזור
אחסון המסמכים
באימון הזה נשתמש ב-ChromaDB. אפשר גם להשתמש ב-Vertex AI Vector Search. אחסון המסמכים ואינדוקס שלהם ב-ChromaDB כמאגר וקטורים. משתמשים ב-ChromaDB כדי לאחסן ולאחזר הטמעות וקטורים לשימוש עם מודלים גדולים של שפה (LLM) וכדי לבצע חיפוש סמנטי בנתונים.
db = Chroma.from_documents(docs, embeddings)
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": 2})
יצירת שרשרת של מאחזרים
יוצרים שרשרת אחזור כדי לענות על השאלה. כאן אנחנו משייכים את מודל השפה הגדול (LLM) של Vertex AI Text Bison ואת כלי האחזור שמחלץ את ההטמעות מ-Chroma DB.
qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True)
7. הגדרת ההנחיה
מגדירים את ההנחיה כדי לשאול שאלות ולקבל תשובות מהתוכן שעבר אינדוקס.
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
משלבים את אפליקציית ה-LLM עם Gradio כדי ליצור אינטראקציה חזותית עם ממשק הקצה.
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. בדיקת הפתרון
עכשיו נבדוק את הפתרון. מריצים את התא שמכיל את הקוד שלמעלה. אפשר להציג את ממשק המשתמש בתוצאת התא או ללחוץ על הקישור שנוצר. אפשר לראות את הממשק עם רכיבי הקלט והפלט. מזינים שאלה לגבי הסרטון ורואים את התשובה של המודל.

כך אפשר לשלב סרטונים מ-YouTube ולנתח אותם באמצעות מודלים של Vertex AI PaLM API. אפשר להרחיב את זה עוד יותר כדי לשלב עם מסדי נתונים או מחסני נתונים. מידע נוסף על המודלים הזמינים מופיע בתיעוד המוצר Vertex AI LLM.
10. מעולה!
מעולה! השתמשתם בהצלחה בתוכנית Vertex AI Text Generation LLM באופן פרוגרמטי כדי לבצע ניתוח טקסט על הנתונים שלכם באמצעות שאילתות SQL בלבד. מידע נוסף על המודלים הזמינים מופיע בתיעוד המוצר של Vertex AI LLM.