1. Giriş
Günümüzün hızlı tempolu dijital dünyasında zaman değerli bir metadır. YouTube, bilginin geniş bir deposu olsa da uzun videolar çok fazla zaman alabilir. İşte bu noktada YouTube özetleyicileri çok faydalı olur. Bu araçlar, uzun videoları kısa özetlere dönüştürerek kullanıcıların videonun tamamını izlemeden ana içeriği hızlıca kavramasına olanak tanır. Bu özellik özellikle öğrenciler, profesyoneller ve online video içeriklerinden önemli bilgileri verimli bir şekilde ayıklamak isteyen herkes için yararlıdır. YouTube özetleyiciler, kullanıcıların öğrenme ve bilgi edinme sürecini en üst düzeye çıkarırken harcanan zamanı en aza indirmesini sağlar.
Bu laboratuvarın sonunda, YouTube videolarından özet oluşturabilen çalışan bir web uygulamanız olacak. Ayrıca, Gemini API'yi ve Google Gen AI SDK'sını nasıl kullanacağınızı ve bir web uygulaması oluşturmak için bunları nasıl entegre edeceğinizi daha iyi anlayacaksınız.
Web uygulamanız şöyle görünür:
Tek yapmanız gereken YouTube videosunun bağlantısını sağlamaktır. Geri kalanını Gemini yapar.
2. Başlamadan önce
Bu kod laboratuvarında, faturalandırmanın etkin olduğu bir Google Cloud projeniz olduğu varsayılmıştır. Henüz yoksa başlamak için aşağıdaki talimatları uygulayabilirsiniz.
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Google Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğrenin.
- Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız. Bu hizmete erişmek için Google Cloud Console'un üst kısmından Cloud Shell'i etkinleştir'i tıklayın.
- Cloud Shell'e bağlandıktan sonra aşağıdaki komutu kullanarak kimliğinizin doğrulanıp doğrulanmadığını ve projenin proje kimliğinize ayarlanıp ayarlanmadığını kontrol edin:
gcloud auth list
- gcloud komutunun projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın.
gcloud config list project
- Projeniz ayarlanmadıysa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>
- Aşağıdaki API'lerin etkinleştirildiğinden emin olun:
- Cloud Run
- Vertex AI
gcloud komutunu kullanmanın alternatifi, bu bağlantıyı kullanarak konsoldan geçmektir. gcloud komutları ve kullanımı için belgelere bakın.
Ön koşullar
- Python ve HTML kodlarını okuyup yazabilme
- Gemini API ve Google Üretken Yapay Zeka SDK'sı ile çalışma konusunda rahat olmalısınız.
- Temel full-stack geliştirme hakkında bilgi sahibi olmak
Neler öğreneceksiniz?
- Flask API kitaplığını kullanarak Gemini destekli bir arka uç API'si oluşturma
- Ön uç ve arka ucu birbirine bağlayan bir GenAI uygulaması oluşturma
- Geliştirilen GenAI uygulamasını Cloud Run'a dağıtma
Gerekenler
- Çalışan bir bilgisayar ve güvenilir kablosuz bağlantı
- Meraklı bir zihin
3. Cloud Run'da Python Flask uygulaması oluşturma
Öncelikle Cloud Shell'de otomatik olarak oluşturulan şablonu kullanarak Cloud Run'da Python Flask uygulamasını oluşturacağız.
Cloud Shell Terminal'e gidin ve Düzenleyiciyi Aç düğmesini tıklayın.
Cloud Code projesinin, Cloud Shell düzenleyicisinin sol alt köşesinde (durum çubuğu) aşağıdaki resimde vurgulandığı gibi ayarlandığından ve faturalandırmayı etkinleştirdiğiniz etkin Google Cloud projesine ayarlandığından emin olun. İstenirse Yetkilendir'i tıklayın.
Durum çubuğundaki etkin projeyi tıklayın ve Cloud Code pop-up'ının açılmasını bekleyin. Pop-up'ta "Yeni Uygulama"yı seçin.
Uygulama listesinden Cloud Run Uygulaması'nı seçin:
2/2 sayfasında Python Flask şablonunu seçin:
Projenin adını istediğiniz gibi girin (ör. "amazing-gemini-app") ve Tamam'ı tıklayın:
Bu işlem, yeni oluşturduğunuz projenin şablonunu açar.
Google Cloud Shell ile Cloud Run'da Python Flask uygulaması oluşturmak bu kadar kolaydır.
4. Ön ucu oluşturma
Daha önce de belirtildiği gibi, nihai web uygulaması şu şekilde görünecektir:
Bu formda, kullanıcıdan YouTube bağlantısı almak için bir giriş alanı, farklı bir model ailesi seçme seçeneği, gerekirse ek istem sağlamak için bir metin alanı ve formu gönderme düğmesi bulunur.
Bu meydan okumayı beğendiyseniz kendi formunuzu tasarlayabilir veya CSS özelliklerini düzenleyebilirsiniz. Aşağıdaki kodu kopyalayıp templates klasöründeki index.html dosyanızdaki içeriği de bu kodla değiştirebilirsiniz.
<!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>
Bu adımı doğru şekilde yapıp yapmadığınızı test etmek için app.py dosyasını sağ tıklayın ve Terminalde Python Dosyası Çalıştır'ı seçin.
Her şey yolunda giderse web uygulamanıza http://127.0.0.1:8080 adresinden erişebilirsiniz.
5. Arka ucu oluşturma
Ön uç oluşturulduktan sonra, kullanıcı tarafından sağlanan YouTube videosunu özetlemek için Gemini modelini kullanan bir arka uç hizmeti oluşturmanız gerekir. Bu görevi tamamlamak için app.py dosyasının üzerine yazacağınızı unutmayın.
Kodu değiştirmeden önce, sanal bir ortam oluşturmanız ve Gemini bileşenlerini çalıştırmak için gerekli kitaplıkları yüklemeniz gerekir.
Öncelikle, Google Gen AI SDK kitaplığını requirements.txt dosyasına eklemeniz gerekir. Bu şekilde görünmelidir:
Flask==2.3.3
requests==2.31.0
debugpy # Required for debugging.
google-genai==1.2.0
İkinci olarak, arka uç kodunu başarıyla çalıştırabilmek için sanal bir ortam oluşturmanız ve requirements.txt dosyasından paketleri yüklemeniz gerekir.
- Sol üst köşedeki çubukları tıklayın ve Terminal > Yeni Terminal'i seçin.
2. Terminale yazarak sanal bir ortam oluşturun ve başarılı bir şekilde yüklenmesini bekleyin.
python -m venv venv source venv/bin/activate pip install -r requirements.txt
Kendinize meydan okumak ve Flask API'yi kullanarak bir Gemini uç noktası oluşturmak isterseniz bunu yapabilirsiniz. Kodunuz aşağıda verilene benzer olmalıdır.
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')
Kod temel olarak aşağıdakileri yapar:
Gerekli kitaplıkları içe aktarır:
- Flask: Web uygulamasını oluşturmak için.
- os: Ortam değişkeni erişimi için.
- google.genai: Google'ın Gemini AI ile etkileşim kurmak için.
- google.genai.types: Gemini için veri yapılarını tanımlamak amacıyla kullanılır.
Gemini istemcisini başlatma:
- Google'ın Vertex AI'ına bağlantı kurarak uygulamanın Gemini yapay zeka modelini kullanmasını sağlar. "REPLACE_WITH_YOUR_PROJECT_ID" ifadesini proje kimliğinizle değiştirdiğinizden emin olun.
generate işlevini tanımlama:
- Bu işlev, giriş olarak bir YouTube videosu bağlantısı, Gemini model kimliği ve ek bir istem alır. Ardından videoyu ve istemi Gemini'ye gönderir ve oluşturulan özet metni döndürür.
Ana Sayfa Yönlendirmesini (/) tanımlama:
- Bu işlev, kullanıcının YouTube bağlantısı girebileceği bir form görüntüleyen index.html şablonunu oluşturur.
Özetleme rotasını tanımlama (/summarize):
- Bu işlev, form gönderimlerini yönetir. Formdan YouTube bağlantısını, modeli ve istemi alır, özeti almak için generate işlevini çağırır ve ardından özeti result.html şablonunda gösterir.
Uygulamayı çalıştırma:
- Sunucu bağlantı noktasını ortam değişkenlerinden alır ve Flask web sunucusunu başlatır.
Terminalden app.py dosyasını çalıştırarak kodu test edebilirsiniz. Ön uç testiyle aynı yöntem. app.py dosyasını sağ tıklayın ve Terminal'de Python Dosyasını Çalıştır'ı seçin.
Uygulamanızı test edebilirsiniz. Beklendiği gibi çalışıyor olmalıdır.
6. Web uygulamasını dağıtma
Çalışan bir GenAI uygulamanız olduğuna göre, uygulamayı Cloud Run'a dağıtalım. Böylece, uygulamayı arkadaşlarınız ve iş arkadaşlarınızla paylaşarak deneyebilirsiniz.
Cloud Shell Terminal'e gidin ve mevcut projenin etkin projenizle yapılandırıldığından emin olun. Aksi takdirde, proje kimliğini ayarlamak için gcloud configure komutunu kullanmanız gerekir:
gcloud config set project [PROJECT_ID]
[PROJECT_ID] ifadesini kendi proje kimliğinizle değiştirmeyi unutmayın. Ardından aşağıdaki komutları sırayla tek tek girin:
cd amazing-gemini-app
gcloud run deploy --source .
Hizmetiniz için bir ad girmeniz istenir. Örneğin, "youtube-summarizer". "us-central1" bölgesine karşılık gelen numarayı seçin. Kimliği doğrulanmamış çağrılara izin vermek isteyip istemediğiniz sorulduğunda "y" deyin. Bu bir demo uygulama olduğu için kimlik doğrulaması yapılmayan erişime izin verildiğini unutmayın. Kuruluş ve üretim uygulamalarınızda uygun kimlik doğrulamayı kullanmanız önerilir.
Dağıtım tamamlandığında aşağıdakine benzer bir bağlantı alırsınız:
https://amazing-gemini-app-*******.a.run.app/
Uygulamanızı gizli pencereden veya mobil cihazınızdan kullanmaya devam edin. Bu özellik zaten kullanıma sunulmuştur.
7. Zorluk
Şimdi sıra sizde. Videoları doğrudan bilgisayarınızdan yükleyebilmek için kodu değiştirmeniz gerekiyor mu?
8. Temizleme
Bu kod laboratuvarında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:
- Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
- Proje listesinde, silmek istediğiniz projeyi seçin ve ardından Sil'i tıklayın.
- İletişim kutusuna proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.
- Alternatif olarak, konsolda Cloud Run'a gidip yeni dağıttığınız hizmeti seçip silebilirsiniz.