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

1. Giriş

Bu codelab'de, Google Cloud Storage'a yüklenen içeriklerin özetini oluşturmak için Python'da bir Cloud Functions işlevi olarak Vertex AI Metin Üretimi için Büyük Dil Modeli ( text-bison) kullanma 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 kullanılan sunucusuz bir platform.
  • Cloud Storage: Yapılandırılmamış verileri depolamak için kullanılan yönetilen bir hizmettir.
  • Cloud Logging: Günlük verilerini depolamanıza, aramanıza, analiz etmenize, izlemenize ve bunlar için uyarı oluşturmanıza olanak tanıyan, tamamen yönetilen bir hizmettir.

Ne oluşturacaksınız?

Palm API'yi kullanarak metni özetlemek için Python Cloud Functions 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 projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğ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 ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:

gcloud config set project <YOUR_PROJECT_ID>
  1. Cloud Shell terminalinden 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 terminalinden 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 Functions

Bu laboratuvarda bir Python Cloud Functions işlevi oluşturup bu işlevde Vertex AI API'yi çağıracağız.

Yeni hizmet hesabı oluşturma

Cloud Shell terminalinde aşağıdaki komutu çalıştırarak 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'i Google Hesabı e-posta adresinizle 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 iletişime gerek kalmadan tek bir API yanıtıyla tamamlanabilecek 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ı çalıştırı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örde 2 dosya var:

  1. main.py Python dosyası, metin girişlerinin kısa özetlerini oluşturmak için Vertex AI Text Generation Model'i kullanan basit bir HTTP Cloud Function'ı tanımlar. Bu işlev, parametre olarak metin girişi alır ve girişin kısa bir özetini döndürür. Bu işlev, oluşturma sürecini kontrol etmek için çeşitli parametreler (ör. oluşturulan metnin yaratıcılığı, çeşitliliği ve akıcılığı) kullanır. HTTP Cloud Functions işlevi, bir istek nesnesi kabul eder ve modelin özetini yanıt olarak döndürür.
  2. requirements.txt dosyasında paket bağımlılıkları var:
  • functions-framework==3.: İşlevin, Functions Framework'ün en yeni özelliklerini ve hata düzeltmelerini kullanmasını sağlar.
  • google-cloud-aiplatform: Vertex AI Metin Üretme Modelini kullanmak için gereklidir.
  • google-cloud-storage: Google Cloud Storage'da depolama 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: Özetlenen dosya, $BUCKET_NAME-summaries paketinde saklanır.
  • Paketleri oluşturmak için gsutil komutunu kullanacağız:
  • gsutil, komut satırından Cloud Storage'a erişmenizi sağlayan bir Python uygulamasıdır. Çok çeşitli paket ve nesne yönetimi görevlerini gerçekleştirmek için gsutil'i kullanabilirsiniz.
  • mb, "Make Bucket" (Paket Oluştur) anlamına gelir.
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 paketi hizmet hesabının Pub/Sub Yayıncısı 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ın ve not alın.
  2. Google Cloud Console 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 aldığınız hizmet hesabı kimliğini Yeni ana hesaplar bölümüne girin. Rol'ü "Pub/Sub Publisher" olarak seçip KAYDET'i tıklayın.

11c2df774fa740a9.png

  1. Bu kaynağı Cloud Functions'a dağıtın. Cloud Shell terminalinden aşağıdaki komutu çalıştırın:
  2. Bu projede 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, az önce oluşturduğumuz vertex-ai-function Cloud Functions işlevini herkese açık URL'siyle birlikte listeler. Bu işlevi GCS tetikleyicisi oluşturmak için kullanacağız.

6. İşlevi çağırma

$BUCKET_NAME paketine* bir dosya yüklendiğinde GCS tetikleyicisi işlevi çağırır. $BUCKET_NAME"-summaries paketinde aynı ada sahip özetlenmiş dosya bulunur.

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. Kovalar listesinden $BUCKET_NAME kovanızı 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 Gruplar'ı tıklayın.
  2. $BUCKET_NAME"-summaries grubu açın.

story.md dosyası, dosyanın içeriğinin ö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 Sil'i tıklayın.
  3. İletişim kutusunda proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.
  4. Projeyi korumak ve yalnızca bazı kaynakları silmek istiyorsanız Cloud Storage konsoluna gidin, Buckets'ı (Paketler) tıklayın ve listeden silmek istediğiniz paketleri işaretleyip DELETE'i (SİL) tıklayın.
  5. Cloud Functions'a gidip işlevler 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 işlemi gerçekleştirmek için Vertex AI Text Generation LLM'yi 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.