ADK ile çoklu aracı sistemi oluşturma, Agent Engine'de dağıtma ve A2A protokolünü kullanmaya başlama

1. Bu laboratuvarın amacı

Bu uygulamalı laboratuvarda, isteminize göre görüntü oluşturan ve isteminize göre değerlendiren ADK (Agent Development Kit) kullanarak çoklu aracı uygulaması oluşturacaksınız. Görüntü, istemde açıklanan koşulları yeterince karşılamıyorsa aracı, koşullarınızı karşılayan görüntü oluşturulana kadar sürekli olarak görüntü üretir. Bu uygulamalı etkinlikteki her aracının tek bir amacı vardır. Aracılar, genel hedefe ulaşmak için birbirleriyle işbirliği yapar. Uygulamayı yerel olarak test etmeyi ve Vertex AI Agent Engine'de dağıtmayı öğreneceksiniz.

Neler öğreneceksiniz?

2. Proje Ayarları

  • Kullanabileceğiniz bir projeniz yoksa GCP Console'da yeni bir proje oluşturmanız gerekir.
  • Bu laboratuvarda görevlerimizi gerçekleştirmek için GCP Cloud Shell'i kullanacağız. Cloud Shell'i açın ve Cloud Shell'i kullanarak projeyi ayarlayın.
  • Burayı tıklayarak GCP Cloud Shell'i açın. Cloud Shell . "Authorize Shell" (Shell'e Yetki Ver) pop-up'ı gösterilirse Cloud Shell Editor'e yetki vermek için tıklayın.
  • Projenin kimliğinin doğrulanıp doğrulanmadığını Cloud Shell terminalinde aşağıdaki komutu kullanarak kontrol edebilirsiniz.
gcloud auth list
  • Projenizi onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project
  • Proje kimliğini kopyalayın ve ayarlamak için aşağıdaki komutu kullanın.
gcloud config set project <YOUR_PROJECT_ID>
  • Proje kimliğinizi hatırlamıyorsanız aşağıdaki komutla tüm proje kimliklerinizi listeleyebilirsiniz:
gcloud projects list

3. API'leri etkinleştir

Bu laboratuvarı çalıştırmak için bazı API hizmetlerini etkinleştirmemiz gerekiyor. Cloud Shell'de aşağıdaki komutu çalıştırın.

gcloud services enable aiplatform.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com

API'lerle tanışın

  • Vertex AI API (aiplatform.googleapis.com), Vertex AI platformuna erişimi etkinleştirir. Böylece uygulamanız, metin oluşturma, sohbet oturumları ve işlev çağrısı için Gemini modelleriyle etkileşim kurabilir.
  • Cloud Resource Manager API (cloudresourcemanager.googleapis.com), Google Cloud projelerinizin meta verilerini (ör. proje kimliği ve adı) programatik olarak yönetmenize olanak tanır. Bu meta veriler, proje kimliğini ve izinlerini doğrulamak için genellikle diğer araçlar ve SDK'lar tarafından gereklidir.

4. Agent Development Kit'e Giriş

Agent Development Kit, yapay zeka destekli uygulamalar geliştiren geliştiriciler için çeşitli önemli avantajlar sunar:

  1. Çoklu Temsilci Sistemleri: Hiyerarşide birden fazla uzmanlaşmış temsilciyi bir araya getirerek modüler ve ölçeklenebilir uygulamalar oluşturun. Karmaşık koordinasyon ve yetki devrini etkinleştirin.
  2. Zengin Araç Ekosistemi: Temsilcilere çeşitli özellikler kazandırın: Önceden oluşturulmuş araçları (Arama, Kod Yürütme vb.) kullanın, özel işlevler oluşturun, üçüncü taraf temsilci çerçevelerindeki (LangChain, CrewAI) araçları entegre edin veya hatta diğer temsilcileri araç olarak kullanın.
  3. Esnek Düzenleme: Tahmin edilebilir ardışık düzenler için iş akışı aracılarını (SequentialAgent, ParallelAgent ve LoopAgent) kullanarak iş akışları tanımlayın veya uyarlanabilir davranış için LLM destekli dinamik yönlendirmeden (LlmAgent aktarımı) yararlanın.
  4. Entegre Geliştirici Deneyimi: Güçlü bir KSA ve etkileşimli geliştirme kullanıcı arayüzü ile yerel olarak geliştirin, test edin ve hataları ayıklayın. Etkinlikleri, durumu ve aracı yürütme adımını adım adım inceleyin.
  5. Yerleşik Değerlendirme: Hem nihai yanıt kalitesini hem de adım adım yürütme sürecini önceden tanımlanmış test senaryolarına göre değerlendirerek temsilci performansını sistematik olarak değerlendirin.
  6. Dağıtıma Hazır: Temsilcilerinizi container'a dönüştürün ve istediğiniz yerde dağıtın. Yerel olarak çalıştırın, Vertex AI Agent Engine ile ölçeklendirin veya Cloud Run ya da Docker kullanarak özel altyapıya entegre edin.

Diğer üretken yapay zeka SDK'ları veya aracı çerçeveleri de modelleri sorgulamanıza ve hatta araçlarla desteklemenize olanak tanır. Ancak birden fazla model arasında dinamik koordinasyon sağlamak için sizin tarafınızda önemli ölçüde çalışma yapılması gerekir.

Agent Development Kit, bu araçlara kıyasla daha üst düzey bir çerçeve sunar. Bu sayede, karmaşık ancak bakımı kolay iş akışları için birden fazla aracı birbirine kolayca bağlayabilirsiniz.

e97ad3e26ceb7a2f.png

Şekil 1: ADK (Agent Development Kit)'nın konumlandırılması

5. Vertex AI Agent Engine'e giriş

Vertex AI Agent Engine, Google Cloud'da aracı dağıtmak için kullanılan tümüyle yönetilen bir hizmettir. Geliştiriciler, Vertex AI Agent Engine ile ADK (Agent Development Kit) , LangChain, LangGraph, CrewAI, AutoGen ve daha fazlası gibi OSS yapay zeka aracılarını Vertex AI'da geliştirebilir, özelleştirebilir, dağıtabilir, sunabilir ve yönetebilir.

Agent Engine, aracı belleği olarak da bilinen kullanıcı verilerini işlemek için hizmetler de sunar. Şu anda iki tür bellek hizmeti mevcuttur.

  • Kısa süreli bellek: Agent Engine Oturumları ile devam eden görüşme geçmişini (durum) tek bir oturumda kısa süreli bellek olarak saklayabilir, yönetebilir ve alabilirsiniz.
  • Uzun süreli bellek: Agent Engine Memory Bank ile özellikle birden fazla oturumda anıları (durum) uzun süreli bellek olarak saklayın, dönüştürün ve alın.

Aracıları Cloud Run veya GKE gibi diğer Google Cloud hizmetlerine de dağıtabilirsiniz. Aşağıdaki kullanım alanları için Vertex AI Agent Engine'i kullanmayı düşünebilirsiniz.

  • Durumlu yönetilen çalışma zamanı: Aracı dağıtımınız için durumlu ve tam olarak yönetilen bir çalışma zamanına ihtiyacınız varsa Vertex AI Agent Engine iyi bir seçimdir. Çünkü oturum yönetimi ve yapay zeka aracı kalıcılığı gibi yaygın görevleri soyutlar.
  • Kod Yürütme: Aracınızın, kullanıcı oturumu sırasında dinamik olarak oluşturulan kodu yürütmesi gerekiyorsa Agent Engine, kodu yürütebileceğiniz güvenli bir Sandbox sağlar.
  • Esnek uzun süreli bellek: Temsilcileriniz için esnek uzun süreli belleğe ihtiyacınız varsa Vertex AI Agent Engine ile kullanılabilen Vertex AI Memory Bank, oturumlar arasında kullanılabilen ve kullanıcınızla ilgili bilgileri hatırlamanın esnek bir yolunu sunabilir.

Esnek bir uygulama mimarisi oluşturmak için Vertex AI Agent Engine'i Cloud Run gibi diğer çalışma zamanlarıyla da birleştirebilirsiniz. Aşağıda, bir aracı oluşturmak için çeşitli hizmetlerin kullanıldığı bir referans mimarisi örneği verilmiştir.

d8eb74a6d8a055f9.png

Şekil 2: Birden fazla hizmet kullanarak Aracı oluşturmaya yönelik örnek bir referans mimarisi.

6. A2A'ya giriş

Agent2Agent (A2A) protokolü, farklı çerçeveler, tedarikçiler ve alanlardaki bağımsız yapay zeka temsilcileri arasında sorunsuz ve güvenli iletişim ile işbirliğini sağlamak için tasarlanmış açık bir standarttır.

  1. Evrensel Birlikte Çalışabilirlik: A2A, temel teknolojilerinden bağımsız olarak temsilcilerin birlikte çalışmasına olanak tanıyarak gerçek anlamda çoklu temsilci ekosistemi oluşturur. Bu sayede, farklı platformlarda farklı şirketler tarafından oluşturulan temsilciler iletişim kurabilir ve koordineli çalışabilir.
  2. Yetenek Keşfi: Ajanlar, kimliklerini, desteklenen A2A özelliklerini, becerilerini ve kimlik doğrulama koşullarını açıklayan "Ajan Kartları" (JSON belgeleri) kullanarak yeteneklerini tanıtabilir. Bu sayede diğer temsilciler, belirli bir görev için en uygun temsilciyi keşfedip seçebilir.
  3. Varsayılan olarak güvenli: Güvenlik, temel bir ilkedir. A2A, güvenli etkileşimler sağlamak ve hassas verileri korumak için HTTPS/TLS, JWT, OIDC ve API anahtarları gibi standartları kullanan kurumsal düzeyde kimlik doğrulama ve yetkilendirme mekanizmalarını içerir.
  4. Biçimden Bağımsız: Protokol; metin, ses ve video akışı gibi çeşitli iletişim biçimlerinin yanı sıra etkileşimli formları ve yerleştirilmiş iFrame'leri destekler. Bu esneklik, temsilcilerin görev ve kullanıcı için en uygun biçimde bilgi alışverişinde bulunmasına olanak tanır.
  5. Yapılandırılmış Görev Yönetimi: A2A, görev atama, izleme ve tamamlama için net protokoller tanımlar. İlgili görevlerin benzersiz görev kimlikleri kullanılarak gruplandırılmasını ve farklı temsilciler arasında yönetilmesini destekler. Görevler, tanımlanmış yaşam döngülerinden (ör. gönderildi, çalışılıyor, tamamlandı) geçebilir.
  6. Opak Yürütme: Önemli bir özellik, aracıların diğer aracılara kendi içindeki muhakeme süreçlerini, hafızasını veya belirli araçlarını açıklamasına gerek olmamasıdır. Yalnızca çağrılabilir hizmetlerini kullanıma sunarak modülerliği ve gizliliği desteklerler.
  7. Mevcut Standartlar Üzerine Kurulmuştur: A2A, gerçek zamanlı akış için HTTP, sunucu tarafından gönderilen etkinlikler (SSE) ve yapılandırılmış veri değişimi için JSON-RPC gibi yerleşik web teknolojilerinden yararlanır. Bu sayede mevcut BT altyapısıyla entegrasyon kolaylaşır.
  8. Asenkron İletişim: Protokol, asenkron iletişim öncelikli olacak şekilde tasarlanmıştır. Bu sayede görevlerin esnek bir şekilde ilerlemesi sağlanır ve bağlantı sürekli olarak korunmasa bile güncellemeler için anlık bildirimler etkinleştirilir.

7. Aracı Mimarisi

Bu laboratuvarda, belirttiğiniz özelliklere göre görüntü oluşturan ve görüntüyü size sunmadan önce değerlendiren çok agent'lı bir uygulama oluşturacaksınız.

Sistem, tüm süreci yöneten image_scoring adlı ana bir aracıyla yapılandırılmıştır. Bu ana temsilcinin, daha spesifik görevler için kendi alt temsilcilerine sahip olan image_generation_scoring_agent adlı bir alt temsilcisi vardır. Bu durumda, ana temsilci görevleri alt temsilcilere devrettiği için hiyerarşik bir ilişki oluşur. bfed5e21e0b66d26.png

Şekil 3: Genel temsilci akışı.

Tüm Aracıların Listesi

Ajan

Purpose

Alt aracılar

image_scoring (Main Agent)

Bu, genel iş akışını yöneten kök aracıdır. Sonlandırma koşulu karşılanana kadar image_generation_scoring_agent ve checker_agent'ı döngü içinde tekrar tekrar çalıştırır.

image_generation_scoring_agent
checker_agent_instance

image_generation_scoring_agent (image_scoring alt aracısı)

Bu aracı, resim oluşturma ve puanlama işlemlerinin temel mantığından sorumludur. Bunu yapmak için üç alt aracıdan oluşan bir sıra yürütür.

image_generation_prompt_agent
image_generation_agent
scoring_images_prompt

checker_agent_instance (image_scoring alt aracısı)

Bu aracı, resim puanlama sürecinin devam edip etmeyeceğini veya sonlandırılıp sonlandırılmayacağını kontrol eder. Sonlandırma koşulunu değerlendirmek için check_tool_condition aracını kullanır.

-

checker_agent_instance (image_scoring alt aracısı)

Bu ajan, görüntü üretimi için istem oluşturma konusunda uzmandır. Giriş metnini alır ve görüntü oluşturma modeline uygun ayrıntılı bir istem oluşturur.

-

image_generation_prompt_agent (image_generation_scoring_agent'ın alt aracısı)

Bu ajan, görüntü üretimi için istem oluşturma konusunda uzmandır. Giriş metnini alır ve görüntü üretme modeline uygun ayrıntılı bir istem oluşturur.

-

scoring_images_prompt (image_generation_scoring_agent alt aracısı):

Bu ajan, resimleri çeşitli ölçütlere göre değerlendirme ve puanlama konusunda uzmandır. Oluşturulan görüntüyü alıp puan verir.

-

Kullanılan Tüm Araçların Listesi

Araç

Açıklama

Kullanıcı aracısı

check_tool_condition

Bu araç, döngü sonlandırma koşulunun karşılanıp karşılanmadığını veya maksimum yineleme sayısına ulaşılıp ulaşılmadığını kontrol eder. Bu koşullardan biri doğruysa döngü durdurulur.

checker_agent_instance

generate_images

Bu araç, Imagen 3 modelini kullanarak görüntüler oluşturur. Ayrıca, oluşturulan görüntüleri bir Google Cloud Storage paketine kaydedebilir.

image_generation_agent

get_policy

Bu araç, bir JSON dosyasından politika getirir. Politika, image_generation_prompt_agent tarafından görüntü oluşturma istemini oluşturmak ve scoring_images_prompt tarafından görüntüleri puanlamak için kullanılır.

image_generation_agent

get_image

Bu araç, oluşturulan görüntü yapısını puanlanabilmesi için yükler.

scoring_images_prompt

set_score

Bu araç, oturum durumunda oluşturulan resmin toplam puanını ayarlar.

scoring_images_prompt

8. ADK'yı yükleme ve ortamınızı ayarlama

Bu uygulamalı laboratuvarda görevleri gerçekleştirmek için Cloud Shell'i kullanacağız.

Cloud Shell Düzenleyici sekmesi hazırlama

  1. Doğrudan Cloud Shell Düzenleyici'ye gitmek için bu bağlantıyı tıklayın.
  2. Devam'ı tıklayın.
  3. Cloud Shell'i yetkilendirmeniz istendiğinde Yetkilendir'i tıklayın.
  4. Bu laboratuvarın geri kalanında, Cloud Shell Düzenleyici ve Cloud Shell Terminal ile IDE'niz olarak bu pencerede çalışabilirsiniz.
  5. Cloud Shell Düzenleyici'de Terminal>New Terminal'i (Terminal>Yeni Terminal) kullanarak yeni bir terminal açın. Aşağıdaki tüm komutlar bu terminalde çalıştırılacak.

Bu laboratuvar için ADK'yı ve kod örneklerini indirip yükleyin.

  1. Gerekli kaynağı GitHub'dan klonlamak ve gerekli kitaplıkları yüklemek için aşağıdaki komutları yürütün. Cloud Shell Düzenleyici'de açılan Terminal'de komutları çalıştırın.
#create the project directory
mkdir ~/imagescoring
cd ~/imagescoring
#clone the code in the local directory
git clone https://github.com/haren-bh/multiagenthandson.git
  1. Python ortamı oluşturmak için uv'yi kullanacağız (Cloud Shell Düzenleyici Terminali'nde çalıştırın):
#Install uv if you do not have installed yet
pip install uv

#Create the virtual environment
uv venv .adkvenv

source .adkvenv/bin/activate

#go to the project directory
cd ~/imagescoring/multiagenthandson

#install dependencies
uv pip install -r pyproject.toml
  1. Bulut depolama alanı paketiniz yoksa Google Cloud Storage'da yeni bir paket oluşturun. Paketi gsutil komutunu kullanarak da oluşturabilirsiniz. Agent Engine'e Google Cloud Storage erişimi verin (Cloud Shell Düzenleyici Terminali'nde çalıştırın).
# First, make sure your PROJECT_ID variable is set
PROJECT_ID=$(gcloud config get-value project)

# Now, create the bucket with a unique name
# We'll use the project ID to help ensure uniqueness
gsutil mb gs://${PROJECT_ID}-imagescoring-bucket

#Now lets give Agent Engine the permission to access Cloud Storage
# 1. Get the current Project ID (text) and Project Number (numeric)
PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

# 2. Construct the Reasoning Engine Service Account email
SA_EMAIL="service-${PROJECT_NUMBER}@gcp-sa-aiplatform-re.iam.gserviceaccount.com"
# 3. Create Agent Engine Service account if not already created
gcloud beta services identity create --service=aiplatform.googleapis.com --project=${PROJECT_NUMBER}

# 3. Grant GCS Access
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/storage.objectUser" --condition=None
  1. Düzenleyicide Görünüm > Gizli dosyaları aç/kapat'a gidin. Ayrıca image_scoring klasöründe aşağıdaki içeriğe sahip bir .env dosyası oluşturun. Proje adınız ve Cloud Storage paketi gibi gerekli ayrıntıları ekleyin (Run in Cloud Shell Editor Terminal).
#go to image_scoring folder
cd ~/imagescoring/multiagenthandson/image_scoring
cat <<EOF>> .env
GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project)
GOOGLE_CLOUD_LOCATION=us-central1
GOOGLE_CLOUD_STORAGE_BUCKET=$(gcloud config get-value project)-imagescoring-bucket
GCS_BUCKET_NAME=$(gcloud config get-value project)-imagescoring-bucket
SCORE_THRESHOLD=40
IMAGEN_MODEL="imagen-3.0-generate-002"
GENAI_MODEL="gemini-2.5-flash"
EOF
  1. Cloud Shell Düzenleyici menüsünde Dosya > Klasörü Aç'ı seçin.
  2. Açılan kutuda, kullanıcı adınızın ardından aşağıdaki klasör bilgilerini ekleyin: imagescoring/. Tamam'ı tıklayın. Artık soldaki gezgin bölmesinde proje yapınızın tamamını görebilirsiniz.
  3. Gezgin yan bölmesinde image_scoring klasörüne gidin. agent.py dosyasını tıklayarak açın ve aracı yapısını inceleyin. Bu aracı, diğer alt aracılara bağlanacak olan kök aracı içerir. bb0c3b10a31e9d14.png

Şekil 4: Gezgin yan bölmesinden görülebilen klasör yapısı. Dosyanın içeriğini görmek için dosyayı tıklamanız yeterlidir.

  1. Terminalde multiagenthandson üst dizinine geri dönün ve aracı yerel olarak çalıştırmak için aşağıdaki komutu yürütün (Cloud Shell Düzenleyici Terminali'nde çalıştırın).
#go to the directory multiagenthandson
cd ~/imagescoring/multiagenthandson
# Run the following command to run agents locally
adk web

dfda0b40b44e9230.png

Şekil 5: ADK uygulamasının başlatılması

  1. ADK'nın tarayıcı tabanlı GUI istemcisini açmak için terminalde gösterilen http:// URL'sini Ctrl+Click (MacOS için CMD+Click) ile tıklayın. 5. Şekil'e benzemelidir.
  2. Sol üst taraftaki açılır menüden image_scoring'i seçin (Şekil 5'e bakın). Şimdi de birkaç resim oluşturalım. Resimleri Google Cloud Storage paketinde de bulabilirsiniz. Aşağıdaki istemleri veya kendi istemlerinizi deneyin.
  • Gün batımında huzurlu bir dağ manzarası
  • Bisiklet süren bir kedi

c159623ad45f37cf.png

Şekil 6: Örnek çıktı

9. Agent Engine'e dağıtma

Şimdi temsilciyi Agent Engine'e dağıtıyoruz. Agent Engine, GCP'de aracı dağıtmak için kullanılan, tümüyle yönetilen bir hizmettir. Agent Engine, ADK (Agent Development Kit) ile uyumludur. Bu nedenle, ADK (Agent Development Kit) ile oluşturulan temsilciler Agent Engine'de dağıtılabilir.

  1. Cloud Shell Düzenleyici terminalinde aşağıdaki adımlara geçmeden önce Ctrl+C ile ADK sunucusunu kapatın.
  2. Poetry'yi kullanarak requirements.txt dosyasını oluşturun. Poetry, requirements.txt dosyasını oluşturmak için pyproject.toml dosyasını kullanır. Komutu çalıştırdıktan sonra requirements.txt dosyasının oluşturulup oluşturulmadığını kontrol edin (Cloud Shell Düzenleyici Terminali'nde çalıştırın).
# Go to the parent folder containing pyproject.toml file
cd ~/imagescoring/multiagenthandson

# install poetry-plugin-export
uv pip install poetry-plugin-export

#Create requirements.txt file
python3 -m poetry export -f requirements.txt --output requirements.txt --without-hashes
  1. Paketi oluşturun. Uygulamamızı .whl Python paketine paketlememiz gerekir. Bunu yapmak için şiir kullanacağız. Komutu yürüttükten sonra bir dist klasörünün oluşturulduğundan ve bu klasörün .whl dosyasını içerdiğinden emin olun (Cloud Shell Düzenleyici Terminali'nde çalıştırın).
# Go to the parent folder containing pyproject.toml file
cd ~/imagescoring/multiagenthandson

#Create python package, to create whl file
python3 -m poetry build
  1. Şimdi, resim puanlama aracımızı Agent Engine hizmetine dağıtan komut dosyasını hazırlayacağız. deploy dizininde, Cloud Shell Düzenleyici yan bölmesinde deploy.py dosyasını bulun ve açmak için tıklayın. İçeriğini aşağıdaki şekilde doğrulayın
import vertexai
from image_scoring.agent import root_agent
import os
import glob # To easily find the wheel file
from dotenv import load_dotenv

# Load environment variables from image_scoring/.env
env_path = os.path.join(os.path.dirname(__file__), "..", "image_scoring", ".env")
load_dotenv(env_path)

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")
LOCATION = os.getenv("GOOGLE_CLOUD_LOCATION", "us-central1")
STAGING_BUCKET = f"gs://{os.getenv('GOOGLE_CLOUD_STORAGE_BUCKET')}"

from vertexai import agent_engines

client=vertexai.Client(
    project=PROJECT_ID,
    location=LOCATION,
)
remote_app = client.agent_engines.create(
    agent=root_agent,
    config={
        "display_name": "image-scoring",
        "staging_bucket": STAGING_BUCKET,
        "requirements": open(os.path.join(os.getcwd(), "requirements.txt")).readlines() + ["./dist/image_scoring-0.1.0-py3-none-any.whl"],
        "extra_packages": [
            "./dist/image_scoring-0.1.0-py3-none-any.whl",
        ],     "env_vars":{"GCS_BUCKET_NAME":os.getenv('GOOGLE_CLOUD_STORAGE_BUCKET')}
    }
)
print(f"DEBUG: AgentEngine attributes: {dir(remote_app)}")
try:
    print(remote_app.api_resource.name)
except AttributeError:
    print("Could not find resource_name, check DEBUG output above.")
  1. Artık dağıtım komut dosyasını çalıştırabiliriz. Öncelikle multiagenthandson (Run in Cloud Shell Editor Terminal) adlı üst klasöre gidin.
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson

#run deploy script from the parent folder containing deploy.py
python3 -m deploy.deploy

Dağıtım işleminden sonra aşağıdakine benzer bir ekran görürsünüz: 57d86995465cdcda.png

Şekil 7: Örnek çıktı

  1. Şimdi dağıtılan temsilciyi test edelim. Uzakta dağıtılan aracı motorunu test etmek için önce terminaldeki dağıtım çıkışından aracı konumunu kopyalayın. Şuna benzer bir şekilde görünmelidir: projects/85469421903/locations/us-central1/reasoningEngines/7369674597261639680 .
    Cloud Shell Düzenleyici yan bölmesinde testclient klasörüne gidin, remote_test.py dosyasını tıklayarak açın ve aşağıdaki satırları düzenleyin:
REASONING_ENGINE_ID = "projects/xxx/locations/us-central1/reasoningEngines/xxx"  # TODO: Change this
  1. multiagenthandson kök dizininden Cloud Shell Düzenleyici Terminali'nde aşağıdaki komutu çalıştırın. Çıkışınız Şekil 8'dekiyle eşleşmelidir.
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson

#execute remote_test.py
python3 -m testclient.remote_test

c612b8a79a7120ae.png

Şekil 8: Örnek çıktı

10. A2A temsilcisi oluşturma

Bu adımda, önceki adımlarda oluşturduğumuz temsilciyi temel alan basit bir A2A temsilcisi oluşturacağız. Mevcut ADK (Agent Development Kit) aracıları, A2A protokolü altında yayınlanabilir. Bu adımda öğreneceğiniz temel bilgiler şunlardır:

  • A2A protokolü ile ilgili temel bilgileri öğrenin.
  • ADK ve A2A protokollerinin birlikte nasıl çalıştığını öğrenin.
  • A2A protokolüyle nasıl etkileşim kuracağınızı öğrenin.

Bu uygulamalı laboratuvarda, image_scoring_adk_a2a_server klasöründeki kodu kullanacağız. İşleme başlamadan önce lütfen dizininizi bu klasör olarak değiştirin (Cloud Shell Düzenleyici Terminali'nde çalıştırın).

#change directory to image_scoring_adk_a2a_server
cd ~/imagescoring/multiagenthandson/image_scoring_adk_a2a_server

#copy the env file
cp ~/imagescoring/multiagenthandson/image_scoring/.env remote_a2a/image_scoring

1. A2A temsilci kartı oluşturma

A2A protokolü, aracıyla ilgili tüm bilgileri (ör. aracının yetenekleri, kullanım kılavuzu) içeren bir aracı kartı gerektirir. Bir A2A aracısı dağıtıldıktan sonra aracı kartı, ".well-known/agent-card.json" bağlantısı kullanılarak görüntülenebilir. Müşteriler, isteği temsilcilere göndermek için bu bilgileri kullanabilir.

remote_a2a/image_scoring dizinine gidin ve Cloud Shell Düzenleyicisi yan bölmesinde agents.json dosyasını bulun. Dosyayı açmak için tıklayın ve içeriğin aşağıdakilerle eşleştiğini doğrulayın:

{
 "name": "image_scoring",
 "description": "Agent that generates images based on user prompts and scores their adherence to the prompt.",
 "url": "http://localhost:8001/a2a/image_scoring",
 "version": "1.0.0",
 "defaultInputModes": ["text/plain"],
 "defaultOutputModes": ["image/png", "text/plain"],
 "capabilities": {
   "streaming": true,
   "functions": true
 },
 "skills": [
   {
     "id": "generate_and_score_image",
     "name": "Generate and Score Image",
     "description": "Generates an image from a given text prompt and then evaluates how well the generated image adheres to the original prompt, providing a score.",
     "tags": ["image generation", "image scoring", "evaluation", "AI art"],
     "examples": [
       "Generate an image of a futuristic city at sunset",
       "Create an image of a cat playing a piano",
       "Show me an image of a serene forest with a hidden waterfall"
     ]
   }
 ]
}

2. A2A temsilcisi oluşturma image_scoring_adk_a2a_server kök dizininde a2a_agent.py dosyasının bulunduğunu doğrulayın. Cloud Shell Düzenleyici yan bölmesinde dosya adını tıklayarak açabilirsiniz. Bu dosya, A2A aracısının giriş noktası olarak işlev görür ve aşağıdaki içeriğe sahip olmalıdır:

#change directory to image_scoring_adk_a2a_server
cd ~/imagescoring/multiagenthandson/image_scoring_adk_a2a_server
from google.adk.agents.remote_a2a_agent import RemoteA2aAgent

root_agent = RemoteA2aAgent(
   name="image_scoring",
   description="Agent to give interesting facts.",
   agent_card="http://localhost:8001/a2a/image_scoring/.well-known/agent.json",
  
   # Optional configurations
   timeout=300.0,          # HTTP timeout (seconds)
   httpx_client=None,      # Custom HTTP client
)

3. A2A temsilcisini çalıştırma

Artık temsilciyi çalıştırmaya hazırız. Aracıyı çalıştırmak için üst klasör image_scoring_adk_a2a_server içinden aşağıdaki komutu yürütün (Cloud Shell Düzenleyici Terminali'nde çalıştırın).

#following command runs the ADK agent as a2a agent
adk api_server --a2a --port 8001 remote_a2a

4. A2A temsilcisini test etme

Temsilci çalıştıktan sonra artık temsilciyi test edebiliriz. Öncelikle temsilci kartını kontrol edelim. Terminal>New Terminal'ı kullanarak yeni bir terminal açın ve aşağıdaki komutu çalıştırın (Run in the newly opened Cloud Shell Editor Terminal).

#Execute the following 
curl http://localhost:8001/a2a/image_scoring/.well-known/agent.json

Yukarıdaki komutun yürütülmesi, A2A aracımızın aracı kartını göstermelidir. Bu kart, önceki adımda oluşturduğumuz agent.json dosyasının içeriğinden oluşur.

Şimdi temsilciye istek gönderelim. Aracıya istek göndermek için curl'ü kullanabiliriz (Yeni açılan Cloud Shell Editor Terminal'de çalıştırın).

curl -X POST   http://localhost:8001/a2a/image_scoring   -H 'Content-Type: application/json'   -d '{
    "id": "uuid-123",
    "params": {
      "message": {
        "messageId": "msg-456",
        "parts": [{"text": "Create an image of a cat"}],
        "role": "user"
      }
    }
  }'

Yukarıdaki istekte, "Bir kedi resmi oluştur" satırını değiştirerek istemi değiştirebilirsiniz. Komutu çalıştırdıktan sonra belirtilen Google Cloud Storage'da çıkış resmini kontrol edebilirsiniz.

11. Temizleme

Şimdi de oluşturduğumuz öğeleri temizleyelim.

  1. Yeni oluşturduğumuz Vertex AI Agent Engine sunucusunu silin. Google Cloud Console'un arama çubuğuna Vertex AI yazarak Vertex AI'a gidin. Sol taraftaki Agent Engine'i tıklayın.Sil'i tıklayarak temsilciyi silebilirsiniz. 98e8aac9efc8e32a.png

Şekil 9: Vertex AI Agent Engine örneklerini Google Cloud Console'dan silebilirsiniz.

  1. Cloud Shell'deki dosyaları silme
#Execute the following to delete the files
cd ~
rm -R ~/imagescoring
  1. Paketi silin. GCP Console -> Cloud Storage'a gidip paketinizi seçip silebilirsiniz. 913625e5969c9104.png

Şekil 10: Paketi silme

12. Sonuç

Tebrikler! Çok aracılı bir ADK (Agent Development Kit) uygulamasını Vertex AI Agent Engine'e başarıyla dağıttınız. Bu önemli başarı, modern bir bulut tabanlı uygulamanın temel yaşam döngüsünü kapsar ve kendi karmaşık aracı sistemlerinizi dağıtmak için sağlam bir temel sunar.

Özet

Bu laboratuvarda şunları öğrendiniz:

Faydalı kaynaklar

Prototip aşamasından üretime

Bu laboratuvar, Google Cloud ile Üretime Hazır Yapay Zeka Öğrenme Rotası'nın bir parçasıdır.

  • Prototip aşamasından üretim aşamasına geçiş yapmak için tüm müfredatı inceleyin.
  • #ProductionReadyAI hashtag'ini kullanarak ilerleme durumunuzu paylaşın.