1. Genel Bakış
Bu Codelab, mevcut bir API arka ucu üzerinde istemci uygulaması oluşturmak için Gemini'ın nasıl kullanılacağını gösterir.
Öğrenecekleriniz
Bu laboratuvarın amacı, Gemini'ı mevcut bir uygulamada kullanmayı göstermektir. Bu laboratuvarda aşağıdakileri nasıl yapacağınızı öğreneceksiniz:
- AI/Makine Öğrenimi Görüntü İşleme Hızlı Başlangıç Çözümü'nü dağıtın
- API uygulamasını keşfetmek için Gemini'ı kullanma
- API uygulaması için istemci oluşturmak üzere Gemini'ı kullanma
Kurulum - Yeni proje oluşturun
Kuruluş politikalarınıza bağlı olarak bu çözümü doğru şekilde dağıtamayabilirsiniz.
Öneri: Şirket veya okul hesabı yerine tüm izinlere (kişisel hesap gibi) sahip olduğunuz bir hesabı kullanın
Not: Yakın zamanda tüm izinlere sahip olduğunuz bir proje oluşturduysanız ve bu projede Gemini API zaten etkinse bu projeyi kullanmaya devam edip bu adımı atlayabilirsiniz. Örneğin, yakın zamanda başka bir Gemini codelab'ini tamamladıysanız bu adımı atlayabilirsiniz.
- Google Cloud Console'a gidin.
- Mevcut proje açılır menüsünü tıklayın.
- Yeni Proje'yi tıklayın.

- Bir proje adı ekleyin ve CREATE'i (OLUŞTUR) tıklayın
- Öneri:
Project nameveProject IDöğelerinin aynı
olması için benzersiz bir proje adı kullanın.
- Öneri:
2. Jump Start Çözümünü Dağıtma
Jump Start Çözümleri, Google Cloud'un önceden oluşturulmuş çözüm şablonlarıdır. Bu laboratuvarda, Gemini'ın mevcut bir uygulamayı geliştirmeye nasıl yardımcı olabileceğini göstermek için bir Jump Start Çözümü kullanılmaktadır.
- AI/ML Görüntü İşleme Jump Start Çözüm ayrıntıları sayfasına gidin
- Hamburger menüyü tıklayın
- Ürünler ve çözümleri alt menüsünden Hemen Başlayın'ı tıklayın.

- Cloud Functions'da AI/ML Görüntü İşleme'yi tıklayın.

- DAĞIT'ı tıklayın
- Projenizde faturalandırma etkin değilse faturalandırmayı etkinleştirin.
- Proje adını onaylayın ve DEVAM'ı tıklayın
- Bölge olarak
us-central1 (Iowa)'i seçin. - Başka bir giriş istenirse varsayılanları kabul edin.
- DAĞIT'ı tıklayın.
- Bu işlem 15 dakika sürebilir.
- Herhangi bir değişiklik yapmanız gerekmiyor. Yine de Jump Start Çözümü dağıtımını dilediğiniz zaman inceleyebilirsiniz.
Sorun giderme
- Sorun:
Partial deployment.şeklinde bir hata görüyor musunuz?- Çözüm: Maalesef bu durum dağıtımı silmeniz ve baştan başlamanız gerektiği anlamına gelir. DAĞITIMI SİL yazan bir düğme bulunur. Bu düğmeyi tıklayın ve ardından Jump Start Çözümü'nü yeniden dağıtın.
3. Gemini'ı etkinleştir
Kod düzenleme ortamınızı kurun ve Gemini'ı etkinleştirin
- Cloud Shell Düzenleyici'ye gidin
- Google Cloud Console'a dönün
- Arama çubuğuna
Cloud Shell Editoryazıp açılır listeden Cloud Shell Düzenleyici'yi tıklayın.
- Eski Düzenleyici'yi kullanıyorsanız Yeni Düzenleyici'yi deneyin'i tıklayın.
- Not: Yeni Düzenleyici'yi deneyin düğmesini görmüyorsanız muhtemelen yeni Düzenleyici'yi zaten kullanıyorsunuzdur. Eski Düzenleyici çalışır ancak görünümler farklı görünecektir.
- Yeni pencerede aç simgesini

tıklayın.
- İstenirse giriş yapın veya hesabınızı yetkilendirin.
- Ayarlarınıza bağlı olarak bu laboratuvarda hesabınızı birkaç kez yetkilendirmeniz istenebilir. Sorulduğunda her seferinde Yetkilendir'i seçin.
- Gösterilen durum çubuğunda Cloud Code - Oturum aç düğmesini tıklayın. Talimatlara göre eklentiyi yetkilendirin.
. - İstenirse Google Cloud projesi seçin'i tıklayın ve
kullandığınız projeyi seçin - Gemini'ı etkinleştir
- Cloud Code'u

- tıklayın.
- Not: Ekranınızın boyutuna bağlı olarak, bu işlem bir veya iki adım sürebilir.
.
- Not: Ekranınızın boyutuna bağlı olarak, bu işlem bir veya iki adım sürebilir.
- YARDIM VE GERİ BİLDİRİM bölümünde Ayarları Değiştir'i tıklayın.
- Tür:
Gemini: Enable - Onay kutusunu işaretleyin (seçili değilse)

- IDE'nizi yeniden yükleyin.
- Bu işlem, Cloud Code'da Gemini'ı etkinleştirir ve IDE'nizde Gemini durum çubuğu görünür.

- Cloud Code'u
- Gösterilen şekilde sağ alt köşedeki Gemini düğmesini tıklayın ve doğru Google Cloud projesini seçin.

Gemini has not been enabled for your selected project. Gemini API'yi etkinleştir'i tıklayın.
- Sol tarafta doğru Google Cloud projesini görebildiğinizi (projenizin adını görürsünüz), sağ tarafta Gemini'ın etkin olduğunu ve durum çubuğunda aşağıda gösterildiği gibi yer aldığını onaylayın:

4. Cloud Functions işlevi kodunu indirme
Kodu indirin ve Jump Start Çözümleri ve dağıttığınız kod hakkında daha fazla bilgi edinmek için Gemini'ı kullanın.
- Sayfadan çıktıysanız Cloud Code 'u
tıklayın. - Cloud Functions'ı tıklayın
- Proje seçin düğmesini görürseniz bu düğmeyi tıklayın ve üzerinde çalıştığınız projeyi seçin.
- annotate-http işlevini tıklayın
- Yeni çalışma alanına indir simgesini

tıklayın.
- Çalışma alanı adı olarak annotate-http-1'i kullanın (varsayılan olmalıdır) ve Tamam'ı tıklayın.
main.pydosyasını açın- Gezgin simgesini
tıklayın. main.pydosyasını tıklayarak açın
- Gezgin simgesini
- Gemini Chat simgesini
tıklayın.- Not: Ekranınızın boyutuna bağlı olarak, bu işlem bir veya iki adım sürebilir.
.
- Not: Ekranınızın boyutuna bağlı olarak, bu işlem bir veya iki adım sürebilir.
- Gemini'a soru sormayı deneyin. Şuna benzer bir istem girin:
What is a Jump Start Solution in Google Cloud?Explain this code.
Gemini Chat sıfırlanıyor
İstemler gelecekteki istemleri etkiler. Örneğin, proje kimliğinde ya da bölgede yazım hatası yaparsanız, bunlar gelecekteki istemlerde ve yanıtlarda da ilerlemeye devam eder ve bu durum deneyiminizi olumsuz etkileyebilir. Yazım hatası yaptıysanız veya başka bir nedenle geçmişi temizlemek istiyorsanız sohbeti sıfırlamak için çöp kutusu simgesini kullanabilirsiniz.

5. Mevcut Cloud Functions uç noktasını çağırma
Kodu keşfedin ve Jump Start Çözümü'nde dağıttığınız uç noktayı çağırın.
- İstemi girin:
- ÖNEMLİ Aşağıdaki istemde
my-project-with-duetyerine proje kimliğinizi yazın. The region is us-central1 and the project id is my-project-with-duet. Write a curl post for the /annotate-http/annotate Cloud Function endpoint that performs label detection on the default eiffel tower image.- Şuna benzer bir curl komutu içeren yanıt almalısınız:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ... - Sonraki adımda kullanmak üzere bu curl komutunu kopyalayın
- ÖNEMLİ Aşağıdaki istemde
- Komutu yeni bir terminalde test edin
- Hamburger menüyü tıklayın
- Terminal'i tıklayın.
- Yeni Terminal'i
tıklayın. - Önceki adımda kullandığınız curl komutunu terminale yapıştırın ve komutu çalıştırmak için
Entertuşuna basın - Şu şekilde başlayan bir yanıt alırsınız:
{ "labelAnnotations": [ { "mid": "/m/0csby", "description": "Cloud", "score": 0.97885925, "topicality": 0.97885925, ...
- (İsteğe bağlı) Duet'e aşağıdaki gibi bir istem girerek bu işlemi herkese açık internetten başka bir resimle yapabilirsiniz:
Do the same thing with the image https://storage.googleapis.com/cloud-samples-data/vision/eiffel_tower.jpg
Sorun giderme
Belirsizlikle ilgili not: Gemini ve büyük dil modelleri (LLM) tarafından desteklenen diğer ürünler deterministik değildir. Yani aynı girdi verildiğinde farklı çıkışlar alabilirsiniz. Adımları mükemmel bir şekilde uygulasanız bile çalışan komutlar alamayabilirsiniz. Buradaki sorun giderme adımları, sorununuzu çözmeye yardımcı olacaktır.
Oluşturulan curl komutu aşağıdaki gibi görünmelidir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"image_uri": "gs://cloud-samples-data/vision/eiffel_tower.jpg",
"features": "LABEL_DETECTION"
}' \
"https://us-central1-my-project-with-duet.cloudfunctions.net/annotate-http/annotate"
Gemini, Eyfel Kulesi'nin resmi olan main.py dosyasında TEST_IMAGE kullanıyor.
curl komutu çalışmıyorsa kontrol etmeniz gereken birkaç şey vardır:
- Sorun: URL uç noktasında
.a.run.appvar mı?- Çözüm: Duet, Cloud Run'a dağıtım yaptığınızı düşünebilir. Doğru Cloud Functions uç noktasını elde etmek ve curl komutunda bunu kullanmak için
my-project-with-duetöğesinihttps://us-central1-my-project-with-duet.cloudfunctions.net/annotate-http/annotateiçindeki proje kimliğinizle değiştirin.
- Çözüm: Duet, Cloud Run'a dağıtım yaptığınızı düşünebilir. Doğru Cloud Functions uç noktasını elde etmek ve curl komutunda bunu kullanmak için
- Sorun: URL uç noktasında
my-project-with-duetvar mı?- Çözüm:
my-project-with-duetyerine proje kimliğinizi yazın.
- Çözüm:
- Sorun: URL uç noktasında
us-central1eksik mi?- Çözüm: URL'nin
us-central1ile başladığından emin olun (örneğin,https://us-central1-my-project-with-duet.cloudfunctions.net/annotate-http/annotateproje kimliğinizle).
- Çözüm: URL'nin
- Sorun: Kullanılan isteme bağlı olarak, bazen oluşturulan uç nokta
cloudfunctions.net/annotate-httpveyacloudfunctions.net/annotategibi görünür. URL uç noktasının sonunda/annotate-http/annotateeksik mi?- Çözüm: URL uç noktasının,
cloudfunctions.net/annotate-http/annotatetam API uygulama yoluyla bittiğinden emin olun
- Çözüm: URL uç noktasının,
- Sorun: cURL isteği çalışıyor ancak fazla bilgi geri gelmiyor. İstek özellik içeriyor mu?
- Çözüm: Bu büyük bir sorun değildir. Hiçbir değişiklik yapmadan devam ederseniz laboratuvarın geri kalanı çalışmaya devam eder. Daha fazla bilgiyi tekrar almak isterseniz Duet'ten cURL isteğine özellik eklemesini isteyebilirsiniz.
- Sorun: Yanıtlar yanlış görünüyor veya koda özgü bağlam bilgisi yok gibi görünüyor. Gemini Chat'i Cloud Shell Düzenleyici'de kullanıyor musunuz?
- Çözüm: Cloud Shell Düzenleyici'de Gemini Chat'i kullanırken
main.pydosyasını açıp isteminizle ilgili kodu vurgulamayı deneyin. Google Cloud genelindeki Gemini asistan farklı bağlamlara sahiptir. Bu da farklı yanıtlar sağlar.
- Çözüm: Cloud Shell Düzenleyici'de Gemini Chat'i kullanırken
- Sorun: Hızlı yanıt hâlâ pek doğru değil.
- Çözüm: Gemini'a ne üretmesini istediğiniz konusunda daha fazla yön vermek için farklı bir istem deneyin.
my-project-with-duetyerine proje kimliğinizi girdiğinizden emin olun. Örnek:Give me the curl command for: 1- Cloud Function running in us-central1 and project my-project-with-duet 2- HTTP POST to the following endpoint: /annotate-http/annotate endpoint 3- JSON in the body: { "image_uri": "gs://cloud-samples-data/vision/eiffel_tower.jpg", "features": "LABEL_DETECTION" }
- Çözüm: Gemini'a ne üretmesini istediğiniz konusunda daha fazla yön vermek için farklı bir istem deneyin.
- Sorun: Tüm bu sorun giderme adımlarına rağmen hâlâ çalışmıyor.
- Çözüm: LLM'lerin deterministik olmayan yapısı nedeniyle Duet, çalışmayacak bir yanıt oluşturmuş olabilir. Bu durumda, yukarıdaki örnek curl komutunu kopyalayıp terminalde çalıştırmayı deneyin.
my-project-with-duetyerine proje kimliğinizi girdiğinizden emin olun.
- Çözüm: LLM'lerin deterministik olmayan yapısı nedeniyle Duet, çalışmayacak bir yanıt oluşturmuş olabilir. Bu durumda, yukarıdaki örnek curl komutunu kopyalayıp terminalde çalıştırmayı deneyin.
6. API için web uygulaması istemcisi oluşturma
Jump Start Çözümü Cloud Functions işlevi uç noktasını çağıran bir index.html dosyası oluşturmak için Gemini'ı kullanın. Ardından, kodun nasıl çalıştığını görmek için index.html dosyasını Firebase Hosting'e dağıtın.
- İstemci tarafı kodunu oluşturun
- Gemini sohbet kutusuna geri dönün ve şu istemi girin:
Write an index.html file that takes two inputs: a text input for the image_uri and a dropdown for the features. It should make a post request and display the raw json result to the DOM. The fetch call should use the full url beginning with https. The default image_uri should be gs://cloud-samples-data/vision/eiffel_tower.jpg.
- Yanıtta oluşturulan
index.htmldosyasını kopyalayın.- NOT: Bu kod daha sonra gerekli olacağından endişeleniyorsanız kodu bir yere kaydedin.
- Kapat:
main.py.
- Gemini sohbet kutusuna geri dönün ve şu istemi girin:
- Yeni bir
frontenddizini oluşturun- Gemini'a şöyle sorular sorabilirsiniz:
What are the console commands to create and navigate to a new frontend directory?
mkdir frontendvecd frontendgibi sonuçlar göreceksiniz.- Hâlâ
annotate-http-1dizininde olduğunuzu onaylamak için Cloud Shell terminalini kullanın ve şu komutları çalıştırın:cd ~/annotate-http-1mkdir frontendcd frontend
- Gemini'a şöyle sorular sorabilirsiniz:
- Cloud Shell terminalinde doğru projeye giriş yaptığınızı onaylayın
- Gemini'a şöyle sorular sorabilirsiniz:
What is the gcloud command to set my project?
gcloud config set project my-project-with-duet- gibi bir sonuç görürsünüz
- Proje kimliğinin doğru olduğunu onaylayın ve ardından Cloud Shell terminalinde komutu çalıştırın.
- Gemini'a şöyle sorular sorabilirsiniz:
- Firebase'i etkinleştirme
- Yeni bir sekmede (mevcut Cloud Shell Düzenleyicinizi açık bırakın) https://console.firebase.google.com/ adresini ziyaret edin.
- Proje Ekle'yi tıklayın.
- Proje kimliğinizi yazın ve açılır listede görünmesini bekleyin
- Proje kimliğinizi tıklayın
- Devam et'i tıklayın.
- Planı onayla'yı tıklayın.
- Devam et'i tıklayın.
- Bu proje için Google Analytics'i etkinleştir'in seçimini kaldırın.
- Firebase, Google Analytics'in kullanılmasını önerir, ancak bu uygulamada kullanılmaz.
- Devam et'i tıklayın.
- Bu sekmeyi kapatıp Cloud Shell Düzenleyici'ye dönün
- Not: Bu adımlar yalnızca daha önce Firebase'i kullanmamış kullanıcılar için gereklidir, ancak bu sayede herkes aynı yolu izleyebilir. Bu işlemi daha sonra tekrar yaparsanız bu adımı atlayabilirsiniz.
- Cloud Shell'de Firebase'e giriş yapın
- Cloud Shell Editor terminalinde
firebase login --no-localhostkomutunu çalıştırın - Sağlanan URL'yi ziyaret edin
- Evet, az önce bu komutu çalıştırdım'ı tıklayın.
- Evet, bu benim oturum kimliğim'i tıklayın.
- Kopyala'yı tıklayın.
- Cloud Shell Editor terminaline dön
- Kopyalanan değeri,
Enter authorization code:yazan terminale yapıştırın. Entertuşuna basın
- Cloud Shell Editor terminalinde
- Firebase Hosting'e yeni bir web sitesi dağıtın
- Yeni bir Firebase projesini başlatın
- Gemini'a şöyle sorular sorabilirsiniz:
What are the commands to initialize and deploy a new firebase application?
- Talimatlarla birlikte
firebase initvefirebase deploygibi sonuçlar göreceksiniz. - Tercihlerinize bağlı olarak Gemini'ın bunu yapmanın birçok olası yolu olduğundan uygulamanız gereken özel bir öneri:
firebase init- Aşağı okla
Hosting: Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys- gidin
Spaceçubuğuna basınEntertuşuna basın
- Aşağı okla
Use an existing project- gidin
Entertuşuna basın
- Projelerin listesini görüyorsanız aşağı ok tuşuna basarak şu anda kullandığınız projeye gidin.
Entertuşuna basın
Please input the ID of the Google Cloud Project you would like to add Firebase:istenirse- Projenizin proje kimliğini yazın.
Entertuşuna basın
- Kalan tüm istemler için
Entertuşuna basın.
- Aşağı okla
firebase deploy
- Gemini'a şöyle sorular sorabilirsiniz:
- Yeni bir Firebase projesini başlatın
- Cloud Functions API uç noktasına yapılan bir çağrıyla uygulamanızı yeniden dağıtma
- Önceki komutlar, daha önce oluşturduğunuz
frontenddizinindeindex.htmldosyasıyla birpublicdizini oluşturmalıdır. Sonraki birkaç değişikliği yapmanız gereken~/annotate-http-1/frontend/public/index.htmldosyasıdır. index.htmldosyasını açın.- Gezgin simgesini
tıklayın. frontendklasörünü tıklayınpublicklasörünü tıklayınindex.htmldosyasını
tıklayın.
- Gezgin simgesini
- Mevcut
index.htmldosyasını boşaltın. - Daha önce kopyaladığınız kodu
index.htmldosyasına yapıştırın - Yeni uygulamayı dağıtmak için
firebase deployçalıştırın - Çalışıp çalışmadığını görmek için firebase Hosting URL'sini ziyaret edin!
- Not: Güncellemelerinizi görmek için muhtemelen web sitesini tamamen yenilemeniz gerekecektir.
- Önceki komutlar, daha önce oluşturduğunuz
Sorun giderme
index.html dosyası şuna benzer şekilde görünecektir:
<!DOCTYPE html>
<html>
<head>
<title>Vision API Annotate Image</title>
</head>
<body>
<h1>Vision API Annotate Image</h1>
<form id="annotate-form" action="https://us-central1-my-project-with-duet.cloudfunctions.net/annotate-http/annotate" method="POST">
<label for="image-uri">Image URI:</label>
<input type="text" id="image-uri" name="image_uri" value="gs://cloud-samples-data/vision/eiffel_tower.jpg">
<br>
<label for="features">Features:</label>
<select id="features" name="features">
<option value="LABEL_DETECTION">LABEL_DETECTION</option>
<option value="TEXT_DETECTION">TEXT_DETECTION</option>
<option value="IMAGE_PROPERTIES">IMAGE_PROPERTIES</option>
</select>
<br>
<input type="submit" value="Annotate">
</form>
<div id="result"></div>
<script>
const form = document.getElementById('annotate-form');
form.addEventListener('submit', (event) => {
event.preventDefault();
const imageUri = document.getElementById('image-uri').value;
const features = document.getElementById('features').value;
const data = {
image_uri: imageUri,
features: features,
};
fetch('https://us-central1-my-project-with-duet.cloudfunctions.net/annotate-http/annotate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
})
.then((response) => response.json())
.then((result) => {
const resultElement = document.getElementById('result');
resultElement.innerHTML = JSON.stringify(result, null, 2);
});
});
</script>
</body>
</html>
Web sitesini çalışmıyorsa kontrol etmeniz gereken birkaç nokta vardır:
- Sorun: 404 (Bulunamadı)
fetchyönteminde kullanılan URLmy-project-with-duetiçeriyor mu?- Çözüm:
my-project-with-duetyerine proje kimliğinizi yazın.
- Çözüm:
- Sorun: 404 (Bulunamadı)
fetchyönteminde kullanılan URL'de tam URL mi eksik?- Çözüm:
fetchyöntemine tam URL'yi dahil ettiğinizden emin olun.https://us-central1-my-project-with-duet.cloudfunctions.net/annotate-http/annotategibi bir değer olacaktır
- Çözüm:
- Sorun: Hızlı yanıt hâlâ pek doğru değil.
- Çözüm: Gemini'a ne üretmesini istediğiniz konusunda daha fazla yön vermek için farklı bir istem deneyin.
my-project-with-duetyerine proje kimliğinizi girdiğinizden emin olun. Örnek:Write an index.html file that takes two inputs: a text input for the image_uri and a dropdown for the features. It should make a post request and display the raw json result to the DOM. The fetch call should use https://us-central1-my-project-with-duet.cloudfunctions.net/annotate-http/annotate. The default image_uri should be gs://cloud-samples-data/vision/eiffel_tower.jpg.
- Çözüm: Gemini'a ne üretmesini istediğiniz konusunda daha fazla yön vermek için farklı bir istem deneyin.
- Sorun: Siteniz dağıtıldı mı ancak çalışmıyor mu?
- Çözüm: LLM'lerin deterministik olmayan yapısı nedeniyle Duet, çalışmayacak bir yanıt oluşturmuş olabilir. Bu durumda yukarıdaki
index.htmlörneğini kopyalayıpfirebase deployile yeniden dağıtmayı deneyin.my-project-with-duetyerine proje kimliğinizi girdiğinizden emin olun.
- Çözüm: LLM'lerin deterministik olmayan yapısı nedeniyle Duet, çalışmayacak bir yanıt oluşturmuş olabilir. Bu durumda yukarıdaki
7. (İsteğe bağlı) Açık Keşif
- Gemini'ı ve düzenleyici asistanını kullanarak uygulamanıza CSS stilleri ekleyin ve işiniz bittiğinde uygulamayı tekrar dağıtın. İlham arıyorsanız deneyebileceğiniz bir örnek istem:
Make this index.html file use material design.
- Deneyebileceğiniz diğer şeyler:
- Oluşturulan web sitesi, herkese açık tüm
httpresimleriyle uyumlu olmalıdır. Resmi sayfada görüntülemek için Duet ile çalışın.
- Oluşturulan web sitesi, herkese açık tüm
8. (İsteğe bağlı) Projeyi silin
Bugün oluşturduğunuz kaynaklar için sizden ücret alınmasını istemiyorsanız Duet'e bunun nasıl yapılacağını sorabilirsiniz.
- İstemi girin:
How can I delete my project?gcloud projects delete my-project-with-duetgibi bir sonuç görürsünüz.- ÖNEMLİ Önceki komutta bulunan
my-project-with-duetdeğerini proje kimliğinizle değiştirin.
- Bugün oluşturduğunuz tüm kaynakları kaldırmak için
gcloud projects deletekomutunu çalıştırın.