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

1. ভূমিকা

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

এই ল্যাবের শেষ নাগাদ, আপনার কাছে একটি কার্যকরী ওয়েব অ্যাপ্লিকেশন থাকবে যা YouTube ভিডিও থেকে সারাংশ তৈরি করতে পারে। আপনি কীভাবে Gemini API, Google Gen AI SDK ব্যবহার করবেন এবং একটি ওয়েব অ্যাপ্লিকেশন তৈরি করতে তাদের একত্রিত করবেন সে সম্পর্কে আরও ভালভাবে বুঝতে পারবেন।

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

13a0825947f9892b.png

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

2. আপনি শুরু করার আগে

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

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

1829c3759227c19b.png

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

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

পূর্বশর্ত

  • পাইথন এবং এইচটিএমএল কোড পড়তে এবং লিখতে সক্ষম
  • Gemini API এবং Google Gen AI SDK-এর সাথে কাজ করা আরামদায়ক
  • মৌলিক পূর্ণ-স্ট্যাক উন্নয়নের একটি বোঝাপড়া

আপনি কি শিখবেন

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

আপনি কি প্রয়োজন হবে

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

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

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

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

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

f5003b9c38b43262.png

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

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

39abad102a72ae74.png

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

a78b3a0311403ad.png

আপনার ইচ্ছামতো প্রকল্পের নাম দিন (যেমন "আশ্চর্যজনক-জেমিনি-অ্যাপ") এবং ঠিক আছে ক্লিক করুন :

4d8f77279d9509cb.png

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

e85a020a20d38e17.png

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

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

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

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

সবাই ভালো থাকলে, আপনি http://127.0.0.1:8080 এ আপনার ওয়েব অ্যাপ্লিকেশন অ্যাক্সেস করতে সক্ষম হবেন।

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

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

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

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

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

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

  1. উপরের বাম কোণে বারগুলিতে ক্লিক করুন এবং টার্মিনাল > নতুন টার্মিনাল নির্বাচন করুন

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

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

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

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 এর Gemini AI এর সাথে ইন্টারঅ্যাক্ট করার জন্য।
  • google.genai.types: মিথুনের জন্য ডেটা স্ট্রাকচার সংজ্ঞায়িত করার জন্য।

মিথুন ক্লায়েন্ট শুরু করা হচ্ছে:

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

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

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

হোম পেজ রুট সংজ্ঞায়িত করা (/):

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

সংক্ষিপ্তকরণ রুট সংজ্ঞায়িত করা (/সারাংশ):

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

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

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

আপনি টার্মিনাল থেকে app.py চালিয়ে কোডটি পরীক্ষা করতে পারেন। সামনে শেষ পরীক্ষা হিসাবে একই পদ্ধতি. app.py- এ রাইট ক্লিক করুন এবং টার্মিনালে পাইথন ফাইল চালান নির্বাচন করুন।

এগিয়ে যান এবং আপনার আবেদন পরীক্ষা করুন. এটা প্রত্যাশিত হিসাবে কাজ করা উচিত.

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

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

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

gcloud config set project [PROJECT_ID]

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

cd amazing-gemini-app
gcloud run deploy --source .

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

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

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

এগিয়ে যান এবং Inconito উইন্ডো বা আপনার মোবাইল ডিভাইস থেকে আপনার অ্যাপ্লিকেশন ব্যবহার করুন. এটা ইতিমধ্যে লাইভ করা উচিত.

7. চ্যালেঞ্জ

এখন আপনার উজ্জ্বল সময়. আপনি কি আপনার কম্পিউটার থেকে সরাসরি ভিডিও আপলোড করতে পারেন যাতে কোড পরিবর্তন করতে কি লাগে?

8. পরিষ্কার করুন

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

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