Vertex AI এর সাথে ভিডিও অ্যানালিটিক্সের জন্য জেনারেটিভ এআই

1. ভূমিকা

Google-এর Gen AI ক্ষমতা ব্যবহার করে যেকোন কোম্পানি বা পণ্যে YouTube-এ Inluencers-এর ভিউ কীভাবে বিশ্লেষণ করতে হয় তা শিখুন।

LLM-এর আবির্ভাবের ফলে ব্যালেন্স শীট, সোশ্যাল মিডিয়া প্ল্যাটফর্মের ভিউ, প্রভাবকদের মতামতের মতো বিস্তৃত উৎস থেকে অন্তর্দৃষ্টি ট্যাপ করা আরও সহজ হয়ে গেছে।

সোশ্যাল মিডিয়ার প্রভাবকদের বিশেষ করে টেক এবং ফিনান্স জগতে ক্রমবর্ধমানভাবে একটি সংস্থা বা তার প্রতিযোগীদের পণ্য ও নীতির মূল প্রবক্তা হিসাবে দেখা হচ্ছে।

আপনি কি নির্মাণ করবেন

এই কোডল্যাবে, আপনি কীভাবে ভার্টেক্সএআই এবং ল্যাংচেইনের PaLM2 মডেল ইউটিউব প্রভাবক বিশ্লেষণ সমাধানের জন্য একত্রিত হয় তা অন্বেষণ করবেন।

পরিবেশ

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

উপরের প্যাকেজগুলি ইনস্টল করার পরে এটি আপনাকে রানটাইম মেশিনটি পুনরায় চালু করতে অনুরোধ করবে। রানটাইম রিস্টার্ট করুন ক্লিক করুন অথবা রানটাইম মেনু থেকে রানটাইম রিস্টার্ট নির্বাচন করুন।

আপনার গুগল ক্লাউড অ্যাকাউন্ট প্রমাণীকরণ করুন

আপনার অ্যাকাউন্টে Vertex AI ব্যবহারকারীর ভূমিকা থাকা উচিত।

  • Google ক্লাউড কনসোল খুলুন এবং IAM এবং অ্যাডমিন পরিষেবা অনুসন্ধান করুন। প্রিন্সিপালদের দ্বারা দেখুন-এর অধীনে অনুমতি ট্যাবে, অনুদান অ্যাক্সেস নির্বাচন করুন৷ আপনার প্রিন্সিপাল লিখুন/নির্বাচন করুন এবং তারপরে "ভারটেক্স এআই ব্যবহারকারী" ভূমিকা যোগ করুন এবং সংরক্ষণ করুন, নীচের ছবিতে দেখানো হয়েছে:

c6d26238f3d57a45.png

এখন কোলাব ট্যাবে ফিরে যান এবং বর্তমান কার্যকরী ফাইলের দ্বিতীয় ঘরে নিচের কোড স্নিপেটটি লিখুন। এটি প্রমাণীকরণের জন্য পরীক্ষা করবে।

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 এর Text-Bison মডেলের সাথে "llm" শুরু করে।

!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-তে অংশ নেওয়া হল বড় বিষয়বস্তুকে ছোট, পরিচালনাযোগ্য টুকরো বা 'খণ্ডে' ভাগ করার প্রক্রিয়া। এটি করা হয়েছে কারণ জেনারেটিভ এআই মডেলের সীমা থাকে তারা একবারে কতটা ডেটা প্রক্রিয়া করতে পারে। ডেটা খণ্ড করে, মডেলটি একবারে একটি অংশে ফোকাস করতে পারে এবং আরও সঠিক এবং সুসংগত আউটপুট তৈরি করতে পারে।

এম্বেডিং হল সংখ্যার ভেক্টর হিসাবে বিষয়বস্তুকে উপস্থাপন করার একটি উপায়। এটি কম্পিউটারগুলিকে ঐতিহ্যগত পদ্ধতির চেয়ে আরও পরিশীলিত উপায়ে ডেটার অর্থ বোঝার অনুমতি দেয়, যেমন শট সনাক্তকরণ বা কীফ্রেম নিষ্কাশন, যদি এটি ভিডিও এবং ব্যাগ-অফ-শব্দের জন্য হয়, যদি এটি ভাষার ডেটার জন্য হয়।

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 ভেক্টর অনুসন্ধানও ব্যবহার করতে পারেন। আপনার নথি সংরক্ষণ করুন এবং একটি ভেক্টর স্টোর হিসাবে 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 এবং ক্রোমা ডিবি থেকে এমবেডিংগুলি পুনরুদ্ধারকারী পুনরুদ্ধারকে সংযুক্ত করি৷

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. এলএলএম অ্যাপ্লিকেশন একত্রিত করুন

একটি ভিজ্যুয়াল ফ্রন্ট এন্ড ইন্টারঅ্যাকশনের জন্য গ্র্যাডিওর সাথে এলএলএম অ্যাপ্লিকেশনটিকে একীভূত করুন।

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. সমাধান পরীক্ষা করুন

এখন এর সমাধান পরীক্ষা করতে এগিয়ে চলুন. উপরের কোডটি সম্বলিত সেলটি চালান। হয় ঘরের ফলাফলে UI দেখুন অথবা যে লিঙ্কটি তৈরি হয়েছে সেটিতে ক্লিক করুন। আপনার ইনপুট-আউটপুট উপাদানগুলির সাথে ইন্টারফেসটি কল্পনা করতে সক্ষম হওয়া উচিত। ভিডিওতে একটি প্রশ্ন ইনপুট করুন এবং মডেল প্রতিক্রিয়া দেখুন।

825c38058aab0aae.png

এর সাহায্যে, আমরা এখন ইউটিউব ভিডিওগুলিকে একীভূত করতে পারি এবং Vertex AI PaLM API মডেলগুলি ব্যবহার করে বিশ্লেষণ করতে পারি। আপনি ডাটাবেস বা ডেটা গুদামগুলির সাথে সংহত করতে এটিকে আরও প্রসারিত করতে পারেন। উপলব্ধ মডেল সম্পর্কে আরও জানতে Vertex AI LLM পণ্যের ডকুমেন্টেশন দেখুন।

10. অভিনন্দন!

অভিনন্দন! আপনি সফলভাবে একটি Vertex AI টেক্সট জেনারেশন এলএলএম প্রোগ্রাম্যাটিকভাবে ব্যবহার করেছেন শুধুমাত্র SQL-কোয়েরি ব্যবহার করে আপনার ডেটাতে টেক্সট অ্যানালিটিক্স করতে। উপলব্ধ মডেল সম্পর্কে আরও জানতে Vertex AI LLM পণ্যের ডকুমেন্টেশন দেখুন।