1. परिचय
आज की तेज़ी से बदलती डिजिटल दुनिया में, समय एक अहम चीज़ है. YouTube पर जानकारी का बहुत बड़ा भंडार मौजूद है. हालांकि, लंबी अवधि के वीडियो देखने में काफ़ी समय लग सकता है. ऐसे में, YouTube पर वीडियो की खास जानकारी देने वाले टूल बहुत काम के साबित होते हैं. ये टूल, लंबी अवधि के वीडियो को कम शब्दों में खास जानकारी में बदल देते हैं. इससे दर्शक, पूरा वीडियो देखे बिना ही मुख्य कॉन्टेंट को तुरंत समझ सकते हैं. यह सुविधा खास तौर पर, छात्र-छात्राओं, पेशेवर लोगों, और उन सभी के लिए मददगार है जो ऑनलाइन वीडियो कॉन्टेंट से अहम जानकारी निकालना चाहते हैं. YouTube पर खास जानकारी देने वाले टूल की मदद से, उपयोगकर्ता कम समय में ज़्यादा से ज़्यादा जानकारी हासिल कर पाते हैं.
इस लैब के आखिर तक, आपके पास एक ऐसा वेब ऐप्लिकेशन होगा जो YouTube वीडियो की खास जानकारी जनरेट कर सकता है. आपको Gemini API और Google के जनरेटिव एआई वाले एसडीके को इस्तेमाल करने का तरीका भी बेहतर तरीके से समझ आएगा. साथ ही, वेब ऐप्लिकेशन बनाने के लिए, इन दोनों को एक साथ इंटिग्रेट करने का तरीका भी आपको पता चलेगा.
आपका वेब ऐप्लिकेशन ऐसा दिखेगा:
आपको बस YouTube वीडियो का लिंक देना होगा. बाकी काम Gemini करेगा.
2. शुरू करने से पहले
इस कोडलैब में यह माना गया है कि आपके पास पहले से ही बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट है. अगर आपके पास यह सुविधा नहीं है, तो इसे चालू करने के लिए नीचे दिए गए निर्देशों का पालन करें.
- Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
- पक्का करें कि आपके Google Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. किसी प्रोजेक्ट के लिए बिलिंग की सुविधा चालू है या नहीं, यह देखने का तरीका जानें.
- इसके लिए, आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है. इसे ऐक्सेस करने के लिए, Google Cloud कंसोल में सबसे ऊपर मौजूद, 'Cloud Shell चालू करें' पर क्लिक करें.
- Cloud Shell से कनेक्ट होने के बाद, यह जांच करें कि आपकी पुष्टि पहले ही हो चुकी है या नहीं. साथ ही, यह भी देखें कि प्रोजेक्ट आपके प्रोजेक्ट आईडी पर सेट है या नहीं. इसके लिए, यह कमांड इस्तेमाल करें:
gcloud auth list
- Cloud Shell में यह कमांड चलाकर पुष्टि करें कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है.
gcloud config list project
- अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>
- पक्का करें कि ये एपीआई चालू हों:
- Cloud Run
- Vertex AI
gcloud कमांड का इस्तेमाल करने के बजाय, इस लिंक का इस्तेमाल करके कंसोल पर जाएं. gcloud के निर्देशों और इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.
ज़रूरी शर्तें
- Python और एचटीएमएल कोड पढ़ने और लिखने की सुविधा
- Gemini API और Google के जनरेटिव एआई वाले एसडीके के साथ आसानी से काम करना
- फ़ुल-स्टैक डेवलपमेंट की बुनियादी बातों की समझ
आपको क्या सीखने को मिलेगा
- Flask API लाइब्रेरी का इस्तेमाल करके, Gemini के साथ काम करने वाला बैक-एंड एपीआई बनाने का तरीका
- फ़्रंट-एंड और बैक-एंड को एक साथ लिंक करके, जेन एआई ऐप्लिकेशन बनाने का तरीका
- डेवलप किए गए GenAI ऐप्लिकेशन को Cloud Run पर डिप्लॉय करने का तरीका
आपको इन चीज़ों की ज़रूरत होगी
- काम करने वाला कंप्यूटर और भरोसेमंद वाई-फ़ाई
- जिज्ञासु मन
3. Cloud Run पर Python Flask ऐप्लिकेशन बनाना
हम Cloud Shell में अपने-आप जनरेट हुए टेंप्लेट का इस्तेमाल करके, Cloud Run पर Python Flask ऐप्लिकेशन बनाएंगे.
Cloud Shell टर्मिनल पर जाएं और 'एडिटर खोलें' बटन पर क्लिक करें.
पक्का करें कि Cloud Code प्रोजेक्ट, Cloud Shell एडिटर के सबसे नीचे बाएं कोने (स्टेटस बार) में सेट हो, जैसा कि नीचे दी गई इमेज में हाइलाइट किया गया है. साथ ही, यह भी पक्का करें कि यह उस चालू Google Cloud प्रोजेक्ट पर सेट हो जिसके लिए आपने बिलिंग की सुविधा चालू की है. अगर कहा जाए, तो अनुमति दें.
स्टेटस बार में उस चालू प्रोजेक्ट पर क्लिक करें और Cloud Code का पॉप-अप खुलने का इंतज़ार करें. पॉप-अप में, "नया ऐप्लिकेशन" चुनें.
ऐप्लिकेशन की सूची में से, Cloud Run ऐप्लिकेशन चुनें:
पेज 2/2 के लिए, Python Flask टेंप्लेट चुनें:
प्रोजेक्ट को अपनी पसंद का नाम दें (उदाहरण के लिए, "amazing-gemini-app") और ठीक है पर क्लिक करें:
इससे, आपके हाल ही में सेट अप किए गए नए प्रोजेक्ट का टेंप्लेट खुल जाएगा.
Google Cloud Shell की मदद से, Cloud Run पर Python Flask ऐप्लिकेशन बनाना इतना ही आसान है.
4. फ़्रंट-एंड बनाना
जैसा कि पहले बताया गया था, फ़ाइनल वेब ऐप्लिकेशन कुछ ऐसा दिखेगा:
इसमें उपयोगकर्ता से YouTube लिंक लेने के लिए एक इनपुट फ़ील्ड, कोई दूसरी मॉडल फ़ैमिली चुनने का विकल्प, ज़रूरत पड़ने पर अतिरिक्त प्रॉम्प्ट देने के लिए एक टेक्स्टएरिया, और फ़ॉर्म सबमिट करने के लिए एक बटन होता है.
अगर आपको यह चैलेंज पसंद आया है, तो अपना फ़ॉर्म डिज़ाइन करें या सीएसएस प्रॉपर्टी में बदलाव करें. नीचे दिए गए कोड को कॉपी करके, टेंप्लेट फ़ोल्डर में मौजूद 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 पर दायां क्लिक करें और Terminal में Python फ़ाइल चलाएं को चुनें.
अगर सब कुछ ठीक रहा, तो आपको http://127.0.0.1:8080 पर अपना वेब ऐप्लिकेशन ऐक्सेस करने में मदद मिलेगी.
5. बैक-एंड बनाना
फ़्रंट-एंड सेट अप हो जाने के बाद, आपको एक बैक-एंड सेवा बनानी होगी. यह सेवा, उपयोगकर्ता के दिए गए YouTube वीडियो की खास जानकारी देने के लिए, Gemini मॉडल का इस्तेमाल करती है. ध्यान दें कि इस टास्क को पूरा करने के लिए, आपको app.py को ओवरराइट करना होगा.
कोड में बदलाव करने से पहले, आपको एक वर्चुअल एनवायरमेंट बनाना होगा. साथ ही, Gemini कॉम्पोनेंट चलाने के लिए ज़रूरी लाइब्रेरी इंस्टॉल करनी होंगी.
सबसे पहले, आपको 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 से पैकेज इंस्टॉल करने होंगे, ताकि बैक-एंड कोड को सही तरीके से चलाया जा सके.
- सबसे ऊपर बाएं कोने में मौजूद बार पर क्लिक करें और टर्मिनल > नया टर्मिनल चुनें
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')
खास तौर पर, यह कोड ये काम करता है:
ज़रूरी लाइब्रेरी इंपोर्ट करता है:
- Flask: वेब ऐप्लिकेशन बनाने के लिए.
- os: एनवायरमेंट वैरिएबल को ऐक्सेस करने के लिए.
- google.genai: Google के Gemini एआई के साथ इंटरैक्ट करने के लिए.
- google.genai.types: Gemini के लिए डेटा स्ट्रक्चर तय करने के लिए.
Gemini क्लाइंट को शुरू करना:
- यह Google के Vertex AI से कनेक्शन सेट अप करता है, ताकि ऐप्लिकेशन Gemini के एआई मॉडल का इस्तेमाल कर सके. पक्का करें कि आपने "REPLACE_WITH_YOUR_PROJECT_ID" की जगह अपना प्रोजेक्ट आईडी डाला हो.
generate फ़ंक्शन तय करना:
- इस फ़ंक्शन में, YouTube वीडियो का लिंक, Gemini मॉडल आईडी, और एक अतिरिक्त प्रॉम्प्ट डालना होता है. इसके बाद, यह वीडियो और प्रॉम्प्ट को Gemini को भेजता है और जनरेट की गई खास जानकारी का टेक्स्ट दिखाता है.
होम पेज के रूट (/) को तय करना:
- यह फ़ंक्शन index.html टेंप्लेट को रेंडर करता है. इसमें उपयोगकर्ता को YouTube लिंक डालने के लिए एक फ़ॉर्म दिखता है.
खास जानकारी देने वाले रूट (/summarize) को तय करना:
- यह फ़ंक्शन, फ़ॉर्म सबमिट करने की प्रोसेस को मैनेज करता है. यह फ़ॉर्म से YouTube का लिंक, मॉडल, और प्रॉम्प्ट लेता है. साथ ही, खास जानकारी पाने के लिए generate फ़ंक्शन को कॉल करता है. इसके बाद, result.html टेंप्लेट में खास जानकारी दिखाता है.
ऐप्लिकेशन चलाना:
- यह एनवायरमेंट वैरिएबल से सर्वर पोर्ट को वापस लाता है और Flask वेब सर्वर को शुरू करता है.
टर्मिनल से app.py को चलाकर, कोड की जांच की जा सकती है. फ़्रंट एंड की जांच करने के तरीके जैसा ही. app.py पर दायां क्लिक करें और Terminal में Python फ़ाइल चलाएं को चुनें.
अब अपने ऐप्लिकेशन की जांच करें. यह उम्मीद के मुताबिक काम कर रहा होगा.
6. वेब ऐप्लिकेशन को डिप्लॉय करना
अब आपके पास GenAI ऐप्लिकेशन काम कर रहा है. अब इसे Cloud Run पर डिप्लॉय करें, ताकि आप इसे अपने दोस्तों और साथ काम करने वाले लोगों के साथ शेयर करके आज़मा सकें.
Cloud Shell टर्मिनल पर जाएं और पक्का करें कि मौजूदा प्रोजेक्ट, आपके चालू प्रोजेक्ट के तौर पर कॉन्फ़िगर किया गया हो. अगर ऐसा नहीं है, तो प्रोजेक्ट आईडी सेट करने के लिए 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/
अब गुप्त विंडो या अपने मोबाइल डिवाइस से अपने ऐप्लिकेशन का इस्तेमाल करें. यह पहले से लाइव होना चाहिए.
7. चुनौती
अब आपको लोगों तक पहुंचने से कोई नहीं रोक सकता. क्या आपके पास कोड बदलने की ज़रूरी जानकारी है, ताकि सीधे कंप्यूटर से वीडियो अपलोड किए जा सकें?
8. व्यवस्थित करें
इस कोडलैब में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाएं, इसके लिए यह तरीका अपनाएं:
- Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
- प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
- डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए बंद करें पर क्लिक करें.
- इसके अलावा, आपके पास Console पर Cloud Run पर जाकर, वह सेवा चुनने और मिटाने का विकल्प भी है जिसे आपने अभी डिप्लॉय किया है.