هوش مصنوعی مولد برای تجزیه و تحلیل ویدیو با هوش مصنوعی Vertex

۱. مقدمه

یاد بگیرید که چگونه با استفاده از قابلیت‌های هوش مصنوعی نسل جدید گوگل، نظرات اینفلوئنسرها را در یوتیوب در مورد هر شرکت یا محصولی تجزیه و تحلیل کنید.

با ظهور LLM ها، بهره‌گیری از بینش‌های طیف گسترده‌ای از منابع مانند ترازنامه‌ها، نظرات در پلتفرم‌های رسانه‌های اجتماعی و نظرات اینفلوئنسرها آسان‌تر شده است.

اینفلوئنسرهای رسانه‌های اجتماعی، به ویژه در دنیای فناوری و امور مالی، به طور فزاینده‌ای به عنوان طرفداران اصلی یک سازمان یا محصولات و سیاست‌های رقبای آن دیده می‌شوند.

آنچه خواهید ساخت

در این آزمایشگاه کد، شما بررسی خواهید کرد که چگونه مدل PaLM2 در VertexAI و Langchain برای راهکار تجزیه و تحلیل اینفلوئنسرهای یوتیوب گرد هم می‌آیند.

محیط زیست

برای ایجاد یک دفترچه یادداشت جدید در محیط سندباکس گوگل کولب، به آدرس https://colab.research.google.com/#create=true بروید.

۲. بسته‌ها را نصب کنید و احراز هویت کنید

در اولین سلول در دفترچه یادداشت جدید، از این دستورات برای نصب بسته‌های مورد نیاز استفاده کنید.

!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

پس از نصب بسته‌های فوق، از شما خواسته می‌شود که ماشین زمان اجرا را مجدداً راه‌اندازی کنید. روی RESTART RUNTIME کلیک کنید یا از منوی Runtime، گزینه Restart runtime را انتخاب کنید.

حساب گوگل کلود خود را تأیید کنید

حساب کاربری شما باید نقش کاربری Vertex AI را داشته باشد.

  • کنسول گوگل کلود را باز کنید و سرویس IAM و Admin را جستجو کنید. در تب PERMISSIONS در قسمت VIEW BY PRINCPALS، گزینه GRANT ACCESS را انتخاب کنید. مدیر خود را وارد/انتخاب کنید و سپس نقش "Vertex AI User" را اضافه کرده و ذخیره کنید، همانطور که در تصویر زیر نشان داده شده است:

c6d26238f3d57a45.png

حالا به تب colab برگردید و قطعه کد زیر را در سلول دوم فایل فعلی وارد کنید. این کار احراز هویت را بررسی می‌کند.

from google.colab import auth as google_auth
google_auth.authenticate_user()

از شما خواسته می‌شود که اجازه دسترسی بدهید. این کار را ادامه دهید.

۳. مقداردهی اولیه و وارد کردن

با وارد کردن قطعه کد زیر در سلول بعدی، پروژه خود را آغاز کنید.

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 استفاده کنید. این کد، "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,
)

۴. شروع جاسازی‌ها

ما از تعبیه‌های هوش مصنوعی Vertex برای تبدیل تکه‌های ویدیو به جاسازی‌ها استفاده خواهیم کرد. در این بخش از کد، فقط شیء جاسازی‌ها را مقداردهی اولیه می‌کنیم. در بخش ذخیره و بازیابی، جاسازی‌ها را روی تکه‌های ایجاد شده از ویدیو اعمال خواهیم کرد.

قطعه‌بندی در هوش مصنوعی مولد، فرآیندی است که در آن محتوای بزرگ به قطعات یا «قطعات» کوچک‌تر و قابل مدیریت تقسیم می‌شود. این کار به این دلیل انجام می‌شود که مدل‌های هوش مصنوعی مولد، محدودیت‌هایی در میزان داده‌ای که می‌توانند به طور همزمان پردازش کنند، دارند. با قطعه‌بندی داده‌ها، مدل می‌تواند در هر زمان روی یک قطعه تمرکز کند و خروجی‌های دقیق‌تر و منسجم‌تری تولید کند.

جاسازی‌ها روشی برای نمایش محتوا به صورت برداری از اعداد هستند. این به رایانه‌ها اجازه می‌دهد تا معنای داده‌ها را به روشی پیچیده‌تر از روش‌های سنتی، مانند تشخیص نما یا استخراج فریم کلیدی، در مورد ویدیوها و در مورد داده‌های زبانی، در مورد کیسه کلمات، درک کنند.

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,
)

۵. ویدیو را بارگذاری و تکه‌تکه کنید

برای خلاصه کردن یا پرسیدن سوال، ویدیو را بارگذاری کنید.

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)}")

۶. ذخیره و بازیابی

اسناد خود را ذخیره کنید

برای این تمرین، ما از 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 Text Bison LLM را به بازیابی‌کننده‌ای که جاسازی‌ها را از Chroma DB بازیابی می‌کند، مرتبط می‌کنیم.

qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True)

۷. سوال خود را تعریف کنید

دستورالعمل خود را برای پرسیدن سوال و دریافت پاسخ از محتوای فهرست‌بندی شده تعریف کنید.

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

  }

۸. درخواست LLM را ادغام کنید

برای تعامل بصری در بخش front-end، اپلیکیشن 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()

۹. راه حل را آزمایش کنید

حالا بیایید به آزمایش راه‌حل بپردازیم. سلول حاوی کد بالا را اجرا کنید. یا رابط کاربری را در نتیجه سلول مشاهده کنید یا روی پیوندی که ایجاد می‌شود کلیک کنید. شما باید بتوانید رابط کاربری را با اجزای ورودی-خروجی تجسم کنید. یک سؤال در ویدیو وارد کنید و پاسخ مدل را مشاهده کنید.

825c38058aab0aae.png

با این کار، اکنون می‌توانیم ویدیوهای یوتیوب را ادغام کرده و آنها را با استفاده از مدل‌های Vertex AI PaLM API تجزیه و تحلیل کنیم. می‌توانید این را بیشتر گسترش دهید تا با پایگاه‌های داده یا انبارهای داده ادغام شود. برای کسب اطلاعات بیشتر در مورد مدل‌های موجود ، به مستندات محصول Vertex AI LLM مراجعه کنید.

۱۰. تبریک می‌گویم!

تبریک! شما با موفقیت از یک Vertex AI Text Generation LLM به صورت برنامه‌نویسی شده برای انجام تجزیه و تحلیل متن روی داده‌های خود فقط با استفاده از پرس‌وجوهای SQL استفاده کردید. برای کسب اطلاعات بیشتر در مورد مدل‌های موجود، مستندات محصول Vertex AI LLM را بررسی کنید.