1. Giriş
Google'ın üretken yapay zeka özelliklerini kullanarak YouTube'daki influencer'ların herhangi bir şirket veya ürünle ilgili görüşlerini nasıl analiz edeceğinizi öğrenin.
Büyük dil modellerinin ortaya çıkmasıyla birlikte bilançolar, sosyal medya platformlarındaki görüşler ve influencer'ların fikirleri gibi çok çeşitli kaynaklardan elde edilen analizlerden yararlanmak daha da kolaylaştı.
Özellikle teknoloji ve finans dünyasındaki sosyal medya etkileyicileri, bir kuruluşun veya rakiplerinin ürün ve politikalarının önemli savunucuları olarak giderek daha fazla görülmektedir.
Ne oluşturacaksınız?
Bu codelab'de, Vertex AI ve Langchain'deki PaLM2 modelinin YouTube influencer analizi çözümü için nasıl birlikte çalıştığını keşfedeceksiniz.
Ortam
Google Colab korumalı alan ortamında yeni bir not defteri oluşturmak için https://colab.research.google.com/#create=true adresine gidin.
2. Paketleri yükleme ve kimlik doğrulama
Yeni not defterinin ilk hücresinde, gerekli paketleri yüklemek için bu komutları kullanın.
!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
Yukarıdaki paketleri yükledikten sonra çalışma zamanı makinesini yeniden başlatmanız istenir. ÇALIŞMA ZAMANINI YENİDEN BAŞLAT'ı tıklayın veya Çalışma Zamanı menüsünden Çalışma zamanını yeniden başlat'ı seçin.
Google Cloud hesabınızın kimliğini doğrulama
Hesabınızda Vertex AI kullanıcısı rolü olmalıdır.
- Google Cloud Console'u açın ve IAM ve Yönetici hizmetini arayın. VIEW BY PRINCIPALS (ANA HESAPLARA GÖRE GÖRÜNÜM) bölümündeki PERMISSIONS (İZİNLER) sekmesinde GRANT ACCESS'i (ERİŞİME İZİN VER) seçin. Müdürünüzü girin / seçin, ardından aşağıdaki resimde gösterildiği gibi "Vertex AI Kullanıcısı" rolünü ekleyip KAYDET'i tıklayın:

Şimdi Colab sekmesine geri dönün ve aşağıdaki kod snippet'ini mevcut çalışma dosyasındaki ikinci hücreye girin. Bu işlem, kimlik doğrulama olup olmadığını kontrol eder.
from google.colab import auth as google_auth
google_auth.authenticate_user()
Erişime izin vermeniz istenir. Bu şekilde devam edin.
3. İlk kullanıma hazırlama ve içe aktarma
Aşağıdaki snippet'i bir sonraki hücreye girerek projenizi başlatın.
import vertexai
PROJECT_ID = "<projectid>" #enter your project id here
vertexai.init(project=PROJECT_ID)
Çözüm için kitaplıkları içe aktarın.
Gerekli kitaplıkları içe aktarmak için bu komutları kullanın.
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 modelini başlatma
Vertex AI LLM modelini başlatmak için bu kod snippet'ini kullanın. Bu işlem, "llm"yi Vertex AI'ın Text-Bison modeliyle başlatır.
!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. Yerleştirilmiş öğeler oluşturma
Video parçalarını yerleştirmelere dönüştürmek için Vertex AI yerleştirmelerini kullanacağız. Kodun bu bölümünde yalnızca yerleştirme nesnesini başlatacağız. Depolama ve alma bölümünde, yerleştirmeleri videodan oluşturulan parçalara uygularız.
Üretken yapay zekada parçalama, büyük içerikleri daha küçük ve yönetilebilir parçalara ayırma işlemidir. Bunun nedeni, üretken yapay zeka modellerinin aynı anda işleyebileceği veri miktarının sınırlı olmasıdır. Model, verileri parçalara ayırarak her seferinde bir parçaya odaklanabilir ve daha doğru ve tutarlı sonuçlar üretebilir.
Yerleştirmeler, içeriği sayı vektörü olarak temsil etmenin bir yoludur. Bu sayede bilgisayarlar, videolar için çekim algılama veya anahtar kare ayıklama, dil verileri için ise kelime torbası gibi geleneksel yöntemlere kıyasla verilerin anlamını daha gelişmiş bir şekilde anlayabilir.
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. Videoyu yükleme ve parçalara ayırma
Özetlemek veya soru sormak istediğiniz videoyu yükleyin.
loader = YoutubeLoader.from_youtube_url("https://www.youtube.com/watch?v=A8jyW_6hCGU&t=161s", add_video_info=True)
result = loader.load()
Videoyu bölme
Recursive Character Splitter tekniğini kullanarak videoyu birden fazla parçaya bölün.
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1500, chunk_overlap=0)
docs = text_splitter.split_documents(result)
print(f"# of documents = {len(docs)}")
6. Depolama ve alma
Dokümanlarınızı saklama
Bu alıştırmada ChromaDB'yi kullanıyoruz. Vertex AI Vector Search'ü de kullanabilirsiniz. Dokümanlarınızı ChromaDB'de vektör deposu olarak saklayın ve dizine ekleyin. ChromaDB, LLM'lerle kullanılmak üzere vektör yerleştirmelerini depolamak ve almak, ayrıca veriler üzerinde semantik arama yapmak için kullanılır.
db = Chroma.from_documents(docs, embeddings)
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": 2})
Alıcı zinciri oluşturma
Soruyu yanıtlamak için bir alıcı zinciri oluşturun. Bu adımda, Vertex AI Text Bison modeli LLM'yi ve yerleştirilmiş öğeleri Chroma DB'den alan alıcıyı ilişkilendiririz.
qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True)
7. İsteminizi tanımlama
Dizinlenmiş içerikte soru sormak ve yanıt almak için isteminizi tanımlayın.
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 uygulamasını entegre edin
Görsel bir kullanıcı arabirimi etkileşimi için LLM uygulamasını Gradio ile entegre edin.
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. Çözümü test edin
Şimdi çözümü test etmeye geçelim. Yukarıdaki kodu içeren hücreyi çalıştırın. Kullanıcı arayüzünü hücre sonucunda görüntüleyin veya oluşturulan bağlantıyı tıklayın. Arayüzü giriş-çıkış bileşenleriyle birlikte görselleştirebilmeniz gerekir. Videoyla ilgili bir soru girin ve modelin yanıtını görüntüleyin.

Bu sayede artık YouTube videolarını entegre edip Vertex AI PaLM API modellerini kullanarak analiz edebiliriz. Bunu veritabanları veya veri ambarlarıyla entegrasyon için daha da genişletebilirsiniz. Kullanılabilir modeller hakkında daha fazla bilgi edinmek için Vertex AI LLM ürün belgelerine bakın.
10. Tebrikler!
Tebrikler! Yalnızca SQL sorgularını kullanarak verilerinizde metin analizi yapmak için Vertex AI Text Generation LLM'yi programatik olarak başarıyla kullandınız. Mevcut modeller hakkında daha fazla bilgi edinmek için Vertex AI LLM ürün belgelerine göz atın.