PaLM Vertex AI API ve Google Cloud Storage kullanarak içerik özeti için Cloud Functions işlevi

1. Giriş

Bu kod laboratuvarında, Python'da bulut işlevi olarak metin oluşturmak için Vertex AI Büyük Dil Modeli'ni ( text-bison) kullanarak Google Cloud Storage'a yüklenen içeriğin özetlenmesi adımlarını bulabilirsiniz. Kullanılan hizmetlerin listesi:

  • Vertex AI PaLM API: Google Yapay Zeka'nın PaLM Text Bison modeline erişim sağlayan büyük dil modeli (LLM) API'si.
  • Cloud Functions: Sunucuları yönetmek zorunda kalmadan işlevleri çalıştırmak için sunucusuz bir platform.
  • Cloud Storage: Yapılandırılmamış verileri depolamak için yönetilen bir hizmettir.
  • Cloud Logging: Günlük verilerini depolamanızı, aramanızı, analiz etmenizi, izlemenizi ve bunlar için uyarı oluşturmanızı sağlayan, tümüyle yönetilen bir hizmettir.

Ne oluşturacaksınız?

Palm API'yi kullanarak metni özetlemek için Python Cloud Functions işlevi olarak dağıtılan bir uygulama oluşturacaksınız.

2. Şartlar

  • Chrome veya Firefox gibi bir tarayıcı
  • Faturalandırmanın etkin olduğu bir Google Cloud projesi

3. Başlamadan önce

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projenizde faturalandırmanın etkinleştirildiğinden emin olun. Projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğrenin.
  3. Gerekli tüm API'lerin (Cloud Storage API, Vertex AI API, Cloud Functions API ve Cloud Logging) etkinleştirildiğinden emin olun.
  4. Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız. gcloud komutları ve kullanımı için belgelere bakın.
  5. Cloud Console'da, sağ üst köşedeki Cloud Shell'i Etkinleştir'i tıklayın:

51622c00acec2fa.png

Projeniz ayarlanmadıysa ayarlamak için aşağıdaki komutu kullanın:

gcloud config set project <YOUR_PROJECT_ID>
  1. Cloud Shell Terminal'den aşağıdaki komutu çalıştırarak gerekli tüm API'lerin etkinleştirildiğinden emin olun:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. Cloud Shell terminalinde aşağıdaki komutu çalıştırarak REGION ve PROJECT_ID için ortam değişkenleri oluşturun:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. Vertex AI API'yi çağıran Cloud işlevi

Bir Python Cloud Functions işlevi oluşturacak ve bu işlevde Vertex AI API'yi çağıracağız.

Yeni bir hizmet hesabı oluşturma

Cloud Shell Terminal'de aşağıdaki komutu yürüterek yeni bir hizmet hesabı oluşturun.

gcloud iam service-accounts create vertex-service-acc

Projenize ve kaynaklarınıza erişim sağlamak için hizmet hesabına bir rol verin.

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com" --role=roles/ml.developer

Google Hesabınıza, hizmet hesabının rollerini kullanmanıza ve hizmet hesabını diğer kaynaklara eklemenize olanak tanıyan bir rol vermek için aşağıdaki komutu çalıştırın. USER_EMAIL değerini Google Hesabınızın e-posta kimliğiyle değiştirin.

gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

Python işlevini oluşturma

Metin için PaLM API, sürekli bir görüşmeye gerek kalmadan tek bir API yanıtıyla tamamlanabilen görevler için idealdir. Şimdi bunun için Cloud Functions işlevini oluşturalım.

Depoyu klonlamak ve projeye gitmek için Cloud Shell'de aşağıdaki komutları yürütün (önceki bölümde açılan terminali kullanın):

git clone https://github.com/rominirani/genai-apptemplates-googlecloud

cd genai-apptemplates-googlecloud/summarization-gcs-cloudfunction

Bu projede ilgilendiğimiz klasör: summarization-gcs-cloudfunction.

Terminalden Cloud Shell Düzenleyici'yi açın ve GitHub'dan Cloud Shell makinenize yeni klonlanan proje klasörünün içeriğini kontrol edin.

Bu klasör 2 dosya içerir:

  1. main.py Python dosyası, metin girişlerinin kısa özetlerini oluşturmak için Vertex AI metin oluşturma modelini kullanan basit bir HTTP Cloud işlevi tanımlar. İşlev, parametre olarak bir metin girişi alır ve girişin kısa bir özetini döndürür. İşlev, oluşturma sürecini kontrol etmek için çeşitli parametreler kullanır (ör. oluşturulan metnin yaratıcılığı, çeşitliliği ve akıcılığı). HTTP Cloud Functions işlevi bir istek nesnesini kabul eder ve yanıt olarak modelin özetini döndürür.
  2. requirements.txt dosyasında paket bağımlılıkları var:
  • functions-framework==3.: İşlevin, Functions Framework'in en son özelliklerini ve hata düzeltmelerini kullanmasını sağlar.
  • google-cloud-aiplatform: Vertex AI metin oluşturma modelini kullanmak için gereklidir.
  • google-cloud-storage: Google Cloud Storage'da depolama alanı paketleri oluşturmak için gereklidir.
  • google-cloud-logging: Günlük oluşturmak için gereklidir.

5. İşlevi dağıtma

  1. İki Cloud Storage paketi oluşturun:
  • İlk paket: Özetlenecek dosyaları yüklemek için $BUCKET_NAME paketi kullanılır. Paket adınızı depolayacak ortam değişkenini aşağıdaki gibi oluşturun:
export BUCKET_NAME='Your Bucket Name'
  • İkinci paket: Özetlenmiş dosyayı depolamak için $BUCKET_NAME-summaries paketi kullanılır.
  • Paketleri oluşturmak için gsutil komutunu kullanacağız:
  • gsutil, Cloud Storage'a komut satırından erişmenizi sağlayan bir Python uygulamasıdır. Çok çeşitli paket ve nesne yönetimi görevlerini yapmak için gsutil'i kullanabilirsiniz.
  • mb, "Make Bucket" (Dizin Oluştur) ifadesinin kısaltmasıdır.
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. Bu noktada işlevi dağıtmaya hazırız. Ancak bundan önce, Cloud Storage paketinin hizmet hesabının Pub/Sub yayıncı rolüne sahip olduğundan emin olun.
  2. Google Cloud Storage'a gidin ve sol bölmede "Ayarlar"ı tıklayın.

8ce34eb05153abf2.png

  1. Ayarlardan "Hizmet hesabı"nı kopyalayıp not edin.
  2. Google Cloud Console'un Gezinme menüsünden IAM ve Yönetici'yi açın.

c5a7103e90689684.png

  1. İzinler sekmesinde ERİŞİM İZNİ VER'i tıklayın ve not ettiğiniz hizmet hesabı kimliğini girin. Yeni ana hesaplar bölümünde rolü "Pub/Sub yayıncısı" olarak seçin ve KAYDET'i tıklayın.

11c2df774fa740a9.png

  1. Bu kaynağı Cloud Functions'a dağıtın. Cloud Shell Terminal'den aşağıdaki komutu çalıştırın:
  2. Bu projedeki summarization-gcs-cloudfunction klasöründe olduğunuzdan emin olun.
  3. Aşağıdaki komutu çalıştırın:
gcloud functions deploy summarizeArticles \
--gen2 \
--runtime=python311 \
--source=. \
--region=$REGION \
--project=$PROJECT_ID \
--entry-point=summarize_gcs_object \
--trigger-bucket=$BUCKET_NAME \
--set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION \
--max-instances=1 \
--quiet
  1. Google Cloud Console'da Cloud Functions'a gidin:

Bu komut, yeni oluşturduğumuz vertex-ai-function Cloud Functions işlevini herkese açık URL'siyle birlikte listeler. GCS tetikleyicisi oluşturmak için bu işlevi kullanacağız.

6. İşlevi çağırma

$BUCKET_NAME paketine dosya yüklendiğinde GCS tetikleyicisi işlevi çağırır. $BUCKET_NAME"-summaries paketi, aynı ada sahip özetlenmiş dosyayı içerir.

Başlamadan önce, summarization-gcs-cloudfunction klasöründeki örnek story.md dosyasını yerel makinenize kaydedin.

  1. Google Cloud Console'da Cloud Storage'a gidin.
  2. Paket listesindeki $BUCKET_NAME paketinizi açın.
  3. Dosya yükle'yi tıklayın ve story.md dosyasını seçin.

summarizeArticles işlevi tetiklenir ve dosyanın içeriğini özetlemeye başlar.

  1. Sol gezinme bölmesinde Paketler'i tıklayın.
  2. $BUCKET_NAME"-summaries paketinizi açın.

story.md dosyası, dosya içeriğinin bir özetini içerir.

7. Temizleme

Bu yayında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:

  1. Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
  2. Proje listesinde, silmek istediğiniz projeyi seçin ve ardından Sil'i tıklayın.
  3. İletişim kutusuna proje kimliğini yazın ve ardından projeyi silmek için Kapat'ı tıklayın.
  4. Projeyi saklayıp yalnızca bazı kaynakları silmek istiyorsanız Cloud Storage konsoluna gidin, Paketler'i tıklayın, listeden silmek istediğiniz paketleri işaretleyin ve SİL'i tıklayın.
  5. Cloud Functions'e gidip işlev listesinden silmek istediğiniz işlevi işaretleyip SİL'i tıklayarak da Cloud Functions işlevini silebilirsiniz.

8. Tebrikler

Tebrikler! Verilerinizde metin özetleme yapmak için Vertex AI metin oluşturma LLM'sini programatik olarak başarıyla kullandınız. Mevcut modeller hakkında daha fazla bilgi edinmek için Vertex AI LLM ürün dokümanlarına göz atın.