1. 簡介
瞭解如何使用 Google 的生成式 AI 功能,分析任何公司或產品的 YouTube 影片觀看者觀看次數。
隨著 LLM 問世,大量來源 (如資產負債表和社群媒體平台的瀏覽次數) 的洞察資訊變得更加容易。
社群媒體網紅,特別是科技與金融業環境逐漸成為機構或競爭對手的主要利器產品與再檢查有關聯的允許政策
建構項目
在這個程式碼研究室中,您將探索 Vertex AI 和 Langchain 中的 PaLM2 模型如何相輔相成,供 YouTube 網紅數據分析解決方案使用。
環境
前往 https://colab.research.google.com/#create=true 在 Google Colab 沙箱環境中建立新的筆記本。
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 和管理員服務。在「依據文件檢視」下方的「權限」分頁中,選取「授予存取權」。輸入 / 選取主體,然後新增「Vertex AI 使用者」角色和「儲存」,如下圖所示:
現在請返回 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
初始化 Vertex AI LLM 模型
使用這個程式碼片段,初始化 Vertex AI 大型語言模型。這會初始化「llm」Vertex AI 的 Text-Bison 模型
!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 模型對一次可處理的資料量設有限制。只要將資料分塊,模型一次就能聚焦於一個區塊,並產生更準確且連貫的輸出內容。
嵌入是一種以數字向量表示內容的方式,這讓電腦能夠比傳統方法更精確地瞭解資料意涵,例如鏡頭偵測或主要畫面格擷取 (如果僅適用於語言資料)。
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()
分割影片
使用遞迴字元分割器技術將影片分成多個片段。
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})
建立擷取鏈
建立擷取鏈即可回答問題。我們會將 Vertex AI 文字 Bison 模型 LLM 與從 Chroma 資料庫擷取嵌入的擷取器建立關聯。
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 文字生成大型語言模型,只透過 SQL 查詢對資料執行文字分析。查看 Vertex AI 大型語言模型產品說明文件,進一步瞭解可用的模型。