1. מבוא
בעולם הדיגיטלי המהיר של היום, זמן הוא מצרך יקר. YouTube הוא מאגר עצום של מידע, אבל צפייה בסרטונים ארוכים יכולה להיות השקעה משמעותית של זמן. כאן נכנסים לתמונה הסיכומים של YouTube. הכלים האלה מאפשרים לצמצם סרטונים ארוכים לתקצירים תמציתיים, וכך המשתמשים יכולים להבין במהירות את התוכן המרכזי בלי לצפות בסרטון כולו. האפשרות הזו שימושית במיוחד לתלמידים, לאנשי מקצוע ולכל מי שרוצה לחלץ מידע חשוב בצורה יעילה מתכנים של סרטונים אונליין. בעיקרון, סיכומי YouTube מאפשרים למשתמשים למקסם את הלמידה ואת צריכת המידע שלהם, תוך צמצום הזמן שהם מבזבזים.
בסוף שיעור ה-Lab הזה תהיה לכם אפליקציית אינטרנט שפועלת ויכולה ליצור סיכומים מסרטונים ב-YouTube. בנוסף, תקבלו הבנה טובה יותר של האופן שבו משתמשים ב-Gemini API וב-Google Gen AI SDK, ושל השילוב ביניהם ליצירת אפליקציית אינטרנט.
אפליקציית האינטרנט תיראה כך:
כל מה שצריך לעשות הוא לספק קישור לסרטון ב-YouTube, וג'מיני יטפל בשאר.
2. לפני שמתחילים
אנחנו יוצאים מנקודת הנחה שכבר יש לכם פרויקט ב-Google Cloud שבו החיוב מופעל. אם עדיין לא עשיתם זאת, תוכלו לפעול לפי ההוראות שבהמשך כדי להתחיל.
- בדף לבחירת הפרויקט במסוף Google Cloud, בוחרים או יוצרים פרויקט ב-Google Cloud.
- מוודאים שהחיוב מופעל בפרויקט שלכם ב-Google Cloud. כך בודקים אם החיוב מופעל בפרויקט
- תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud. כדי לגשת אליו, לוחצים על Activate Cloud Shell בחלק העליון של מסוף Google Cloud.
- אחרי שמתחברים ל-Cloud Shell, בודקים שכבר בוצע אימות ושהמזהה של הפרויקט מוגדר כפרויקט באמצעות הפקודה הבאה:
gcloud auth list
- מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהפקודה gcloud מכירה את הפרויקט.
gcloud config list project
- אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project <YOUR_PROJECT_ID>
- צריך לוודא שממשקי ה-API הבאים מופעלים:
- Cloud Run
- Vertex AI
האפשרות החלופית לשימוש בפקודה gcloud היא להיכנס למסוף דרך הקישור הזה. במסמכי העזרה מפורטות הפקודות של gcloud והשימוש בהן.
דרישות מוקדמות
- יכולים לקרוא ולכתוב קודי Python ו-HTML
- ניסיון בעבודה עם Gemini API ו-Google Gen AI SDK
- הבנה בסיסית של פיתוח סטאק מלא
מה תלמדו
- איך יוצרים ממשק API לקצה העורפי שמבוסס על Gemini באמצעות ספריית ה-API של Flask
- איך בונים אפליקציה של בינה מלאכותית גנרטיבית: מקשרים את הקצה הקדמי לקצה העורפי
- איך פורסים את אפליקציית GenAI שפיתחתם ב-Cloud Run
מה צריך להכין
- מחשב שפועל ורשת Wi-Fi אמינה
- מוח סקרן
3. יצירת אפליקציית Python Flask ב-Cloud Run
נתחיל ביצירת אפליקציית Python Flask ב-Cloud Run באמצעות התבנית שנוצרה באופן אוטומטי ב-Cloud Shell.
עוברים אל Cloud Shell Terminal ולוחצים על הלחצן Open Editor.
מוודאים שהפרויקט ב-Cloud Code מוגדר בפינה הימנית התחתונה (סרגל הסטטוס) של עורך Cloud Shell, כפי שמודגש בתמונה שבהמשך, והוא מוגדר לפרויקט הפעיל ב-Google Cloud שבו החיוב מופעל. נותנים הרשאה אם מוצגת בקשה לכך.
לוחצים על הפרויקט הפעיל הזה בסרגל הסטטוס וממתינים לפתיחת חלון הקופץ של Cloud Code. בחלון הקופץ, בוחרים באפשרות 'אפליקציה חדשה'.
ברשימת האפליקציות, בוחרים באפשרות Cloud Run Application:
בדף 2/2, בוחרים תבנית Python Flask:
נותנים לפרויקט שם (למשל, 'amazing-gemini-app') ולוחצים על OK:
התבנית של הפרויקט החדש שתגדירו תופיע.
כך פשוט ליצור אפליקציית Python Flask ב-Cloud Run באמצעות Google Cloud Shell.
4. פיתוח הקצה הקדמי
כפי שצוין קודם, כך תיראה אפליקציית האינטרנט הסופית:
הוא מכיל שדה קלט להזנת קישור ל-YouTube מהמשתמש, אפשרות לבחור משפחת מודלים אחרת, אזור טקסט לטקסט נוסף אם יש צורך ובורר לשליחת הטופס.
אם אתם אוהבים את האתגר, אתם יכולים לעצב טופס משלכם או לערוך את מאפייני ה-CSS. אפשר גם להעתיק את הקוד שבהמשך ולהחליף את התוכן בקובץ index.html בתיקייה templates.
<!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 ובוחרים באפשרות הרצת קובץ Python בטרמינל.
אם כל השלבים בוצעו כראוי, אמורה להיות לכם גישה לאפליקציית האינטרנט בכתובת http://127.0.0.1:8080.
5. פיתוח הקצה העורפי
אחרי שמגדירים את הקצה הקדמי, צריך ליצור שירות לקצה העורפי שמשתמש במודל Gemini כדי לסכם את סרטון YouTube שהמשתמש סיפק. שימו לב: כדי להשלים את המשימה הזו, תצטרכו להחליף את הקובץ app.py.
לפני שינוי הקוד, תצטרכו ליצור סביבה וירטואלית ולהתקין את הספריות הנדרשות להפעלת הרכיבים של Gemini.
קודם כול, צריך להוסיף את ספריית Google Gen AI SDK לקובץ requirements.txt. הוא אמור להיראות כך:
Flask==2.3.3
requests==2.31.0
debugpy # Required for debugging.
google-genai==1.2.0
שנית, צריך ליצור סביבה וירטואלית ולהתקין את החבילות מ-requirements.txt כדי שתוכלו להריץ את הקוד לקצה העורפי.
- לוחצים על הפסים בפינה הימנית העליונה ובוחרים באפשרות Terminal > New Terminal.
2. יוצרים סביבה וירטואלית על ידי הקלדה בטרמינל וממתינים להשלמת ההתקנה.
python -m venv venv source venv/bin/activate pip install -r requirements.txt
שוב, מומלץ לאתגר את עצמכם וליצור נקודת קצה של Gemini באמצעות Flask API בעצמכם. הקוד אמור להיראות דומה לקוד שמופיע בהמשך.
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: ליצירת אינטראקציה עם ה-AI של Gemini מבית Google.
- google.genai.types: להגדרת מבני נתונים ל-Gemini.
איך מפעילים את לקוח Gemini:
- הוא מגדיר חיבור ל-Vertex AI של Google, ומאפשר לאפליקציה להשתמש במודל ה-AI של Gemini. חשוב להחליף את 'REPLACE_WITH_YOUR_PROJECT_ID' במזהה הפרויקט שלכם.
הגדרת הפונקציה generate:
- הפונקציה הזו מקבלת כקלט קישור לסרטון ב-YouTube, מזהה של מודל Gemini והנחיה נוספת. לאחר מכן, המערכת שולחת את הסרטון וההנחיה ל-Gemini ומחזירה את טקסט הסיכום שנוצר.
הגדרת הנתיב של דף הבית (/):
- הפונקציה הזו מרינדרת את התבנית index.html, שבה מוצג טופס שבו המשתמש יכול להזין קישור ל-YouTube.
הגדרת המסלול לסיכום (/summarize):
- הפונקציה הזו מטפלת בשליחת טפסים. הפונקציה מאחזרת מהטופס את הקישור ל-YouTube, את המודל ואת ההנחיה, קוראת לפונקציית היצירה כדי לקבל את הסיכום ומציגה את הסיכום בתבנית result.html.
הפעלת האפליקציה:
- הוא מאחזר את יציאת השרת ממשתני הסביבה ומפעיל את שרת האינטרנט של Flask.
אפשר לבדוק את הקוד על ידי הפעלת app.py מהמסוף. באותה שיטה שבה בודקים את הקצה הקדמי. לוחצים לחיצה ימנית על app.py ובוחרים באפשרות הפעלת קובץ Python ב-Terminal.
עכשיו אפשר לבדוק את האפליקציה. הוא אמור לפעול כצפוי.
6. פריסה של אפליקציית האינטרנט
עכשיו, אחרי שיצרתם אפליקציית GenAI שפועלת, נפרוס את האפליקציה ב-Cloud Run כדי שתוכלו לשתף אותה עם חברים ועמיתים לעבודה.
עוברים אל Cloud Shell Terminal ומוודאים שהפרויקט הנוכחי מוגדר כפרויקט הפעיל. אם לא, משתמשים בפקודה 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 על המשאבים שבהם השתמשתם בקודלאב הזה, יש לפעול לפי השלבים הבאים:
- נכנסים לדף Manage resources במסוף Google Cloud.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
- לחלופין, אפשר לעבור אל Cloud Run במסוף, לבחור את השירות שפרסמתם ולמחוק אותו.