একটি মিথুন-চালিত YouTube সামারিজার তৈরি করুন৷

1. ভূমিকা

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

এই ল্যাবটি শেষ হওয়ার পর, আপনার কাছে একটি কার্যকর ওয়েব অ্যাপ্লিকেশন থাকবে যা ইউটিউব ভিডিও থেকে সারাংশ তৈরি করতে পারবে। আপনি জেমিনি এপিআই, গুগল জেন এআই এসডিকে কীভাবে ব্যবহার করবেন এবং একটি ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য এগুলিকে একত্রিত করবেন সে সম্পর্কে আরও ভাল ধারণা পাবেন।

আপনার ওয়েব অ্যাপ্লিকেশনটি দেখতে এরকম হবে:

13a0825947f9892b.png সম্পর্কে

আপনাকে যা করতে হবে তা হল YouTube ভিডিওর একটি লিঙ্ক প্রদান করতে হবে এবং বাকি কাজটি জেমিনি করবে।

2. শুরু করার আগে

এই কোডল্যাব ধরে নিচ্ছে যে আপনার কাছে ইতিমধ্যেই একটি Google ক্লাউড প্রোজেক্ট আছে যার বিলিং সক্ষম করা আছে। যদি আপনার কাছে এখনও এটি না থাকে, তাহলে শুরু করার জন্য আপনি নীচের নির্দেশাবলী অনুসরণ করতে পারেন।

  1. গুগল ক্লাউড কনসোলে , প্রজেক্ট সিলেক্টর পৃষ্ঠায়, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার গুগল ক্লাউড প্রোজেক্টের জন্য বিলিং সক্ষম আছে কিনা তা নিশ্চিত করুন। কোনও প্রোজেক্টে বিলিং সক্ষম আছে কিনা তা কীভাবে পরীক্ষা করবেন তা শিখুন।
  3. আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ। এটি অ্যাক্সেস করতে, গুগল ক্লাউড কনসোলের শীর্ষে অ্যাক্টিভেট ক্লাউড শেল ক্লিক করুন।

1829c3759227c19b.png সম্পর্কে

  1. ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি নিম্নলিখিত কমান্ড ব্যবহার করে পরীক্ষা করতে পারবেন যে আপনি ইতিমধ্যেই প্রমাণীকরণপ্রাপ্ত এবং প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে কিনা:
gcloud auth list
  1. gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
  1. যদি আপনার প্রকল্পটি সেট না করা থাকে, তাহলে এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>

বিকল্পভাবে, আপনি কনসোলে PROJECT_ID আইডিও দেখতে পাবেন

4032c45803813f30.jpeg সম্পর্কে

এটিতে ক্লিক করলে আপনার সমস্ত প্রকল্প এবং প্রকল্প আইডি ডানদিকে থাকবে।

2b4c041c426d8b29.jpeg সম্পর্কে

  1. নিম্নলিখিত API গুলি সক্রিয় আছে কিনা তা নিশ্চিত করুন, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
  • ভার্টেক্স এআই এপিআই
  • ক্লাউড রান অ্যাডমিন এপিআই
  • ক্লাউড বিল্ড এপিআই
  • ক্লাউড রিসোর্স ম্যানেজার API
gcloud services enable aiplatform.googleapis.com \
                           run.googleapis.com \
                           cloudbuild.googleapis.com \
                           cloudresourcemanager.googleapis.com

gcloud কমান্ড ব্যবহারের বিকল্প হল এই লিঙ্কটি ব্যবহার করে কনসোলটি দেখা। gcloud কমান্ড এবং ব্যবহারের জন্য ডকুমেন্টেশন দেখুন।

পূর্বশর্ত

তুমি কি শিখবে

  • ফ্লাস্ক এপিআই লাইব্রেরি ব্যবহার করে কীভাবে জেমিনি-চালিত ব্যাক-এন্ড এপিআই তৈরি করবেন
  • কিভাবে একটি GenAI অ্যাপ তৈরি করবেন ফ্রন্ট-এন্ড এবং ব্যাক-এন্ড একসাথে সংযুক্ত করবেন
  • ক্লাউড রানে ডেভেলপ করা GenAI অ্যাপ্লিকেশনটি কীভাবে স্থাপন করবেন

তোমার যা লাগবে

  • একটি কার্যকর কম্পিউটার এবং নির্ভরযোগ্য ওয়াইফাই
  • একটি কৌতূহলী মন

৩. ক্লাউড রানে একটি পাইথন ফ্লাস্ক অ্যাপ তৈরি করুন

আমরা প্রথমে ক্লাউড শেল থেকে স্বয়ংক্রিয়ভাবে তৈরি টেমপ্লেট ব্যবহার করে ক্লাউড রানে পাইথন ফ্লাস্ক অ্যাপ তৈরি করব।

ক্লাউড শেল টার্মিনালে যান এবং ওপেন এডিটর বোতামে ক্লিক করুন। b16d56e4979ec951.png সম্পর্কে

নিশ্চিত করুন যে ক্লাউড কোড প্রজেক্টটি ক্লাউড শেল এডিটরের নীচের বাম কোণে (স্ট্যাটাস বার) সেট করা আছে, যেমনটি নীচের ছবিতে হাইলাইট করা হয়েছে এবং সক্রিয় গুগল ক্লাউড প্রজেক্টে সেট করা আছে যেখানে আপনি বিলিং সক্ষম করেছেন। অনুরোধ করা হলে অনুমোদন করুন

দ্রষ্টব্য: ক্লাউড শেল এডিটর শুরু হতে এবং সমস্ত প্রয়োজনীয় প্লাগইন লোড হতে কিছুটা সময় লাগতে পারে যাতে

Cloud Code - Sign In

বোতামটি প্রদর্শিত হবে, দয়া করে ধৈর্য ধরুন।

f5003b9c38b43262.png সম্পর্কে

স্ট্যাটাস বারে থাকা সক্রিয় প্রকল্পটিতে ক্লিক করুন এবং ক্লাউড কোড পপ আপ খোলার জন্য অপেক্ষা করুন। পপ আপে "নতুন অ্যাপ্লিকেশন" নির্বাচন করুন। 70f80078e01a02d8.png সম্পর্কে

অ্যাপ্লিকেশনের তালিকা থেকে, ক্লাউড রান অ্যাপ্লিকেশন নির্বাচন করুন:

39abad102a72ae74.png

পৃষ্ঠা ২/২ এর জন্য, পাইথন ফ্লাস্ক টেমপ্লেট নির্বাচন করুন:

a78b3a0311403ad.png সম্পর্কে

আপনার ইচ্ছামত প্রকল্পের নাম দিন (যেমন "amazing-gemini-app") এবং ঠিক আছে ক্লিক করুন:

4d8f77279d9509cb.png সম্পর্কে

এটি আপনার নতুন সেট আপ করা প্রকল্পের টেমপ্লেটটি খুলবে।

e85a020a20d38e17.png

গুগল ক্লাউড শেল ব্যবহার করে ক্লাউড রানে পাইথন ফ্লাস্ক অ্যাপ তৈরি করা এত সহজ।

৪. ফ্রন্ট-এন্ড তৈরি করুন

আগেই বলা হয়েছে, চূড়ান্ত ওয়েব অ্যাপ্লিকেশনটি দেখতে এরকম হবে:

13a0825947f9892b.png সম্পর্কে

এতে ব্যবহারকারীর কাছ থেকে একটি YouTube লিঙ্ক নেওয়ার জন্য একটি ইনপুট ক্ষেত্র, একটি ভিন্ন মডেল পরিবার বেছে নেওয়ার বিকল্প, প্রয়োজনে অতিরিক্ত প্রম্পট প্রদানের জন্য একটি টেক্সট এরিয়া এবং ফর্ম জমা দেওয়ার জন্য একটি বোতাম রয়েছে।

যদি আপনি চ্যালেঞ্জটি পছন্দ করেন, তাহলে আপনার নিজস্ব ফর্ম ডিজাইন করতে অথবা CSS বৈশিষ্ট্য সম্পাদনা করতে দ্বিধা করবেন না। আপনি নীচের কোডটি অনুলিপি করতে পারেন এবং টেমপ্লেট ফোল্ডারে আপনার index.html ফাইলের বিষয়বস্তুটি এটি দিয়ে প্রতিস্থাপন করতে পারেন।

<!DOCTYPE html>
<html>
 <head>
   <title>YouTube Summarizer</title>
   <style>
     body {
       font-family: sans-serif;
       display: flex;
       justify-content: center;
       align-items: center;
       min-height: 100vh;
       background-color: #f4f4f4;
     }
     .container {
       background-color: white;
       padding: 30px;
       border-radius: 8px;
       box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
       text-align: center;
     }
     h2 {
       text-align: center;
       margin-bottom: 20px;
     }
     input[type="text"], textarea, select {
       width: 100%;
       padding: 10px;
       margin-bottom: 15px;
       border: 1px solid #ccc;
       border-radius: 4px;
       box-sizing: border-box;
     }
     button {
       background-color: #4CAF50;
       color: white;
       padding: 12px 20px;
       border: none;
       border-radius: 4px;
       cursor: pointer;
     }
   </style>
 </head>
 <body>
   <div class="container">
     <h2>YouTube Summarizer</h2>
     <form action="/summarize" target="_blank" method="post">
       <input type="text" name="youtube_link" placeholder="Enter YouTube Link">
       <select name="model">
         <option value="gemini-2.0-flash-001">Gemini 2.0 Flash</option>
       </select>
       <textarea name="additional_prompt" placeholder="Write your additional prompt here. For example: 'explain to me like I am five years old'"></textarea>
       <button type="submit">Summarize</button>
     </form>
   </div>
 </body>
</html>

আপনি এই ধাপটি সঠিকভাবে করেছেন কিনা তা পরীক্ষা করতে, app.py- তে ডান ক্লিক করুন এবং টার্মিনালে "পাইথন ফাইল চালান" নির্বাচন করুন।

690765473f94db9c.png সম্পর্কে

যদি সবকিছু ঠিকঠাক থাকে, তাহলে ক্লাউড এডিটরের উপরের ডানদিকে Web Preview বোতামে ক্লিক করে এবং Preview on port 8080 নির্বাচন করে আপনার ওয়েব অ্যাপ্লিকেশন অ্যাক্সেস করতে পারবেন।

49cbdfdf77964065.jpeg সম্পর্কে

৫. ব্যাক-এন্ড তৈরি করুন

একবার ফ্রন্ট-এন্ড সেট আপ হয়ে গেলে, আপনাকে একটি ব্যাক-এন্ড পরিষেবা তৈরি করতে হবে যা ব্যবহারকারীর দ্বারা প্রদত্ত YouTube ভিডিওর সারসংক্ষেপ তৈরি করতে জেমিনি মডেল ব্যবহার করবে। মনে রাখবেন যে এই কাজটি সম্পন্ন করার জন্য আপনাকে app.py ওভাররাইট করতে হবে।

কোড পরিবর্তন করার আগে, আপনাকে একটি ভার্চুয়াল পরিবেশ তৈরি করতে হবে এবং জেমিনি উপাদানগুলি চালানোর জন্য প্রয়োজনীয় লাইব্রেরি ইনস্টল করতে হবে।

প্রথমত, আপনাকে requirements.txt ফাইলে Google Gen AI SDK লাইব্রেরি যুক্ত করতে হবে। এটি দেখতে এরকম হওয়া উচিত:

Flask==2.3.3
requests==2.31.0
debugpy # Required for debugging.
google-genai==1.2.0

দ্বিতীয়ত, আপনাকে একটি ভার্চুয়াল পরিবেশ তৈরি করতে হবে এবং requirements.txt থেকে প্যাকেজগুলি ইনস্টল করতে হবে যাতে আপনি ব্যাক-এন্ড কোডটি সফলভাবে চালাতে পারেন।

  1. উপরের বাম কোণে বারগুলিতে ক্লিক করুন এবং টার্মিনাল > নতুন টার্মিনাল নির্বাচন করুন (অন্যথায়, আপনি নতুন টার্মিনাল খুলতে Ctrl + Shift + C ব্যবহার করতে পারেন)

2cda225f0cd71e7e.png সম্পর্কে ২. টার্মিনালে টাইপ করে একটি ভার্চুয়াল পরিবেশ তৈরি করুন এবং এটি সফলভাবে ইনস্টল হওয়ার জন্য অপেক্ষা করুন।

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

আবারও নিজেকে চ্যালেঞ্জ করতে দ্বিধা করবেন না এবং Flask API ব্যবহার করে একটি Gemini endpoint তৈরি করুন। app.py- তে আপনার কোডটি নীচে প্রদত্ত কোডের অনুরূপ হওয়া উচিত।

import os

from flask import Flask, render_template, request
from google import genai
from google.genai import types

app = Flask(__name__)

PROJECT_ID = "REPLACE_WITH_YOUR_PROJECT_ID"

client = genai.Client(
   vertexai=True,
   project=PROJECT_ID,
   location="us-central1",
)

# Define the home page route.
@app.route('/', methods=['GET'])
def index():
   '''
   Renders the home page.
   Returns:The rendered template.
   '''
   return render_template('index.html')


def generate(youtube_link, model, additional_prompt):

   # Prepare youtube video using the provided link
   youtube_video = types.Part.from_uri(
       file_uri=youtube_link,
       mime_type="video/*",
   )

   # If addtional prompt is not provided, just append a space
   if not additional_prompt:
       additional_prompt = " "

   # Prepare content to send to the model
   contents = [
       youtube_video,
       types.Part.from_text(text="""Provide a summary of the video."""),
       additional_prompt,
   ]

   # Define content configuration
   generate_content_config = types.GenerateContentConfig(
       temperature = 1,
       top_p = 0.95,
       max_output_tokens = 8192,
       response_modalities = ["TEXT"],
   )

   return client.models.generate_content(
       model = model,
       contents = contents,
       config = generate_content_config,
   ).text

@app.route('/summarize', methods=['GET', 'POST'])
def summarize():
   '''
   Summarize the user provided YouTube video.
   Returns: Summary.
   '''

   # If the request is a POST request, process the form data.
   if request.method == 'POST':
       youtube_link = request.form['youtube_link']
       model = request.form['model']
       additional_prompt = request.form['additional_prompt']
     
       # Generate the summary.
       try:
           summary = generate(youtube_link, model, additional_prompt)
           return summary

       except ValueError as e:
           raise e
 
   # If the request is a GET request, redirect to the home page.
   else:
       return redirect('/')


if __name__ == '__main__':
   server_port = os.environ.get('PORT', '8080')
   app.run(debug=False, port=server_port, host='0.0.0.0')

মূলত, কোডটি নিম্নলিখিত কাজ করে:

প্রয়োজনীয় লাইব্রেরি আমদানি করে:

  • ফ্লাস্ক: ওয়েব অ্যাপ্লিকেশন তৈরির জন্য।
  • os: পরিবেশ পরিবর্তনশীল অ্যাক্সেসের জন্য।
  • google.genai: গুগলের জেমিনি এআই-এর সাথে ইন্টারঅ্যাক্ট করার জন্য।
  • google.genai.types: জেমিনির জন্য ডেটা স্ট্রাকচার সংজ্ঞায়িত করার জন্য।

জেমিনি ক্লায়েন্ট শুরু করা:

  • এটি গুগলের ভার্টেক্স এআই-এর সাথে একটি সংযোগ স্থাপন করে, যা অ্যাপটিকে জেমিনি এআই মডেল ব্যবহার করতে সক্ষম করে। আপনার প্রোজেক্ট আইডি দিয়ে " REPLACE_WITH_YOUR_PROJECT_ID " প্রতিস্থাপন করতে ভুলবেন না।

জেনারেট ফাংশন সংজ্ঞায়িত করা হচ্ছে:

  • এই ফাংশনটি একটি ইউটিউব ভিডিও লিঙ্ক, একটি জেমিনি মডেল আইডি এবং একটি অতিরিক্ত প্রম্পট ইনপুট হিসেবে নেয়। এরপর এটি ভিডিও এবং প্রম্পটটি জেমিনিকে পাঠায় এবং জেনারেট করা সারাংশ টেক্সট ফেরত দেয়।

হোম পেজ রুট (/) নির্ধারণ করা:

  • এই ফাংশনটি index.html টেমপ্লেট রেন্ডার করে, যা ব্যবহারকারীকে একটি YouTube লিঙ্ক প্রবেশ করার জন্য একটি ফর্ম প্রদর্শন করে।

সারসংক্ষেপের রুট নির্ধারণ করা (/সারসংক্ষেপ):

  • এই ফাংশনটি ফর্ম জমা দেওয়ার কাজ পরিচালনা করে। এটি ফর্ম থেকে YouTube লিঙ্ক, মডেল এবং প্রম্পট উদ্ধার করে, সারাংশ পেতে generate ফাংশনকে কল করে এবং তারপর result.html টেমপ্লেটে সারাংশ প্রদর্শন করে।

অ্যাপ্লিকেশনটি চালানো:

  • এটি পরিবেশ ভেরিয়েবল থেকে সার্ভার পোর্ট উদ্ধার করে এবং ফ্লাস্ক ওয়েব সার্ভার শুরু করে।

আপনি টার্মিনাল থেকে app.py রান করে কোডটি পরীক্ষা করতে পারেন। ফ্রন্ট এন্ড টেস্ট করার পদ্ধতি একই। app.py তে ডান ক্লিক করুন এবং Run Python File in Terminal নির্বাচন করুন।

আপনার আবেদনটি পরীক্ষা করে দেখুন। এটি প্রত্যাশা অনুযায়ী কাজ করা উচিত।

৬. ওয়েব অ্যাপ্লিকেশন স্থাপন করুন

এখন যেহেতু আপনার কাছে কার্যকরী GenAI অ্যাপ্লিকেশন আছে, আসুন অ্যাপটি ক্লাউড রানে স্থাপন করি যাতে আপনি এটি আপনার বন্ধু এবং সহকর্মীদের সাথে শেয়ার করে চেষ্টা করতে পারেন।

ক্লাউড শেল টার্মিনালে নেভিগেট করুন এবং নিশ্চিত করুন যে বর্তমান প্রকল্পটি আপনার সক্রিয় প্রকল্পের সাথে কনফিগার করা আছে, যদি না হয় তবে আপনি প্রকল্প আইডি সেট করতে gcloud configure কমান্ড ব্যবহার করতে পারেন:

gcloud config set project [PROJECT_ID]

[PROJECT_ID] কে আপনার নিজস্ব প্রজেক্ট আইডি দিয়ে প্রতিস্থাপন করতে ভুলবেন না। নিশ্চিত করুন যে টার্মিনালে আপনার বর্তমান কার্যকরী ডিরেক্টরি **amazing-gemini-app** তারপর নিম্নলিখিত কমান্ডগুলি একের পর এক সেই ক্রমে লিখুন:

gcloud run deploy --source .

এটি আপনাকে আপনার পরিষেবার জন্য একটি নাম লিখতে বলবে, ধরুন " youtube-summarizer "। " us-central1 " অঞ্চলের জন্য সংশ্লিষ্ট নম্বরটি নির্বাচন করুন। যখন এটি জিজ্ঞাসা করে যে আপনি অপ্রমাণিত ইনভোকেশনগুলিকে অনুমতি দিতে চান কিনা তখন " y " বলুন। মনে রাখবেন যে আমরা এখানে অপ্রমাণিত অ্যাক্সেসের অনুমতি দিচ্ছি কারণ এটি একটি ডেমো অ্যাপ্লিকেশন। আপনার এন্টারপ্রাইজ এবং উৎপাদন অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত প্রমাণীকরণ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।

স্থাপনা সম্পন্ন হলে, আপনি নীচের মতো একটি লিঙ্ক পাবেন:

https://amazing-gemini-app-*********.a.run.app/

ছদ্মবেশী উইন্ডো অথবা আপনার মোবাইল ডিভাইস থেকে আপনার অ্যাপ্লিকেশনটি ব্যবহার করুন। এটি ইতিমধ্যেই লাইভ হওয়া উচিত।

৭. চ্যালেঞ্জ

এখন তোমার সময় এসেছে সাফল্য লাভের। কোড পরিবর্তন করার জন্য যা যা প্রয়োজন, তা কি তোমার কাছে আছে যাতে তুমি সরাসরি তোমার কম্পিউটার থেকে ভিডিও আপলোড করতে পারো?

৮. পরিষ্কার করা

এই কোডল্যাবে ব্যবহৃত রিসোর্সের জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. গুগল ক্লাউড কনসোলে, রিসোর্স পরিচালনা পৃষ্ঠায় যান।
  2. প্রকল্পের তালিকায়, আপনি যে প্রকল্পটি মুছতে চান তা নির্বাচন করুন এবং তারপরে মুছুন ক্লিক করুন।
  3. ডায়ালগে, প্রজেক্ট আইডি টাইপ করুন, এবং তারপর প্রজেক্টটি মুছে ফেলতে Shut down এ ক্লিক করুন।
  4. বিকল্পভাবে আপনি কনসোলের ক্লাউড রানে যেতে পারেন, আপনার সবেমাত্র স্থাপন করা পরিষেবাটি নির্বাচন করতে পারেন এবং মুছে ফেলতে পারেন।