ADK, Agent Engine ve AlloyDB ile çok aracılı uygulama

1. Genel Bakış

Ajan, sahip olduğu araçları ve bağlamı kullanarak hedefe dayalı bir işlem gerçekleştirmek için yapay zeka modeliyle konuşan ve gerçekliğe dayalı olarak kendi kendine karar verebilen bağımsız bir programdır.

Uygulamanızda, daha büyük bir amaca hizmet etmek için gerektiğinde bağımsız ve birlikte çalışan birden fazla aracı varsa ve her bir aracı belirli bir odak alanında bağımsız olarak bilgi sahibi ve sorumluysa uygulamanız çoklu aracı sistemi haline gelir.

Agent Development Kit (ADK)

Agent Development Kit (ADK), yapay zeka ajanları geliştirip dağıtmak için kullanılan esnek ve modüler bir çerçevedir. ADK, birden fazla farklı aracı örneğini bir çoklu aracı sistemi (MAS) içinde birleştirerek gelişmiş uygulamalar oluşturmayı destekler.

ADK'da çoklu temsilci sistemi, genellikle bir hiyerarşi oluşturan farklı temsilcilerin daha büyük bir hedefe ulaşmak için birlikte çalıştığı veya koordine olduğu bir uygulamadır. Uygulamanızı bu şekilde yapılandırmak, geliştirilmiş modülerlik, uzmanlaşma, yeniden kullanılabilirlik, sürdürülebilirlik ve özel iş akışı aracılarını kullanarak yapılandırılmış kontrol akışları tanımlama gibi önemli avantajlar sunar.

Çoklu temsilci sistemi için dikkat edilmesi gereken noktalar

İlk olarak, her temsilcinin uzmanlık alanını doğru bir şekilde anlamak ve muhakeme etmek önemlidir. "Bir şey için neden belirli bir alt aracıya ihtiyacınız olduğunu biliyor musunuz?" gibi soruları önce yanıtlayın.

İkincisi, her yanıtı yönlendirmek ve anlamak için bunları bir kök temsilciyle nasıl bir araya getireceğiniz.

Üçüncüsü: Bu dokümanda bulabileceğiniz birden fazla aracı yönlendirme türü vardır. Uygulamanızın akışına hangisinin uygun olduğundan emin olun. Ayrıca, çok agent'lı sisteminizin akış denetimi için hangi bağlamlara ve durumlara ihtiyacınız var?

Ne oluşturacaksınız?

Mutfak yenileme işlemlerini yürütecek bir çoklu temsilci sistemi oluşturalım. Biz de bunu yapacağız. 3 aracılı bir sistem oluşturacağız.

  1. Renovasyon Teklifi Temsilcisi
  2. İzinler ve Uygunluk Kontrolü Temsilcisi
  3. Sipariş Durumu Kontrolü Aracısı

Mutfak yenileme teklifi belgesini oluşturmak için Renovation Proposal Agent.

İzin ve Uygunluk Temsilcisi, izin ve uygunlukla ilgili görevleri yerine getirir.

AlloyDB'de oluşturduğumuz sipariş yönetimi veritabanında çalışarak malzemelerin sipariş durumunu kontrol etmek için Sipariş Durumu Kontrolü Aracısı.

Bu temsilcileri ihtiyaca göre düzenleyen bir kök temsilcimiz olacak.

Şartlar

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

2. Başlamadan önce

Proje oluşturma

  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 .

Ayrıca, bu makaleyi okuyorsanız ve Google Cloud'u kullanmaya başlamanıza ve ADK'yı kullanmanıza yardımcı olacak bazı krediler almak istiyorsanız kredileri kullanmak için bu bağlantıyı kullanın. Teklifi kullanmak için buradaki talimatları uygulayabilirsiniz. Bu bağlantının yalnızca Mayıs ayının sonuna kadar kullanılabileceğini lütfen unutmayın.

  1. Bu bağlantıyı tıklayarak Cloud Shell'i etkinleştirin. Cloud Shell'deki ilgili düğmeyi tıklayarak Cloud Shell Terminali (bulut komutlarını çalıştırmak için) ile Düzenleyici (projeleri oluşturmak için) arasında geçiş yapabilirsiniz.
  2. Cloud Shell'e bağlandıktan sonra aşağıdaki komutu kullanarak kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını kontrol edin:
gcloud auth list
  1. 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
  1. Projeniz ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>
  1. Python 3.9 veya sonraki sürümlerin yüklü olduğundan emin olun.
  2. Aşağıdaki komutları çalıştırarak şu API'leri etkinleştirin:
gcloud services enable artifactregistry.googleapis.com \cloudbuild.googleapis.com \run.googleapis.com \aiplatform.googleapis.com
  1. gcloud komutları ve kullanımı için belgelere bakın.

3. Prototip

Proje için "Gemini 2.5 Pro" modelini kullanmaya karar verirseniz bu adımı atlayabilirsiniz.

Google AI Studio'ya gidin. İsteminizi yazmaya başlayın. İstemim:

I want to renovate my kitchen, basically just remodel it. I don't know where to start. So I want to use Gemini to generate a plan. For that I need a good prompt. Give me a short yet detailed prompt that I can use.

En iyi yanıtı almak için sağ taraftaki parametreleri ayarlayın ve yapılandırın.

Gemini, bu basit açıklamaya dayanarak yenileme işlemine başlamam için inanılmaz derecede ayrıntılı bir istem oluşturdu. Bu sayede, AI Studio'dan ve modellerimizden daha iyi yanıtlar almak için Gemini'ı kullanıyoruz. Kullanım alanınıza bağlı olarak kullanmak üzere farklı modeller de seçebilirsiniz.

Gemini 2.5 Pro'yu seçtik. Bu bir Düşünme modeli olduğundan, uzun biçimli analizler ve ayrıntılı dokümanlar için daha fazla çıkış jetonu (bu durumda 65 bin jetona kadar) elde ederiz. Gemini 2.5 Pro'yu etkinleştirdiğinizde Gemini düşünce kutusu gösterilir. Bu model, yerleşik akıl yürütme özelliklerine sahiptir ve uzun bağlam isteklerini işleyebilir.

Yanıtın snippet'ini aşağıda görebilirsiniz:

a80d4bad4b3864f7.png

AI Studio, verilerimi analiz etti ve dolap, tezgah, backsplash, döşeme, lavabo, uyum, renk paleti ve malzeme seçimi gibi tüm bu öğeleri üretti. Gemini kaynakları bile alıntılıyor.

Sonuçtan memnun kalana kadar farklı model seçenekleriyle denemeye devam edin. Ancak Gemini 2.5 varken neden bu kadar uğraşasınız ki? :)

Şimdi de farklı bir istemle fikrin nasıl hayata geçirildiğini görmeye çalışın:

Add flat and circular light accessories above the island area for my current kitchen in the attached image.

Mevcut mutfağınızın (veya herhangi bir örnek mutfak resminin) resminin bağlantısını ekleyin. Görüntü oluşturma özelliğine erişebilmek için modeli "Gemini 2.0 Flash Preview Image Generation" olarak değiştirin.

Şu çıkışı aldım:

b5b1e83fcada28f5.png

Gemini'ın gücü burada devreye girer.

Videoları anlama, doğal görüntü üretme ve Google Arama ile gerçek bilgileri temellendirme gibi yalnızca Gemini ile oluşturulabilecek şeyler var.

AI Studio'da bu prototipi alabilir, API anahtarını kullanabilir ve Vertex AI ADK'nın gücünden yararlanarak tam bir aracı uygulamaya dönüştürebilirsiniz.

4. ADK kurulumu

  1. Sanal ortam oluşturma ve etkinleştirme (önerilir)

Cloud Shell Terminal'inizden bir sanal ortam oluşturun:

python -m venv .venv

Sanal ortamı etkinleştirin:

source .venv/bin/activate
  1. ADK'yı yükleme
pip install google-adk

5. Proje Yapısı

  1. Cloud Shell Terminal'den istediğiniz proje konumunda bir dizin oluşturun.
mkdir agentic-apps
cd agentic-apps
mkdir renovation-agent
  1. Cloud Shell Düzenleyici'ye gidin ve dosyaları oluşturarak (başlangıçta boş) aşağıdaki proje yapısını oluşturun:
renovation-agent/
        __init__.py
        agent.py
        .env
        requirements.txt

6. Kaynak Kod

  1. "init.py" dosyasına gidip aşağıdaki içerikle güncelleyin:
from . import agent
  1. agent.py dosyasına gidin ve dosyayı aşağıdaki yoldaki içerikle güncelleyin:
https://github.com/AbiramiSukumaran/adk-renovation-agent/blob/main/agent.py

agent.py dosyasında gerekli bağımlılıkları içe aktarıyor, .env dosyasından yapılandırma parametrelerini alıyor ve bu uygulamada oluşturmayı planladığımız 3 alt aracıyı düzenleyen root_agent'ı tanımlıyoruz. Bu alt aracıların temel ve destekleyici işlevlerine yardımcı olan çeşitli araçlar vardır.

  1. Cloud Storage paketiniz olduğundan emin olun

Bu, temsilcinin oluşturduğu teklif belgesini saklamak için kullanılır. Bu veri kümesini oluşturun ve Vertex AI ile oluşturulan çoklu aracı sisteminin erişebilmesi için gerekli izinleri verin. Bunu şu şekilde yapabilirsiniz:

https://cloud.google.com/storage/docs/creating-buckets#console

Paketinizi "next-demo-store" olarak adlandırın. Farklı bir ad verirseniz .env dosyasındaki (ENV Değişkenleri Kurulumu adımında) STORAGE_BUCKET değerini güncellemeyi unutmayın.

  1. Pakete erişimi ayarlamak için Cloud Storage konsoluna ve Storage paketine gidin (örneğimizde paket adı "next-demo-storage" şeklindedir: https://console.cloud.google.com/storage/browser/next-demo-storage).

İzinler -> Ana Hesapları Görüntüle -> Erişim İzni Ver'e gidin. Asıl öğeleri "allUsers", rolü ise "Storage Nesne Kullanıcısı" olarak seçin.

Make sure to not enable "prevent public access". Since this is a demo/study application we are going with a public bucket. Remember to configure permission settings appropriately when you are building your application.
  1. Bağımlılık listesi oluşturma

Tüm bağımlılıkları requirements.txt dosyasında listeleyin. Bunu depodan kopyalayabilirsiniz.

Çoklu Ajan Sistemi Kaynak Kodu Açıklaması

agent.py dosyası, Agent Development Kit'i (ADK) kullanarak mutfak yenileme çoklu temsilci sistemimizin yapısını ve davranışını tanımlar. Temel bileşenleri inceleyelim:

Aracı Tanımları

RenovationProposalAgent

Bu ajan, mutfak yenileme teklifi belgesini oluşturmaktan sorumludur. Mutfak boyutu, istenen stil, bütçe ve müşteri tercihleri gibi giriş parametrelerini isteğe bağlı olarak alır. Bu bilgilere dayanarak ayrıntılı bir teklif oluşturmak için Gemini 2.5 adlı büyük dil modelini (LLM) kullanır. Oluşturulan teklif daha sonra bir Google Cloud Storage paketinde depolanır.

PermitsAndComplianceCheckAgent

Bu temsilci, yenileme projesinin yerel bina yönetmeliklerine ve düzenlemelerine uygun olmasını sağlamaya odaklanır. Önerilen yenileme (ör. yapısal değişiklikler, elektrik işleri, tesisat değişiklikleri) hakkında bilgi alır ve izin şartlarını ve uygunluk kurallarını kontrol etmek için LLM'yi kullanır. Aracı, bir bilgi bankasındaki bilgileri kullanır (ilgili yönetmelikleri toplamak için harici API'lere erişecek şekilde özelleştirebilirsiniz).

OrderingAgent

Bu aracı (şimdi uygulamak istemiyorsanız yorum satırı yapabilirsiniz) yenileme için gereken malzemelerin ve ekipmanların sipariş durumunu kontrol etme işlemini gerçekleştirir. Bu özelliği etkinleştirmek için kurulum adımlarında açıklandığı gibi bir Cloud Run işlevi oluşturmanız gerekir. Ardından aracı, sipariş bilgilerini içeren bir AlloyDB veritabanıyla etkileşim kuran bu Cloud Run işlevini çağırır. Bu örnekte, gerçek zamanlı verileri izlemek için bir veritabanı sistemiyle entegrasyon gösterilmektedir.

Kök Temsilci (Düzenleyici)

root_agent, çoklu aracı sisteminin merkezi düzenleyicisi olarak işlev görür. İlk yenileme isteğini alır ve isteğin ihtiyaçlarına göre hangi alt aracıların çağrılacağını belirler. Örneğin, istekte izin şartlarının kontrol edilmesi gerekiyorsa PermitsAndComplianceCheckAgent çağrılır. Kullanıcı sipariş durumunu kontrol etmek isterse OrderingAgent'ı (etkinse) arar.

Ardından root_agent, alt aracılardan gelen yanıtları toplayıp birleştirerek kullanıcıya kapsamlı bir yanıt verir. Teklifi özetleme, gerekli izinleri listeleme ve sipariş durumu güncellemeleri sağlama bu kapsamda yer alabilir.

Veri Akışı ve Temel Kavramlar

Kullanıcı, ADK arayüzü (terminal veya web kullanıcı arayüzü) üzerinden bir istek başlatır.

  1. İstek, root_agent tarafından alınır.
  2. root_agent, isteği analiz eder ve uygun alt aracılara yönlendirir.
  3. Alt aracılar, isteği işlemek ve yanıt oluşturmak için büyük dil modellerini, bilgi tabanlarını, API'leri ve veritabanlarını kullanır.
  4. Alt aracılar, yanıtlarını root_agent'a döndürür.
  5. root_agent, yanıtları birleştirir ve kullanıcıya nihai bir çıktı sağlar.

LLM'ler (Büyük Dil Modelleri)

Aracıların metin oluşturma, soruları yanıtlama ve muhakeme görevlerini yerine getirme konusunda LLM'lere büyük ölçüde güvendiği görülmektedir. LLM'ler, kullanıcı isteklerini anlama ve yanıtlama konusunda aracıların"beyinleridir". Bu uygulamada Gemini 2.5 kullanılmaktadır.

Google Cloud Storage

Oluşturulan tadilat teklifi belgelerini depolamak için kullanılır. Bir paket oluşturmanız ve temsilcilerin bu pakete erişmesi için gerekli izinleri vermeniz gerekir.

Cloud Run (isteğe bağlı)

OrderingAgent, AlloyDB ile arayüz oluşturmak için bir Cloud Run işlevi kullanır. Cloud Run, HTTP isteklerine yanıt olarak kod yürütmek için sunucusuz bir ortam sağlar.

AlloyDB

OrderingAgent'ı kullanıyorsanız sipariş bilgilerini depolamak için bir AlloyDB veritabanı oluşturmanız gerekir. Bu konunun ayrıntılarını "Veritabanı Kurulumu" başlıklı sonraki bölümde ele alacağız.

.env dosyası

.env dosyası, API anahtarları, veritabanı kimlik bilgileri ve paket adları gibi hassas bilgileri depolar. Bu dosyanın güvenliğini sağlamak ve deponuza işlememek çok önemlidir. Ayrıca, aracıların ve Google Cloud projenizin yapılandırma ayarlarını da depolar. root_agent veya destekleyici işlevler genellikle bu dosyadan değerleri okur. Gerekli tüm değişkenlerin .env dosyasında doğru şekilde ayarlandığından emin olun. Cloud Storage paket adı da buna dahildir.

7. Veritabanı kurulumu

ordering_agent tarafından kullanılan araçlardan biri olan "check_status"ta, siparişlerin durumunu almak için AlloyDB sipariş veritabanına erişiriz. Bu bölümde AlloyDB veritabanı kümesini ve örneğini oluşturacağız.

Küme ve örnek oluşturma

  1. Cloud Console'da AlloyDB sayfasına gidin. Cloud Console'daki çoğu sayfayı bulmanın kolay bir yolu, konsolun arama çubuğunu kullanarak arama yapmaktır.
  2. Bu sayfada KÜME OLUŞTUR'u seçin:

f76ff480c8c889aa.png

  1. Aşağıdaki gibi bir ekran görürsünüz. Aşağıdaki değerlerle bir küme ve örnek oluşturun (Uygulama kodunu depodan klonluyorsanız değerlerin eşleştiğinden emin olun):
  • küme kimliği: "vector-cluster"
  • password: "alloydb"
  • PostgreSQL 15 / en son önerilen
  • Bölge: "us-central1"
  • : "default"

538dba58908162fb.png

  1. Varsayılan ağı seçtiğinizde aşağıdaki gibi bir ekran görürsünüz.

BAĞLANTIYI AYARLA'yı seçin.
7939bbb6802a91bf.png

  1. Buradan "Otomatik olarak atanmış bir IP aralığı kullan"ı seçip Devam'ı tıklayın. Bilgileri inceledikten sonra BAĞLANTI OLUŞTUR'u seçin. 768ff5210e79676f.png
  2. Ağınız kurulduktan sonra kümenizi oluşturmaya devam edebilirsiniz. Aşağıda gösterildiği gibi küme kurulumunu tamamlamak için CREATE CLUSTER'ı (KÜME OLUŞTUR) tıklayın:

e06623e55195e16e.png

Örnek kimliğini değiştirdiğinizden emin olun (küme / örnek yapılandırılırken bulabilirsiniz) ile

vector-instance. Değiştiremiyorsanız gelecekteki tüm referanslarda örnek kimliğinizi kullanmayı unutmayın.

Küme oluşturma işleminin yaklaşık 10 dakika süreceğini unutmayın. İşlem başarılı olduğunda, yeni oluşturduğunuz kümenizin genel görünümünü gösteren bir ekran görürsünüz.

Veri kullanımı

Şimdi de mağazayla ilgili verilerin bulunduğu bir tablo ekleme zamanı. AlloyDB'ye gidin, birincil kümeyi ve ardından AlloyDB Studio'yu seçin:

847e35f1bf8a8bd8.png

Örneğinizin oluşturulmasının tamamlanmasını beklemeniz gerekebilir. Bu işlem tamamlandıktan sonra, kümeyi oluştururken oluşturduğunuz kimlik bilgilerini kullanarak AlloyDB'de oturum açın. PostgreSQL'de kimlik doğrulaması yapmak için aşağıdaki verileri kullanın:

  • Kullanıcı adı : "postgres"
  • Veritabanı : "postgres"
  • Şifre : "alloydb"

AlloyDB Studio'da kimliğinizi başarıyla doğruladıktan sonra SQL komutları Düzenleyici'ye girilir. Son pencerenin sağındaki artı işaretini kullanarak birden fazla Düzenleyici penceresi ekleyebilirsiniz.

91a86d9469d499c4.png

AlloyDB için komutları düzenleyici pencerelerine girerken gerektiğinde Çalıştır, Biçimlendir ve Temizle seçeneklerini kullanacaksınız.

Tablo oluşturma

AlloyDB Studio'da aşağıdaki DDL ifadesini kullanarak bir tablo oluşturabilirsiniz:

-- Table DDL for Procurement Material Order Status

CREATE TABLE material_order_status (
    order_id VARCHAR(50) PRIMARY KEY,
    material_name VARCHAR(100) NOT NULL,
    supplier_name VARCHAR(100) NOT NULL,
    order_date DATE NOT NULL,
    estimated_delivery_date DATE,
    actual_delivery_date DATE,
    quantity_ordered INT NOT NULL,
    quantity_received INT,
    unit_price DECIMAL(10, 2) NOT NULL,
    total_amount DECIMAL(12, 2),
    order_status VARCHAR(50) NOT NULL, -- e.g., "Ordered", "Shipped", "Delivered", "Cancelled"
    delivery_address VARCHAR(255),
    contact_person VARCHAR(100),
    contact_phone VARCHAR(20),
    tracking_number VARCHAR(100),
    notes TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    quality_check_passed BOOLEAN,  -- Indicates if the material passed quality control
    quality_check_notes TEXT,        -- Notes from the quality control check
    priority VARCHAR(20),            -- e.g., "High", "Medium", "Low"
    project_id VARCHAR(50),          -- Link to a specific project
    receiver_name VARCHAR(100),        -- Name of the person who received the delivery
    return_reason TEXT,               -- Reason for returning material if applicable
    po_number VARCHAR(50)             -- Purchase order number
);

Kayıt Ekleme

Yukarıda bahsedilen database_script.sql komut dosyasından insert sorgu ifadesini kopyalayıp düzenleyiciye yapıştırın.

Çalıştır'ı tıklayın.

Veri kümesi hazır olduğuna göre şimdi durumu ayıklamak için bir Java Cloud Run Functions uygulaması oluşturalım.

Sipariş durumu bilgilerini ayıklamak için Java'da Cloud Run işlevi oluşturma

  1. Buradan Cloud Run işlevi oluşturun: https://console.cloud.google.com/run/create?deploymentType=function
  2. İşlevin adını "check-status" olarak ayarlayın ve çalışma zamanı olarak "Java 17"yi seçin.
  3. Demo uygulaması olduğundan kimlik doğrulamayı "Allow unauthenticated invocations" olarak ayarlayabilirsiniz.
  4. Çalışma zamanı olarak Java 17'yi, kaynak kodu için ise Satır İçi Düzenleyici'yi seçin.
  5. Bu noktada, yer tutucu kodu düzenleyiciye yüklenir.

Yer tutucu kodu değiştirin

  1. Java dosyasının adını "ProposalOrdersTool.java", sınıf adını ise "ProposalOrdersTool" olarak değiştirin.
  2. ProposalOrdersTool.java ve pom.xml'deki yer tutucu kodu, bu depodaki "Cloud Run Function" klasöründeki ilgili dosyalardan alınan kodla değiştirin.
  3. ProposalOrdersTool.java dosyasında aşağıdaki kod satırını bulun, yer tutucu değerleri yapılandırmanızdaki değerlerle değiştirin:
String ALLOYDB_INSTANCE_NAME = "projects/<<YOUR_PROJECT_ID>>/locations/us-central1/clusters/<<YOUR_CLUSTER>>/instances/<<YOUR_INSTANCE>>";
  1. Oluştur'u tıklayın.
  2. Cloud Run işlevi oluşturulup dağıtılır.

ÖNEMLİ ADIM:

Dağıtım tamamlandıktan sonra, Cloud Function'ın AlloyDB veritabanı örneğimize erişmesine izin vermek için VPC bağlayıcısını oluşturacağız.

Dağıtıma hazır olduğunuzda işlevleri Google Cloud Run Functions konsolunda görebilirsiniz. Yeni oluşturulan işlevi (check-status) arayın, işlevi tıklayın, ardından EDIT AND DEPLOY NEW REVISIONS'ı (Cloud Run Functions konsolunun üst kısmındaki DÜZENLE simgesi (kalem) ile tanımlanır) tıklayın ve aşağıdakileri değiştirin:

  1. Ağ iletişimi sekmesine gidin:

828cd861864d99ea.png

  1. "Giden trafik için bir VPC'ye bağlanın"ı ve ardından "Sunucusuz VPC Erişimi bağlayıcılarını kullanın"ı seçin.
  2. Ağ açılır listesi ayarları bölümünde, Ağ açılır listesini tıklayın ve "Yeni VPC bağlayıcı ekle" seçeneğini belirleyin (varsayılan olanı henüz yapılandırmadıysanız) ve açılan iletişim kutusunda gördüğünüz talimatları uygulayın:

6559ccfd10e597f2.png

  1. VPC bağlayıcısı için bir ad girin ve bölgenin örneğinizle aynı olduğundan emin olun. Ağ değerini varsayılan olarak bırakın ve alt ağı, 10.8.0.0 IP aralığına sahip özel IP aralığı olarak ayarlayın veya benzer bir aralık kullanın.
  2. ÖLÇEKLENDİRME AYARLARINI GÖSTER'i genişletin ve yapılandırmanın tam olarak aşağıdaki gibi ayarlandığından emin olun:

199b0ccd80215004.png

  1. OLUŞTUR'u tıklayın. Bu bağlayıcı artık çıkış ayarlarında listelenmelidir.
  2. Yeni oluşturulan bağlayıcıyı seçin.
  3. Tüm trafiğin bu VPC bağlayıcısı üzerinden yönlendirilmesini tercih edin.
  4. SONRAKİ'yi ve ardından DAĞIT'ı tıklayın.
  5. Güncellenen Cloud Functions işlevi dağıtıldıktan sonra oluşturulan uç noktayı görürsünüz.
  6. Cloud Run Functions konsolunun üst kısmındaki TEST düğmesini tıklayarak ve Cloud Shell Terminal'de sonuç komutunu çalıştırarak test edebilirsiniz.
  7. Dağıtılan uç nokta, .env değişkeninde CHECK_ORDER_STATUS_ENDPOINT güncellemeniz gereken URL'dir.

8. Model Kurulumu

Ajanınızın kullanıcı isteklerini anlama ve yanıt oluşturma özelliği, Büyük Dil Modeli (LLM) tarafından desteklenir. Aracınızın bu harici LLM hizmetine güvenli aramalar yapması gerekir. Bu işlem için kimlik doğrulama kimlik bilgileri gerekir. Geçerli kimlik doğrulama olmadan LLM hizmeti, aracının isteklerini reddeder ve aracı çalışamaz.

  1. Google AI Studio'dan API anahtarı alın.
  2. .env dosyasını ayarladığınız sonraki adımda <<your API KEY>> kısmını gerçek API ANAHTARI değerinizle değiştirin.

9. ENV Değişkenleri Kurulumu

  1. Bu repo'daki template .env dosyasında parametreler için değerlerinizi ayarlayın. Benim durumumda .env dosyasında şu değişkenler var:
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=<<your API KEY>>
GOOGLE_CLOUD_LOCATION=us-central1 <<or your region>>
GOOGLE_CLOUD_PROJECT=<<your project id>>
PROJECT_ID=<<your project id>>
GOOGLE_CLOUD_REGION=us-central1 <<or your region>>
STORAGE_BUCKET=next-demo-store <<or your storage bucket name>>
CHECK_ORDER_STATUS_ENDPOINT=<<YOUR_ENDPOINT_TO_CLOUD FUNCTION_TO_READ_ORDER_DATA_FROM_ALLOYDB>>

Yer tutucuları kendi değerlerinizle değiştirin.

10. Temsilcinizi Çalıştırma

  1. Terminali kullanarak aracı projenizin üst dizinine gidin:
cd renovation-agent
  1. Tüm bağımlılıkları yükleyin.
pip install -r requirements.txt
  1. Aracı yürütmek için Cloud Shell terminalinizde aşağıdaki komutu çalıştırabilirsiniz:
adk run .
  1. ADK ile sağlanan bir web kullanıcı arayüzünde çalıştırmak için aşağıdakileri çalıştırabilirsiniz:
adk web
  1. Aşağıdaki istemlerle test edin:
user>> 

Hello. Generate Proposal Document for the kitchen remodel requirement. I have no other specification.

11. Sonuç

@ Mutfak yenileme görevleri için çoklu aracı sistemi

623fa35fce53b51b.png

12. Agent Engine'e dağıtım

Çoklu aracı sisteminin düzgün çalıştığını test ettiğinize göre artık bu sistemi sunucusuz hale getirebilir ve herkesin / her uygulamanın kullanabilmesi için bulutta kullanılabilir hale getirebiliriz. Depodaki agent.py dosyasında aşağıdaki kod snippet'inin açıklamasını iptal edin. Çoklu aracı sisteminizi dağıtmaya hazırsınız.

# Agent Engine Deployment:
# Create a remote app for our multiagent with agent Engine.
# This may take 1-2 minutes to finish.
# Uncomment the below segment when you're ready to deploy.

app = AdkApp(
    agent=root_agent,
    enable_tracing=True,
)

vertexai.init(
    project=PROJECT_ID,
    location=GOOGLE_CLOUD_LOCATION,
    staging_bucket=STAGING_BUCKET,
)

remote_app = agent_engines.create(
    app,
    requirements=[
        "google-cloud-aiplatform[agent_engines,adk]>=1.88",
        "google-adk",
        "pysqlite3-binary",
        "toolbox-langchain==0.1.0",
        "pdfplumber",
        "google-cloud-aiplatform",
        "cloudpickle==3.1.1",
        "pydantic==2.10.6",
        "pytest",
        "overrides",
        "scikit-learn",
        "reportlab",
        "google-auth",
        "google-cloud-storage",
    ],
)
# Deployment to Agent Engine related code ends

Bu agent.py dosyasını proje klasöründen aşağıdaki komutla tekrar çalıştırın:

>> cd adk-renovation-agent

>> python agent.py

Bu kodun tamamlanması birkaç dakika sürer. İşlem tamamlandığında aşağıdaki gibi bir uç nokta alırsınız:

'projects/123456789/locations/us-central1/reasoningEngines/123456'

Yeni bir "test.py" dosyası ekleyerek dağıtılan temsilcinizi aşağıdaki kodla test edebilirsiniz.

import vertexai
from vertexai.preview import reasoning_engines
from vertexai import agent_engines
import os
import warnings
from dotenv import load_dotenv
load_dotenv() 


GOOGLE_CLOUD_PROJECT = os.environ["GOOGLE_CLOUD_PROJECT"]
GOOGLE_CLOUD_LOCATION = os.environ["GOOGLE_CLOUD_LOCATION"]
GOOGLE_API_KEY = os.environ["GOOGLE_API_KEY"]
GOOGLE_GENAI_USE_VERTEXAI=os.environ["GOOGLE_GENAI_USE_VERTEXAI"]
AGENT_NAME = "adk_renovation_agent"
MODEL_NAME = "gemini-2.5-pro-preview-03-25" 
warnings.filterwarnings("ignore")
PROJECT_ID = GOOGLE_CLOUD_PROJECT

reasoning_engine_id = "<<YOUR_DEPLOYED_ENGINE_ID>>"

vertexai.init(project=PROJECT_ID, location="us-central1")
agent = agent_engines.get(reasoning_engine_id)
print("**********************")
print(agent)
print("**********************")


for event in agent.stream_query(
    user_id="test_user",
    message="I want you to check order status.",
):
    print(event)

Yukarıdaki kodda, "<<YOUR_DEPLOYED_ENGINE_ID>>" yer tutucusunun değerini değiştirin ve "python test.py" komutunu çalıştırın. Böylece, Agent Engine'in dağıtıldığı çok agent'lı bir sistemle etkileşim kurmak için bu kodu yürütmeye ve mutfağınızı yenilemeye hazırsınız.

13. Tek Satırlık Dağıtım Seçenekleri

Dağıtılan çoklu aracı sistemini test ettiğinize göre, önceki adımda yaptığımız dağıtım adımını soyutlayan daha basit yöntemleri öğrenelim: TEK SATIRDA DAĞITIM SEÇENEKLERİ:

  1. Cloud Run'a:

Söz dizimi:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=<<YOUR_SERVICE_NAME>> \
--app_name=<<YOUR_APP_NAME>> \
--with_ui \
./<<YOUR_AGENT_PROJECT_NAME>>

Bu durumda:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=renovation-agent \
--app_name=renovation-app \
--with_ui \
./renovation-agent

Dağıtılan uç noktayı sonraki entegrasyonlar için kullanabilirsiniz.

  1. Agent Engine'e:

Söz dizimi:

adk deploy agent_engine \
  --project <your-project-id> \
  --region us-central1 \
  --staging_bucket gs://<your-google-cloud-storage-bucket> \
  --trace_to_cloud \
  path/to/agent/folder

Bu durumda:

adk deploy agent_engine --project <<YOUR_PROJECT_ID>> --region us-central1 --staging_bucket gs://<<YOUR_BUCKET_NAME>> --trace_to_cloud renovation-agent

Google Cloud Console'daki Agent Engine kullanıcı arayüzünde yeni bir aracı görmeniz gerekir. Daha fazla bilgi için bu bloga bakın.

14. 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.

15. Tebrikler

Tebrikler! ADK'yı kullanarak ilk temsilcinizi başarıyla oluşturup etkileşimde bulundunuz.