Bu codelab hakkında
1. Genel Bakış
Temsilci, sahip olduğu araçları ve bağlamı kullanarak hedefe dayalı bir işlem gerçekleştirmek için bir yapay zeka modeliyle konuşan ve gerçeğe dayalı otonom karar verme yeteneğine sahip otonom bir programdır.
Uygulamanızda, daha büyük bir amaca hizmet etmek için gerektiğinde bağımsız olarak ve birlikte çalışan birden fazla temsilci varsa ve her temsilci belirli bir odak alanından bağımsız olarak bilgi sahibi ve sorumluysa uygulamanız çok temsilcili bir sistem olur.
Temsilci Geliştirme Kiti (ADK)
Agent Development Kit (ADK), yapay zeka aracılarını geliştirmek ve dağıtmak için esnek ve modüler bir çerçevedir. ADK, birden fazla farklı aracı örneğini bir Çoklu Aracı Sistemi'nde (MAS) birleştirerek karmaşık uygulamalar oluşturmayı destekler.
ADK'de çok aracılı sistem, genellikle hiyerarşi oluşturan farklı aracıların daha büyük bir hedefe ulaşmak için birlikte çalıştığı veya koordine ettiği bir uygulamadır. Uygulamanızı bu şekilde yapılandırmak, gelişmiş 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.
Çok temsilcili sistemler için dikkat edilmesi gerekenler
Öncelikle, her temsilcinin uzmanlık alanını doğru şekilde anlamak ve gerekçesini bilmek önemlidir. — "Bir şey için neden belirli bir alt temsilciye ihtiyacınız olduğunu biliyor musunuz?" sorusunu yanıtlayın.
İkinci, yanıtların her birini yönlendirmek ve anlamlandırmak için bunları bir kök temsilciyle bir araya getirme.
Üçüncü olarak, bu dokümanda bulabileceğiniz birden fazla müşteri temsilcisi yönlendirme türü vardır. Hangisinin uygulamanızın akışına uygun olduğundan emin olun. Ayrıca, çok aracılı sisteminizin akış kontrolü için ihtiyaç duyduğunuz çeşitli bağlamlar ve durumlar da vardır.
Ne oluşturacaksınız?
Mutfak yenilemelerini yapacak çok temsilcili bir sistem oluşturalım. 3 müşteri temsilcisi içeren bir sistem oluşturacağız.
- Yenileme Teklifi Temsilcisi
- İzinler ve Uygunluk Kontrolü Temsilcisi
- Sipariş Durumu Kontrolü Temsilcisi
Mutfak yenileme teklifi belgesini oluşturmak için yenileme teklifi temsilcisi.
İzinler ve uygunluk temsilcisi, izinler ve uygunlukla ilgili görevleri yerine getirmek için.
AlloyDB'de oluşturduğumuz sipariş yönetimi veritabanında çalışarak malzemelerin sipariş durumunu kontrol etmek için Sipariş Durumu Kontrol Ajansı.
Bu aracıları, gereksinime göre düzenleyen bir kök aracımız olacaktır.
Şartlar
2. Başlamadan önce
Proje oluşturma
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğrenin .
Ayrıca, bu makaleyi okuyor ve Google Cloud'a başlamanıza ve ADK'yı kullanmanıza yardımcı olacak krediler almak istiyorsanız kredileri kullanmak için bu bağlantıyı kullanın. Buradaki talimatları uygulayarak kodu kullanabilirsiniz. Bu bağlantının, yalnızca Mayıs ayının sonuna kadar kullanılabileceğini lütfen unutmayın.
- Bu bağlantıyı tıklayarak Cloud Shell'i etkinleştirin. Cloud Shell'de ilgili düğmeyi tıklayarak Cloud Shell Terminal (bulut komutlarını çalıştırmak için) ve Düzenleyici (proje oluşturmak için) arasında geçiş yapabilirsiniz.
- Cloud Shell'e bağlandıktan sonra aşağıdaki komutu kullanarak kimliğinizin doğrulanıp doğrulanmadığını ve projenin proje kimliğinize ayarlanıp ayarlanmadığını kontrol edebilirsiniz:
gcloud auth list
- 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
- Projeniz ayarlanmadıysa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>
- Python 3.9 veya sonraki bir sürümün yüklü olduğundan emin olun.
- Aşağıdaki komutları çalıştırarak aşağıdaki API'leri etkinleştirin:
gcloud services enable artifactregistry.googleapis.com \cloudbuild.googleapis.com \run.googleapis.com \aiplatform.googleapis.com
- 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. İsteminize yazmaya başlayın. İstemim şu şekilde:
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 çalışmama başlamam için inanılmaz ayrıntılı bir istem oluşturdu. Aslında, AI Studio'dan ve modellerimizden daha da iyi yanıtlar almak için Gemini'yi kullanıyoruz. Ayrıca, kullanım alanınıza bağlı olarak kullanılacak farklı modeller de seçebilirsiniz.
Gemini 2.5 Pro'yu seçtik. Bu bir Düşünme modelidir. Yani uzun analizler ve ayrıntılı dokümanlar için daha da fazla çıkış jetonu (bu durumda 65 bin jetona kadar) alırız. Gemini düşünme kutusu, doğal akıl yürütme özelliklerine sahip ve uzun bağlam isteklerini alabilen Gemini 2.5 Pro'yu etkinleştirdiğinizde gösterilir.
Yanıtın snippet'ini aşağıda görebilirsiniz:
AI Studio, verilerimi analiz ederek dolaplar, tezgahlar, tezgah arkası, zemin, lavabo, uyum, renk paleti ve malzeme seçimi gibi tüm bu öğeleri oluşturdu. Gemini, kaynakları bile belirtir.
Sonuçtan memnun kalana kadar farklı model seçimleriyle bu işlemi tekrarlayın. Ancak Gemini 2.5'e sahipken neden bu kadar uğraşacağınızı merak ediyorum :)
Şimdi farklı bir istemle fikrin hayata geçirilmesini görmeye çalışın:
Add flat and circular light accessories above the island area for my current kitchen in the attached image.
Mevcut mutfak resminizin (veya herhangi bir örnek mutfak resminin) bağlantısını ekleyin. Görsel oluşturma özelliğine erişebilmek için modeli "Gemini 2.0 Flash Önizleme Resim Oluşturma" olarak değiştirin.
Aşağıdaki çıkışı aldım:
İşte Gemini'nin gücü!
Videoları anlama, yerel resim oluşturma ve gerçek bilgileri Google Arama ile temellendirme gibi özellikler yalnızca Gemini ile geliştirilebilir.
AI Studio'dan bu prototipi alıp API anahtarını alabilir ve Vertex AI ADK'nın gücünü kullanarak tam bir aracı uygulamaya ölçeklendirebilirsiniz.
4. ADK kurulumu
- Sanal Ortam Oluşturma ve Etkinleştirme (Önerilir)
Cloud Shell Terminal'inizden sanal ortam oluşturun:
python -m venv .venv
Sanal ortamı etkinleştirin:
source .venv/bin/activate
- ADK'yı yükleme
pip install google-adk
5. Proje Yapısı
- Cloud Shell Terminal'de, istediğiniz proje konumunda bir dizin oluşturun
mkdir agentic-apps
cd agentic-apps
mkdir renovation-agent
- Cloud Shell Düzenleyici'ye gidin ve aşağıdaki dosyaları (başlangıçta boş) oluşturarak aşağıdaki proje yapısını oluşturun:
renovation-agent/
__init__.py
agent.py
.env
requirements.txt
6. Kaynak Kod
- "init.py" dosyasına gidin ve aşağıdaki içerikle güncelleyin:
from . import agent
- 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ır, yapılandırma parametrelerini .env dosyasından alır ve bu uygulamada oluşturmayı planladığımız 3 alt aracıyı koordine eden root_agent'ı tanımlarız. Bu alt aracıların temel ve destekleyici işlevlerine yardımcı olan çeşitli araçlar vardır.
- Cloud Storage paketinizin bulunduğundan emin olun
Bu, temsilcinin oluşturduğu teklif belgesini depolamak içindir. Vertex AI ile oluşturulan çok temsilcili sistemin erişebilmesi için bu kaynağı oluşturun ve erişim izni verin. Bunu şu şekilde yapabilirsiniz:
https://cloud.google.com/storage/docs/creating-buckets#console
Paketinizi "next-demo-store
" olarak adlandırın. Başka bir ad kullanırsanız .env dosyasında (ENV Değişkenleri Kurulumu adımında) STORAGE_BUCKET değerini güncellemeyi unutmayın.
- Pakete erişimi ayarlamak için Cloud Storage Console'a ve Storage paketinize gidin (bizim durumumuzda paket adı "next-demo-storage"dır: https://console.cloud.google.com/storage/browser/next-demo-storage).
İzinler -> Ana Hesapları Görüntüle -> Erişim İzni Ver'e gidin. Yetkililer olarak "allUsers", Rol olarak da "Storage Object User"ı 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.
- Bağımlılıklar listesi oluşturma
Tüm bağımlılıkları requirements.txt dosyasında listeleyin. Bu dosyayı repo'dan kopyalayabilirsiniz.
Çoklu Temsilci Sistemi Kaynak Kodu Açıklaması
agent.py dosyası, Temsilci Geliştirme Kiti'ni (ADK) kullanarak mutfak yenileme çok temsilcili sistemimizin yapısını ve davranışını tanımlar. Temel bileşenleri inceleyelim:
Temsilci Tanımları
RenovationProposalAgent
Bu temsilci, mutfak yenileme teklifi belgesini oluşturmaktan sorumludur. İsteğe bağlı olarak mutfak boyutu, istenen stil, bütçe ve müşteri tercihleri gibi giriş parametrelerini alır. Bu bilgilere dayanarak ayrıntılı bir teklif oluşturmak için büyük dil modeli (LLM) Gemini 2.5'i kullanır. Oluşturulan teklif daha sonra bir Google Cloud Storage paketinde depolanır.
PermitsAndComplianceCheckAgent
Bu temsilci, yenileme projesinin yerel bina kodlarına ve yönetmeliklerine uygun olmasını sağlamaya odaklanır. Önerilen yenileme hakkında bilgi alır (ör. yapısal değişiklikler, elektrik işleri, sıhhi tesisat değişiklikleri) ve izin şartlarını ve uygunluk kurallarını kontrol etmek için LLM'yi kullanır. Temsilci, bir bilgi tabanındaki bilgileri kullanır (ilgili düzenlemeleri toplamak için harici API'lere erişmek üzere özelleştirebilirsiniz).
OrderingAgent
Bu işleyici (şimdi uygulamak istemiyorsanız yorumlayabilirsiniz), yenileme için gereken malzemelerin ve ekipmanların sipariş durumunu kontrol eder. 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 müşteri temsilcisi, sipariş bilgilerini içeren bir AlloyDB veritabanı ile etkileşime geçen 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 (Orchestrator)
root_agent, çok temsilcili sistemin merkezi orkestratörüdü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, istek izin şartlarını kontrol etmeyi gerektiriyorsa PermitsAndComplianceCheckAgent çağrılır. Kullanıcı sipariş durumunu kontrol etmek isterse OrderingAgent'ı (etkinse) çağırır.
Ardından root_agent, alt temsilcilerden gelen yanıtları toplar ve kullanıcıya kapsamlı bir yanıt vermek için bunları birleştirir. Bu, teklifi özetleme, gerekli izinleri listeleme ve sipariş durumu güncellemeleri sağlama gibi işlemleri içerebilir.
Veri Akışları ve Temel Kavramlar
Kullanıcı, ADK arayüzü (terminal veya web kullanıcı arayüzü) üzerinden bir istek başlatır.
- İstek, root_agent tarafından alınır.
- root_agent, isteği analiz eder ve uygun alt aracılara yönlendirir.
- Alt temsilciler, isteği işlemek ve yanıt oluşturmak için LLM'leri, bilgi tabanlarını, API'leri ve veritabanlarını kullanır.
- Alt temsilciler yanıtlarını root_agent'a döndürür.
- root_agent, yanıtları birleştirir ve kullanıcıya nihai bir çıkış sağlar.
LLM'ler (Büyük Dil Modelleri)
Temsilciler, metin oluşturmak, soruları yanıtlamak ve akıl yürütme görevlerini gerçekleştirmek için büyük ölçüde LLM'lerden yararlanır. LLM'ler, temsilcilerin kullanıcı isteklerini anlama ve yanıtlama becerilerinin arkasındaki"beyin"dir. Bu uygulamada Gemini 2.5'i kullanıyoruz.
Google Cloud Storage
Oluşturulan yenileme teklifi dokümanlarını 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 (İsteğ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 konuyla ilgili ayrıntılara "Veritabanı Kurulumu" başlıklı sonraki bölümde değineceğiz.
.env dosyası
.env dosyası, API anahtarları, veritabanı kimlik bilgileri ve paket adları gibi hassas bilgileri depolar. Bu dosyayı güvenli bir şekilde saklamak ve deponuza eklememek çok önemlidir. Ayrıca, temsilciler ve Google Cloud projeniz için yapılandırma ayarlarını depolar. root_agent veya destekleyici işlevler genellikle bu dosyadan değer 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 "check_status" adlı araçlardan birinde, siparişlerin durumunu almak için AlloyDB siparişler veritabanına erişiriz. Bu bölümde, AlloyDB veritabanı kümesini ve örneğini oluşturacağız.
Küme ve örnek oluşturma
- 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.
- Bu sayfada KÜME OLUŞTUR'u seçin:
- Aşağıdakine benzer bir ekran görürsünüz. Aşağıdaki değerlerle bir küme ve örnek oluşturun (Repo'dan uygulama kodunu klonluyorsanız değerlerin eşleştiğinden emin olun):
- küme kimliği: "
vector-cluster
" - password: "
alloydb
" - PostgreSQL 15 / en son sürüm önerilir
- Bölge: "
us-central1
" - Ağ: "
default
"
- Varsayılan ağı seçtiğinizde aşağıdaki gibi bir ekran görürsünüz.
BAĞLANTI KUR'u seçin.
- Buradan "Otomatik olarak atanmış bir IP aralığı kullan"ı seçip Devam'ı tıklayın. Bilgileri inceledikten sonra BAĞLANTI OLUŞTUR'u seçin.
- Ağınız oluşturulduktan sonra kümenizi oluşturmaya devam edebilirsiniz. Kümenin ayarlanmasını tamamlamak için aşağıda gösterildiği gibi KÜME OLUŞTUR'u tıklayın:
Örnek kimliğini (küme / örnek yapılandırması sırasında bulabilirsiniz) şununla değiştirin:
vector-instance
. Değiştiremiyorsanız sonraki 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ıyla tamamlandığında, yeni oluşturduğunuz kümenize genel bakış sunan bir ekran görürsünüz.
Veri kullanımı
Şimdi, mağazayla ilgili verileri içeren bir tablo ekleme zamanı. AlloyDB'ye gidin, birincil kümeyi ve ardından AlloyDB Studio'yu seçin:
Ö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ğrulama için aşağıdaki verileri kullanın:
- Kullanıcı adı : "
postgres
" - Veritabanı : "
postgres
" - Şifre : "
alloydb
"
AlloyDB Studio'da kimlik doğrulamayı başarıyla tamamladıktan sonra Düzenleyici'ye SQL komutları girilir. Son pencerenin sağındaki artı işaretini kullanarak birden fazla Düzenleyici penceresi ekleyebilirsiniz.
Gerektiği gibi Çalıştır, Biçimlendir ve Temizle seçeneklerini kullanarak AlloyDB komutlarını düzenleyici pencerelerine girersiniz.
Tablo oluşturma
AlloyDB Studio'da aşağıdaki DDL ifadesini kullanarak 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 belirtilen database_script.sql
komut dosyasından insert
sorgu ifadesini düzenleyiciye kopyalayın.
Çalıştır'ı tıklayın.
Veri kümesi hazır olduğuna göre, 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
- Buradan Cloud Run işlevi oluşturun: https://console.cloud.google.com/run/create?deploymentType=function
- İşlevin adını "check-status" olarak ayarlayın ve çalışma zamanı olarak "Java 17"i seçin.
- Demo uygulama olduğu için kimlik doğrulamayı "Kimliği doğrulanmamış çağrılara izin ver" olarak ayarlayabilirsiniz.
- Çalışma zamanı olarak Java 17'yi, kaynak kod için Satır İçi Düzenleyici'yi seçin.
- Bu noktada yer tutucu kodu düzenleyiciye yüklenir.
Yer tutucu kodunu değiştirme
- Java dosyasının adını "ProposalOrdersTool.java", sınıf adını ise "ProposalOrdersTool" olarak değiştirin.
- ProposalOrdersTool.java ve pom.xml dosyalarındaki yer tutucu kodu, bu depoda "Cloud Run İşlevi" klasöründeki ilgili dosyalardaki kodla değiştirin.
- ProposalOrdersTool.java dosyasında aşağıdaki kod satırını bulun, yer tutucu değerlerini 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>>";
- Oluştur'u tıklayın.
- Cloud Run işlevi oluşturulur ve dağıtılır.
ÖNEMLİ ADIM:
Dağıtıldıktan sonra, Cloud Functions'in AlloyDB veritabanı örneğimize erişmesine izin vermek için VPC bağlayıcısını oluşturacağız.
Dağıtım için hazırlık yaptıktan sonra işlevleri Google Cloud Run Functions konsolunda görebilirsiniz. Yeni oluşturulan işlevi (check-status) arayın, tıklayın ve ardından YENİ DÜZELTMELERİ DÜZENLE VE DAĞIT'ı (Cloud Run Functions konsolunun üst kısmındaki DÜZENLE simgesinden (kalem) anlaşılır) tıklayın ve aşağıdakileri değiştirin:
- Ağ iletişimi sekmesine gidin:
- "Giden trafik için VPC'ye bağlanın"ı ve ardından "Sunucusuz VPC Erişimi bağlayıcılarını kullanın"ı seçin.
- Ağ açılır menüsünde, ayarlar bölümünde Ağ açılır menüsünü tıklayın ve "Yeni VPC Bağlantısı Ekle" seçeneğini belirleyin (varsayılan bağlantıyı henüz yapılandırmadıysanız) ve açılan iletişim kutusunda gördüğünüz talimatları uygulayın:
- 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ığı veya kullanılabilir benzer bir değerle Özel IP Aralığı olarak ayarlayın.
- YÜKSEK ÇÖZÜNÜRLÜKLÜ AYARLARI GÖSTER'i genişletin ve yapılandırmayı tam olarak aşağıdaki şekilde ayarladığınızdan emin olun:
- OLUŞTUR'u tıklayın. Bu bağlayıcı artık çıkış ayarlarında listelenir.
- Yeni oluşturulan bağlayıcıyı seçin.
- Tüm trafiğin bu VPC bağlayıcısı üzerinden yönlendirilmesini tercih edin.
- SONRAKİ'yi ve ardından DAĞIT'ı tıklayın.
- Güncellenen Cloud Functions işlevi dağıtıldıktan sonra uç noktanın oluşturulduğunu görürsünüz.
- Cloud Run Functions konsolunun üst kısmındaki TEST düğmesini tıklayıp ortaya çıkan komutu Cloud Shell Terminal'de çalıştırarak işlevi test edebilirsiniz.
- Dağıtılan uç nokta,
CHECK_ORDER_STATUS_ENDPOINT
.env değişkeninde güncellemeniz gereken URL'dir.
8. Model Kurulumu
Temsilcinizi kullanıcı isteklerini anlama ve yanıt oluşturma özelliği, büyük dil modeli (LLM) tarafından desteklenir. Temsilcinizi bu harici LLM hizmetine güvenli çağrılar yapması gerekir. Bu işlem için kimlik doğrulama kimlik bilgileri gerekir. Geçerli kimlik doğrulaması olmadan LLM hizmeti aracının isteklerini reddeder ve aracı çalışamaz.
- Google AI Studio'dan API anahtarı alın.
- .env dosyasını ayarladığınız sonraki adımda
<<your API KEY>>
değerini gerçek API KEY değerinizle değiştirin.
9. ENV Değişkenleri Kurulumu
- Bu repo'daki şablon .env dosyasında parametre değerlerini ayarlayın. Benim durumumda .env dosyası şu değişkenleri içeriyor:
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
- Terminali kullanarak temsilci projenizin üst dizinine gidin:
cd renovation-agent
- Tüm bağımlılıkları yükleme
pip install -r requirements.txt
- Aracıyı çalıştırmak için Cloud Shell terminalinizde aşağıdaki komutu çalıştırabilirsiniz:
adk run .
- ADK tarafından sağlanan bir web kullanıcı arayüzünde çalıştırmak için aşağıdakileri çalıştırabilirsiniz:
adk web
- Şu istemleri kullanarak test yapın:
user>>
Hello. Generate Proposal Document for the kitchen remodel requirement. I have no other specification.
12. Agent Engine'e dağıtma
Çoklu aracı sistem düzgün çalıştığından emin olmak için test ettikten sonra, sunucusuz hale getirelim ve herkesin / herhangi bir uygulamanın kullanabileceği şekilde bulutta kullanıma sunalım. Depodaki agent.py dosyasında aşağıdaki kod snippet'inin yorumunu kaldırın. Ardından çok aracılı sisteminizi dağıtabilirsiniz:
# 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
Aşağıdaki komutu kullanarak proje klasöründen bu agent.py dosyasını 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 görünen bir uç nokta alırsınız:
'projects/123456789/locations/us-central1/reasoningEngines/123456'
"test.py" adlı yeni bir dosya 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. Artık Agent Engine'ın dağıtıldığı çok aracılı bir sistemle etkileşime geçmek ve mutfağınızı yenilemek için hazırsınız.
13. Tek satırlı dağıtım seçenekleri
Dağıtılan çok aracılı sistemi test ettiğinize göre, önceki adımda yaptığımız dağıtım adımını soyutlayan daha basit yöntemler öğrenelim: TEK SATIRLI DAĞITIM SEÇENEKLERİ:
- 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
Yayınlanan uç noktayı, yayın öncesi entegrasyonlar için kullanabilirsiniz.
- Temsilci Motoru'na:
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 temsilci görürsünüz. Daha fazla bilgi için bu blogu inceleyin.
14. Temizleme
Bu yayında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:
- Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
- Proje listesinde, silmek istediğiniz projeyi seçin ve ardından Sil'i tıklayın.
- İletişim kutusuna 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şturdunuz ve onunla etkileşime geçtiniz.