1. Giới thiệu
Tìm hiểu cách phân tích lượt xem của Bên kiểm thử trên YouTube về bất kỳ công ty hoặc sản phẩm nào bằng các tính năng dựa trên AI tạo sinh của Google.
Với sự ra đời của các LLM khai thác thông tin chi tiết từ nhiều nguồn như bảng cân đối kế toán, lượt xem trên các nền tảng mạng xã hội, ý kiến của người ảnh hưởng trở nên dễ dàng hơn.
Những người ảnh hưởng trên mạng xã hội, đặc biệt là trong lĩnh vực Công nghệ và Tài chính ngày càng được coi là nhân tố chủ chốt của một tổ chức hoặc đối thủ cạnh tranh của tổ chức đó sản phẩm và Google Cloud.
Sản phẩm bạn sẽ tạo ra
Trong lớp học lập trình này, bạn sẽ khám phá cách mô hình PaLM2 trong VertexAI và Langchain kết hợp với nhau để tạo ra giải pháp phân tích người ảnh hưởng trên YouTube.
Môi trường
Truy cập vào https://colab.research.google.com/#create=true để tạo một sổ tay mới trong môi trường hộp cát của Google Colab.
2. Cài đặt gói và xác thực
Trong ô đầu tiên trong sổ tay mới, hãy dùng các lệnh sau để cài đặt các gói cần thiết.
!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
Thao tác này sẽ nhắc bạn khởi động lại máy thời gian chạy sau khi cài đặt các gói trên. Nhấp vào Khởi động lại thời gian chạy hoặc chọn Khởi động lại thời gian chạy trên trình đơn Thời gian chạy.
Xác thực tài khoản Google Cloud
Tài khoản của bạn cần có vai trò người dùng Vertex AI.
- Mở bảng điều khiển Google Cloud rồi tìm dịch vụ quản lý danh tính và quyền truy cập (IAM) và dịch vụ quản trị viên. Trong thẻ CHO PHÉP bên dưới mục VIEW BY CHUẨN BỊ, hãy chọn CẤP QUYỀN TRUY CẬP. Nhập / chọn tên chính rồi thêm vai trò "Người dùng Vertex AI" và LƯU, như trong hình dưới đây:
Bây giờ, hãy quay lại thẻ colab rồi nhập đoạn mã dưới đây vào ô thứ hai của tệp đang làm việc. Thao tác này sẽ kiểm tra việc xác thực.
from google.colab import auth as google_auth
google_auth.authenticate_user()
Thao tác này sẽ nhắc bạn cấp quyền truy cập. Hãy tiếp tục làm như vậy.
3. Khởi chạy và nhập
Khởi chạy dự án bằng cách nhập đoạn mã dưới đây vào ô tiếp theo.
import vertexai
PROJECT_ID = "<projectid>" #enter your project id here
vertexai.init(project=PROJECT_ID)
Nhập thư viện cho giải pháp
Hãy dùng những lệnh sau để nhập thư viện cần thiết.
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
Khởi chạy mô hình mô hình ngôn ngữ lớn (LLM) của Vertex AI
Sử dụng đoạn mã này để khởi tạo mô hình LLM (mô hình ngôn ngữ lớn) của Vertex AI. Thao tác này sẽ khởi chạy "llm" dựa trên mô hình Text-Bison của 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. Bắt đầu nhúng
Chúng ta sẽ sử dụng các mục nhúng Vertex AI để chuyển đổi các đoạn video thành các mục nhúng. Trong phần mã này, chúng ta sẽ chỉ khởi tạo đối tượng mục nhúng. Trong phần Cửa hàng và truy xuất, chúng ta sẽ áp dụng các mục nhúng cho các đoạn được tạo từ video.
Chia nhỏ nội dung trong AI tạo sinh là quá trình chia nhỏ nội dung lớn thành các phần nhỏ hơn, dễ quản lý. Việc này là do các mô hình AI tạo sinh có giới hạn về lượng dữ liệu có thể xử lý cùng một lúc. Bằng cách phân đoạn dữ liệu, mô hình có thể tập trung vào một đoạn tại một thời điểm và tạo ra kết quả chính xác và mạch lạc hơn.
Nhúng là cách trình bày nội dung dưới dạng vectơ số. Điều này cho phép máy tính hiểu ý nghĩa của dữ liệu theo cách tinh vi hơn so với các phương pháp truyền thống, chẳng hạn như phát hiện cảnh quay hoặc trích xuất khung hình chính (đối với video và túi từ) nếu đó là dữ liệu ngôn ngữ.
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. Tải và phân đoạn video
Tải video để tóm tắt hoặc đặt câu hỏi.
loader = YoutubeLoader.from_youtube_url("https://www.youtube.com/watch?v=A8jyW_6hCGU&t=161s", add_video_info=True)
result = loader.load()
Tách video
Chia video thành nhiều phần bằng kỹ thuật tách ký tự đệ quy.
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1500, chunk_overlap=0)
docs = text_splitter.split_documents(result)
print(f"# of documents = {len(docs)}")
6. Lưu trữ và truy xuất
Lưu trữ tài liệu
Đối với bài tập này, chúng ta sẽ sử dụng ChromaDB. Bạn cũng có thể dùng công cụ Tìm kiếm vectơ của Vertex AI. Lưu trữ các tài liệu và lập chỉ mục các tài liệu đó trong ChromaDB dưới dạng kho lưu trữ vectơ. ChromaDB được dùng để lưu trữ và truy xuất các mục nhúng vectơ để sử dụng với các mô hình ngôn ngữ lớn (LLM) và thực hiện việc tìm kiếm ngữ nghĩa qua dữ liệu.
db = Chroma.from_documents(docs, embeddings)
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": 2})
Tạo chuỗi truy xuất
Tạo một chuỗi truy xuất dữ liệu để trả lời câu hỏi. Đây là nơi chúng tôi liên kết LLM Text Bison của Vertex AI và trình truy xuất giúp truy xuất các mục nhúng từ Chroma DB.
qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True)
7. Xác định câu lệnh của bạn
Xác định lời nhắc đặt câu hỏi và nhận câu trả lời từ nội dung đã được lập chỉ mục.
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. Tích hợp ứng dụng LLM (mô hình ngôn ngữ lớn)
Tích hợp ứng dụng LLM (mô hình ngôn ngữ lớn) với Gradio để tương tác trực quan ở giao diện người dùng.
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. Kiểm thử giải pháp
Giờ hãy tiếp tục kiểm thử giải pháp. Chạy ô chứa mã ở trên. Xem giao diện người dùng trong kết quả ô hoặc nhấp vào đường liên kết được tạo. Bạn có thể trực quan hoá giao diện bằng các thành phần đầu vào – đầu ra. Nhập một câu hỏi lên video và xem phản hồi của mô hình.
Nhờ vậy, giờ đây chúng tôi có thể tích hợp và phân tích các video trên YouTube bằng các mô hình Vertex AI PaLM API. Bạn có thể mở rộng phạm vi để tích hợp với cơ sở dữ liệu hoặc kho dữ liệu. Hãy xem tài liệu về sản phẩm mô hình ngôn ngữ lớn (LLM) trong Vertex AI để tìm hiểu thêm về các mô hình có sẵn.
10. Xin chúc mừng!
Xin chúc mừng! Bạn đã sử dụng thành công một mô hình ngôn ngữ lớn (LLM) dùng để tạo văn bản Vertex AI theo phương thức lập trình để chỉ phân tích văn bản trên dữ liệu bằng các truy vấn SQL. Hãy xem tài liệu về sản phẩm LLM (mô hình ngôn ngữ lớn) của Vertex AI để tìm hiểu thêm về các mô hình hiện có.