1. Giriş
Genel Bakış
Bu laboratuvarda, Google Agent Development Kit (Google ADK)'yi kullanarak karmaşık, çok agent'lı sistemleri nasıl düzenleyeceğiniz öğretilmektedir. Basit aracı hiyerarşilerinden otomatikleştirilmiş, ortak çalışmaya dayalı iş akışları oluşturmaya geçiş yapacaksınız.
Ne oluşturacaksınız?
İki farklı çok temsilcili sistem oluşturacaksınız:
- "Beyin fırtınası" aracısı ile "gezilecek yer planlama" aracısı arasındaki görüşmeleri aktarmayı öğrenen basit bir seyahat planlama aracısı.
- Tam bir film konusu oluşturmak için döngü içinde birlikte çalışan otomatik aracıların (ör. araştırmacı, senarist ve eleştirmen) "yazarlar odası" olarak kullanıldığı daha gelişmiş bir film önerisi oluşturucu.
Neler öğreneceksiniz?
- Nasıl üst ve alt acente ilişkileri oluşturulur?
- Bir araçtan oturuma
stateveri yazma - Anahtar şablonu kullanarak
stateokuma (ör.{my_key?}). - Adım adım iş akışları için
SequentialAgentkullanma. - Tekrarlı iyileştirme döngüleri oluşturmak için
LoopAgentnasıl kullanılır? - Bağımsız görevleri eşzamanlı olarak çalıştırmak için
ParallelAgentkullanma
2. Çok Temsilcili Sistemler
Agent Development Kit (ADK), geliştiricilerin üretken modellerden daha güvenilir, gelişmiş ve çok adımlı davranışlar elde etmesini sağlar. ADK, tek bir karmaşık istem yerine, işi bölerek bir sorun üzerinde birlikte çalışan birden fazla basit aracıdan oluşan bir akış oluşturmanıza olanak tanır.
Bu yaklaşımın, tek bir monolitik istem kullanmaya kıyasla çeşitli avantajları vardır:
- Daha basit tasarım: Küçük ve uzmanlaşmış bir dizi aracıdan oluşan akış tasarlamak ve düzenlemek, büyük ve karmaşık bir istem oluşturmaktan daha kolaydır.
- Güvenilirlik: Uzmanlaşmış temsilciler, belirli görevlerinde büyük ve karmaşık bir temsilciden daha güvenilirdir.
- Sürdürülebilirlik: Küçük ve özel bir temsilciyi, sistemin diğer kısımlarını bozmadan düzeltmek veya geliştirmek daha kolaydır.
- Modülerlik: Bir iş akışı için oluşturulan aracıları diğer iş akışlarında kolayca yeniden kullanabilirsiniz.
Hiyerarşik Temsilci Ağacı

ADK'da aracıları ağaç yapısında düzenlersiniz. Bu hiyerarşi, hangi temsilcinin görüşmeyi hangi temsilciye "aktarabileceğini" sınırladığından görüşmenin akışını kontrol etmek için çok önemlidir. Bu sayede sistemin davranışı daha tahmin edilebilir ve hata ayıklaması daha kolay hale gelir. Sunulan avantajlardan bazıları:
- Sezgisel tasarım: Yapı, gerçek dünyadaki takımlardan esinlenerek oluşturulduğu için hakkında akıl yürütmek daha kolaydır.
- Kontrollü Akış: Hiyerarşi, görev devretme üzerinde hassas kontrol sahibi olmanızı sağlar. Bu da hata ayıklamaya yardımcı olur. Örneğin, ağaç yapısı, benzer açıklamalara sahip iki rapor yazma aracınız olsa bile doğru rapor yazma aracının çağrılmasını sağlar.
Yapının tamamı root_agent ile başlar. Bu aracı üst olarak hareket eder ve bir veya daha fazla alt aracıya sahip olabilir. Bu alt aracılar da kendi alt aracılarının üstü olabilir ve böylece ağaç yapısı oluşur.
3. Proje ayarlama
Google Hesabı
Kişisel Google Hesabınız yoksa Google Hesabı oluşturmanız gerekir.
İş veya okul hesabı yerine kişisel hesap kullanın.
Google Cloud Console'da oturum açma
Kişisel bir Google Hesabı kullanarak Google Cloud Console'da oturum açın.
Faturalandırmayı Etkinleştir
5 ABD doları değerindeki Google Cloud kredilerini kullanma (isteğe bağlı)
Bu atölyeyi düzenlemek için bir miktar kredisi olan bir faturalandırma hesabına ihtiyacınız vardır. Kendi faturalandırmanızı kullanmayı planlıyorsanız bu adımı atlayabilirsiniz.
- Bu bağlantıyı tıklayın ve kişisel bir Google Hesabı ile oturum açın.Aşağıdakine benzer bir mesaj görürsünüz:

- KREDİLERİNİZE ERİŞMEK İÇİN BURAYI TIKLAYIN düğmesini tıklayın. Bu işlem sizi faturalandırma profilinizi ayarlayacağınız bir sayfaya yönlendirir.

- Onayla'yı tıklayın.
Artık bir Google Cloud Platform deneme sürümü faturalandırma hesabına bağlısınız.

Kişisel faturalandırma hesabı oluşturma
Faturalandırmayı Google Cloud kredilerini kullanarak ayarladıysanız bu adımı atlayabilirsiniz.
Kişisel faturalandırma hesabı oluşturmak için Cloud Console'da faturalandırmayı etkinleştirmek üzere buraya gidin.
Bazı notlar:
- Bu laboratuvarı tamamlamak için 1 ABD dolarından daha az tutarda bulut kaynağı kullanmanız gerekir.
- Daha fazla ödeme alınmaması için bu laboratuvarın sonundaki adımları uygulayarak kaynakları silebilirsiniz.
- Yeni kullanıcılar 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
Proje oluşturma (isteğe bağlı)
Bu laboratuvar için kullanmak istediğiniz mevcut bir projeniz yoksa buradan yeni bir proje oluşturun.
4. Cloud Shell Düzenleyici'yi açma
- Doğrudan Cloud Shell Düzenleyici'ye gitmek için bu bağlantıyı tıklayın.
- Bugün herhangi bir noktada yetkilendirmeniz istenirse devam etmek için Yetkilendir'i tıklayın.

- Terminal ekranın alt kısmında görünmüyorsa açın:
- Görünüm'ü tıklayın.
- Terminal'i tıklayın.

- Terminalde şu komutla projenizi ayarlayın:
gcloud config set project [PROJECT_ID]- Örnek:
gcloud config set project lab-project-id-example - Proje kimliğinizi hatırlamıyorsanız tüm proje kimliklerinizi şu komutla listeleyebilirsiniz:
gcloud projects list
- Örnek:
- Şu mesajı görmeniz gerekir:
Updated property [core/project].
5. API'leri etkinleştir
Vertex AI API'yi kullanmak ve Gemini modeliyle etkileşim kurmak için Google Cloud projenizde Vertex AI API'yi etkinleştirmeniz gerekir.
- Terminalde API'yi etkinleştirin:
gcloud services enable aiplatform.googleapis.com
GitHub deposunu kopyalama ve bağımlılıkları yükleme talimatlarıyla manuel dosya oluşturma işleminin yerini alan güncellenmiş bölümleri aşağıda bulabilirsiniz.
Python için Vertex AI SDK'ya giriş
Python uygulamanızdan Vertex AI'de barındırılan modellerle etkileşim kurmak için Python için Vertex AI SDK'yı kullanırsınız. Bu SDK, temel API çağrılarının karmaşıklıklarını doğrudan ele almaya gerek kalmadan istem gönderme, model parametrelerini belirtme ve yanıt alma sürecini basitleştirir.
Python için Vertex AI SDK'sıyla ilgili kapsamlı dokümanları Python için Vertex AI SDK'ya giriş | Google Cloud sayfasında bulabilirsiniz.
6. Proje ortamını ayarlama
Depoyu klonlama
- Terminalde, başlangıç dosyalarını içeren depoyu klonlayın.
git clone --depth 1 https://github.com/GoogleCloudPlatform/devrel-demos.git--depth 1işareti yalnızca en son sürümü klonlar. Bu işlem daha hızlıdır. - Terminalde bu laboratuvar için doğru çalışma dizinine gidin.
cd devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems
Sanal ortamı etkinleştirme
- Terminalde,
uvkullanarak sanal bir ortam oluşturun ve etkinleştirin:uv venv source .venv/bin/activate - Terminalde,
google-adkverequirements.txtdosyasındaki diğer bağımlılıkları yükleyin:uv pip install -r requirements.txt
Dosya yapınızı inceleyin
Tüm dosyalarınız oluşturulduktan sonra, yapının tamamını görmek için gezginde adk_multiagent_systems klasörünü açın.
- Cloud Shell Editor menüsünde Dosya > Klasörü Aç...'ı seçin.

- Açılan kutuda, kullanıcı adınızın ardından aşağıdaki klasör bilgilerini ekleyin:
devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems/. Tamam'ı tıklayın.
Şuna benzer bir şey görmelisiniz:
- Soldaki Gezgin paneli yenilenir. Artık
parent_and_subagentsveworkflow_agentsalt dizinleriyle birlikte tam proje yapınızı görmelisiniz. Bir sonraki adımlara geçebilirsiniz.
Ortam değişkenlerini ayarlama
- Zaten
adk_multiagent_systemsdizinindesiniz. Terminalde, ortam değişkenlerinizi depolamak için bir.envdosyası oluşturun:cloudshell edit .env - Aşağıdaki kodu, düzenleyicide açılan
.envdosyasına yapıştırın:GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT="[YOUR-PROJECT-ID]" GOOGLE_CLOUD_LOCATION=global MODEL="gemini-2.5-flash" [YOUR-PROJECT-ID]kısmını, gerçek Google Cloud proje kimliğinizle değiştirin. (ör.PROJECT_ID = "google-cloud-labs")
Proje kimliğinizi hatırlamıyorsanız terminalinizde aşağıdaki komutu çalıştırın. Tüm projelerinizin ve kimliklerinin listesi gösterilir.gcloud projects list- Terminalde, bu
.envdosyasını alt aracı dizinlerine kopyalayın. Böylece bu dizinler de değişkenlere erişebilir: Dosya yapısı artık şu şekilde görünmelidir:cp .env parent_and_subagents/.env cp .env workflow_agents/.env
7. Üst, alt ve benzer acenteler arasındaki transferleri keşfetme
Sohbet her zaman root_agent ile başlar. Varsayılan olarak, bir üst temsilci görüşmenin ne zaman aktarılacağına karar vermek için alt temsilcilerinin description değerini kullanır. Bu aktarımları, alt aracılarının name kullanarak ebeveynin instruction içinde açıkça yönlendirebilirsiniz.
Bunu test edelim.
- Cloud Shell Düzenleyici'de
adk_multiagent_systems/parent_and_subagents/agent.pydosyasını açın.agent.pydosyasındaki üç temsilciye dikkat edin:root_agent(steeringadlı): Kullanıcıya hangi alt temsilciye aktarılacağını belirlemek için soru sorar. Başlangıçta yalnızca alt aracılarındescription'ına bağlıdır.travel_brainstormer: Kullanıcının gidilecek yerler hakkında beyin fırtınası yapmasına yardımcı olur.attractions_planner: Kullanıcının belirli bir ülkede yapılacak şeyleri listelemesine yardımcı olur.
- Aşağıdaki satırı
root_agentoluşturma işlemine ekleyerektravel_brainstormerveattractions_planneralt aracılarınıroot_agent'nin alt aracıları yapın:sub_agents=[travel_brainstormer, attractions_planner] - Terminalde temsilcinizle sohbet edin:
cd ~/devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems adk run parent_and_subagents - Terminaldeki
[user]:isteminde şunu yazın: Örnek çıkış (Sizinki biraz farklı olabilir):hello[steering]: Hi there! Do you already have a country in mind for your trip, or would you like some help deciding where to go?
- Şimdi terminaldeki temsilciye şunu söyleyin:
Örnek çıkış (Sizinki biraz farklı olabilir):I could use some help deciding.[travel_brainstormer]: Okay! To give you the best recommendations, I need to understand what you're looking for in a trip. ...
[travel_brainstormer]etiketine dikkat edin.root_agent, kontrolü yalnızca alt acentenindescriptiontemelinde aktardı. - Terminaldeki
user:istemindeexityazıp ENTER'a basarak görüşmeyi sonlandırın. - Şimdi daha açık olalım.
agent.pyiçinde,root_agentöğesinininstructionbölümüne aşağıdakileri ekleyin:If they need help deciding, send them to 'travel_brainstormer'. If they know what country they'd like to visit, send them to the 'attractions_planner'. - Terminalde aracı tekrar çalıştırın:
adk run parent_and_subagents - Terminaldeki
[user]:isteminde şunu yazın:hello - Şöyle yanıt verin:
Örnek çıkış (Sizinki biraz farklı olabilir):I would like to go to Japan. Yeni talimatlarınızda belirtildiği gibi[attractions_planner]: Okay, I can help you with that! Here are some popular attractions in Japan: ...
attractions_planneradresine yapılan aktarımı fark edin. - Şimdi şu yanıtı verin:
Örnek çıkış (Sizinki biraz farklı olabilir):Actually I don't know what country to visit.[travel_brainstormer]: Okay! I can help you brainstorm some countries for travel...
attractions_planner'nin benzeri olantravel_brainstormer'ye aktarıldığınızı bildiririz. Bu ayar varsayılan olarak etkindir. - Kullanıcı isteminde oturumu sonlandırmak için
exityazın.
Özet
Bu bölümde, aracı hiyerarşisi ve görüşme akışının temellerini öğrendiniz:
- Sohbet her zaman
root_agentile başlar. - Bir üst aracı,
descriptiontemelinde otomatik olarak bir alt aracıya aktarabilir. instructionadlı üst öğeye,nameadlı alt öğeye aktarma izni vererek bu akışı açıkça kontrol edebilirsiniz.- Varsayılan olarak temsilciler,
peertemsilcilerine (hiyerarşideki kardeşler) aktarım yapabilir.
8. Bilgileri depolamak ve almak için oturum durumunu kullanma
Her ADK görüşmesinde, oturum durumu sözlüğünü içeren bir Session bulunur. Bu duruma tüm temsilciler erişebilir. Bu nedenle, temsilciler arasında bilgi aktarmak veya görüşme boyunca verileri (ör. liste) korumak için idealdir.
Duruma ekleme ve durumdan okuma işlemlerini keşfetmek için:
adk_multiagent_systems/parent_and_subagents/agent.pydosyasına dönün.- Aşağıdaki işlev tanımını
# Toolsbaşlığının altına yapıştırın: Bu kodda şunlara dikkat edin:def save_attractions_to_state( tool_context: ToolContext, attractions: List[str] ) -> dict[str, str]: """Saves the list of attractions to state["attractions"]. Args: attractions [str]: a list of strings to add to the list of attractions Returns: None """ # Load existing attractions from state. If none exist, start an empty list existing_attractions = tool_context.state.get("attractions", []) # Update the 'attractions' key with a combo of old and new lists. # When the tool is run, ADK will create an event and make # corresponding updates in the session's state. tool_context.state["attractions"] = existing_attractions + attractions # A best practice for tools is to return a status message in a return dict return {"status": "success"}- İşlev
tool_context: ToolContextdeğerini alır. Bu nesne, oturuma erişim noktanızdır. tool_context.state["attractions"] = ...satırı, doğrudan oturumun durum sözlüğünden okur ve bu sözlüğe yazar. Geri kalan işlemler ADK tarafından yapılır.
- İşlev
toolsparametresini ekleyerek aracıattractions_planneraracısına ekleyin:tools=[save_attractions_to_state]- Aşağıdaki madde işaretlerini
attractions_planneraracının mevcutinstructionbölümüne ekleyin:- When they reply, use your tool to save their selected attraction and then provide more possible attractions. - If they ask to view the list, provide a bulleted list of { attractions? } and then suggest some more. - Terminalde aşağıdaki komutu kullanarak Agent Development Kit Web UI'yi başlatın:
Çıkışadk webINFO: Started server process [2434] INFO: Waiting for application startup. +-------------------------------------------------------+ | ADK Web Server started | | | | For local testing, access at http://localhost:8000. | +-------------------------------------------------------+ INFO: Application startup complete. INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) - Cloud Shell terminalinde, web arayüzünü yeni bir sekmede görüntülemek için Web Önizlemesi düğmesini tıklayın ve Bağlantı Noktasını Değiştir'i seçin.

- Bağlantı noktası numarası olarak 8000'i girin ve Change and Preview'u (Değiştir ve Önizle) tıklayın. ADK Geliştirici Kullanıcı Arayüzü'nü içeren yeni bir tarayıcı sekmesi açılır.

- Soldaki Bir aracı seçin açılır listesinden
parent_and_subagentssimgesini seçin. - Sohbeti başlatın:
hello - Temsilci sizi karşıladıktan sonra şu yanıtı verin:
I'd like to go to Egypt.attractions_planner'a yönlendirilir ve gezilecek yerlerin listesi gösterilir. - Bir cazibe merkezi seçin (örneğin):
I'll go to the Sphinx - Şuna benzer bir yanıt alırsınız: Tamam, Sfenks'i listenize kaydettim...
- Aracın yanıtından oluşturulan etkinliği görüntülemek için yanıt araç kutusunu (onay işaretiyle işaretlenmiş) tıklayın.
Durumdaki değişiklikleri açıklayanstateDeltaiçeren bir işlemler alanı olduğunu unutmayın. - Acentenin listesindeki başka bir cazibe merkeziyle yanıt verin.
- Sol gezinme menüsünde, daha önce incelediğiniz etkinliğe odaklanmayı bırakmak için "X"i tıklayın.
- Sol kenar çubuğunda Durum sekmesini tıklayın. Artık oturumun durumunda
attractionsdizisini görebilirsiniz. Bu dizi, seçtiğiniz her iki öğeyi de içermelidir.
- Bu mesajı temsilciye gönderin:
Aracı artık durumdan okumalı ve listenizi döndürmelidir.What is on my list? - Aracıyla deneme yapmayı bitirdiğinizde web tarayıcısı sekmesini kapatın ve sunucuyu durdurmak için Cloud Shell Terminali'nde CTRL + C tuşlarına basın.
Bölüm Özeti
Bu bölümde, verileri paylaşmak için Session durumunu nasıl kullanacağınızı öğrendiniz:
- Duruma yazma:
tool_context.statenesnesini kullanarak bir araç içinden durum sözlüğüne yazarsınız (ör.tool_context.state["my_list"] = [...]). - Durumu okumak için: Anahtar şablonu oluşturma (ör.
instructionHere is your list: {my_list?}). - Durumu incelemek için: ADK Dev UI'deki Durum sekmesini kullanarak oturum durumunu canlı olarak izleyebilirsiniz.
9. İş Akışı Aracıları
Şimdiye kadar, üst aracının nasıl alt aracıya aktarım yaptığını ve ardından kullanıcıyı beklediğini gördünüz. İş akışı aracıları farklıdır: Kullanıcı girişi beklemeden, otomatik bir akışta alt aracılarını birbiri ardına çalıştırırlar.
Bu, "Planla ve Uygula" veya "Taslak Oluştur ve Revize Et" gibi otomatikleştirilmiş, çok adımlı görevler için idealdir. ADK, bunu yönetmek için üç yerleşik iş akışı aracısı sağlar:
SequentialAgentLoopAgentParallelAgent
Bu laboratuvarın geri kalanında, bu üç iş akışı aracısını kullanarak çok aracılı bir sistem oluşturmaya odaklanacağız.
Tarihi bir karakterle ilgili yeni bir film için tanıtım belgesi geliştiren bir aracı oluşturacaksınız. Temsilcileriniz araştırma, yinelemeli yazma ve rapor oluşturma işlemlerini gerçekleştirir.
Sonuç olarak sisteminiz aşağıdaki gibi görünecektir:

Bu sistemi en basit iş akışından başlayarak adım adım oluşturacaksınız.
10. SequentialAgent ile çok aracılı bir sistem oluşturma
SequentialAgent, alt aracılarını basit ve doğrusal bir sırada yürüten bir iş akışı aracısıdır. sub_agents listesindeki her aracı, sırayla ve birbiri ardına çalıştırılır. Bu özellik, görevlerin belirli bir sırayla yapılması gereken iş akışları için idealdir. Örneğin, şimdi oluşturacağınız film önerisi aracında bu özellikten yararlanabilirsiniz.
Bu ilk sürüm şu şekilde yapılandırılacak:

root_agent(greeter), kullanıcıyı karşılayıp film konusunu alacak.- Bu işlemden sonra,
film_concept_teamadlıSequentialAgent'ya aktarılır. BuSequentialAgent:- Wikipedia'dan bilgi almak için
researcheraracını çalıştırın. - Bu bilgileri kullanarak bir olay örgüsü yazmak için
screenwriteraracısını çalıştırın. - Son grafiği bir dosyaya kaydetmek için
file_writeraracını çalıştırın.
- Wikipedia'dan bilgi almak için
Çalıştıralım.
- Cloud Shell Düzenleyici'de
adk_multiagent_systems/workflow_agents/agent.pydosyasını açın.
Bu aracı tanım dosyasını okuyun. Alt temsilciler bir üst temsilciye atanmadan önce tanımlanmaları gerektiğinden dosyayı sohbet akışının sırasına göre okumak için temsilcileri dosyanın en altından en üstüne doğru okuyabilirsiniz. append_to_statearacına dikkat edin. Bu yardımcı işlev, aracıların oturum durumundaki bir listeye veri eklemesine olanak tanır.researchervescreenwriter, çalışmalarını bu şekilde iletir.- Temsilciyi deneyin. Terminalde, canlı yeniden yükleme etkinleştirilmiş web arayüzünü başlatın:
cd ~/devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems adk web --reload_agents - Cloud Shell terminalinde, web arayüzünü yeni bir sekmede görüntülemek için Web Önizlemesi düğmesini tıklayın ve Bağlantı Noktasını Değiştir'i seçin.

- Bağlantı noktası numarası olarak 8000'i girin ve Change and Preview'u (Değiştir ve Önizle) tıklayın. ADK Geliştirici Kullanıcı Arayüzü'nü içeren yeni bir tarayıcı sekmesi açılır.

- Bir aracı seçin açılır listesinden
workflow_agentssimgesini seçin. - Sohbeti başlatmak için:
hello.greetertemsilcisi yanıt verecektir. - İstendiğinde tarihi bir şahsiyet girin. Bunlardan birini veya kendi şablonunuzu kullanabilirsiniz:
- Zhang Zhongjing
- Ada Ak
- Marcus Aurelius
SequentialAgentartık devralacak. Herhangi bir ara mesaj görmezsiniz.researcher,screenwritervefile_writerbirbiri ardına çalıştırılır. Aracı yalnızca tüm sıra tamamlandığında yanıt verir.
Başarısız olursa sağ üstteki + Yeni Oturum'u tıklayarak tekrar deneyebilirsiniz.- Aracı, dosyanın yazıldığını onayladıktan sonra çıkışı görmek için Cloud Shell Düzenleyicinizdeki
movie_pitchesdizininde yeni.txtdosyasını bulup açın. - ADK Dev UI'de, etkinlik görünümünü açmak için sohbet geçmişindeki son aracı simgesini tıklayın.
- Etkinlik görünümünde, aracı ağacının görsel grafiği gösterilir.
greeteradlı kullanıcınınfilm_concept_teamadlı kullanıcıyı aradığını ve bu kullanıcının da alt temsilcilerini sırayla aradığını görebilirsiniz.
- Grafikteki herhangi bir aracı için İstek ve Yanıt sekmelerini tıklayarak oturum durumu da dahil olmak üzere aktarılan verileri inceleyebilirsiniz.
Bölüm Özeti
Bu bölümde, iş akışı aracını nasıl kullanacağınızı öğrendiniz:
- Bir
SequentialAgent, alt aracılarını adım aralarında kullanıcı girişi beklemeden sırayla tek tek yürütür. - Kullanıcı
root_agentile konuştuğu veroot_agent, tamamlanması için işiSequentialAgent'e devrettiği için bu bir "iş akışıdır". - Sıradaki alt aracılar oturum durumunu kullanır (ör.
{ PLOT_OUTLINE? }) seçeneğini tıklayarak önceki temsilcilerin çalışmalarına erişebilirsiniz. - Tüm aracıdan aracıya iş akışını görselleştirmek ve hatalarını ayıklamak için geliştirici kullanıcı arayüzündeki etkinlik grafiğini kullanabilirsiniz.
11. Tekrarlayan çalışmalar için LoopAgent ekleme
LoopAgent, alt aracılarını sırayla çalıştıran ve ardından baştan başlayarak tekrarlayan bir iş akışı aracısıdır. Bu "döngü", bir koşul karşılanana kadar (ör. max_iterations sayısına ulaşma veya bir alt aracının yerleşik exit_loop aracını çağırması) devam eder.
Yinelemeli iyileştirme gerektiren görevler için faydalıdır. Film önerisi temsilciniz için "yazarların odası" oluşturmak üzere bu LoopAgent öğesini ekleyeceksiniz. Bu sayede researcher, screenwriter ve yeni bir critic aracısı döngü içinde çalışarak critic hazır olduğuna karar verene kadar her geçişte kurguyu iyileştirir. Bu sayede, temsilci bir fikri araştırıp iyileştirerek daha belirsiz kullanıcı girişlerini (ör. "eski bir doktor") de işleyebilir.

Bu değişiklikleri yapmak için:
adk_multiagent_systems/workflow_agents/agent.pyiçinde,exit_loopiçin içe aktarma işlemini ekleyin (diğergoogle.adkiçe aktarma işlemlerinin yakınına):from google.adk.tools import exit_loop- Yeni
critictemsilcisini ekleyin. Bu temsilci, olay örgüsünü inceler. İyi bir sonuç elde edilirseexit_loopçağrılır. Aksi takdirde, bir sonraki döngü için duruma geri bildirim ekler.
Aşağıdaki aracı tanımını# Agentsbölümünün altına yapıştırın:critic = Agent( name="critic", model=model_name, description="Reviews the outline so that it can be improved.", instruction=""" INSTRUCTIONS: Consider these questions about the PLOT_OUTLINE: - Does it meet a satisfying three-act cinematic structure? - Do the characters' struggles seem engaging? - Does it feel grounded in a real time period in history? - Does it sufficiently incorporate historical details from the RESEARCH? If the PLOT_OUTLINE does a good job with these questions, exit the writing loop with your 'exit_loop' tool. If significant improvements can be made, use the 'append_to_state' tool to add your feedback to the field 'CRITICAL_FEEDBACK'. Explain your decision and briefly summarize the feedback you have provided. PLOT_OUTLINE: { PLOT_OUTLINE? } RESEARCH: { research? } """, before_model_callback=log_query_to_model, after_model_callback=log_model_response, tools=[append_to_state, exit_loop] ) writers_roomLoopAgentoluşturun. Bu, döngüde çalışacak üç aracı içerir.
Aşağıdaki kodufilm_concept_teamaracı tanımının üzerine yapıştırın:writers_room = LoopAgent( name="writers_room", description="Iterates through research and writing to improve a movie plot outline.", sub_agents=[ researcher, screenwriter, critic ], max_iterations=5, )- Yeni
writers_roomdöngüsünü kullanmak içinfilm_concept_teamSequentialAgentöğesini güncelleyin.researchervescreenwriteröğelerini tek birwriters_roomaracısıyla değiştirin.Mevcutfilm_concept_teamtanımınızı aşağıdakilerle değiştirin:film_concept_team = SequentialAgent( name="film_concept_team", description="Write a film plot outline and save it as a text file.", sub_agents=[ writers_room, file_writer ], ) - ADK Dev UI sekmesine dönün ve sağ üstteki + Yeni Oturum'u tıklayın.
- Şununla yeni bir görüşme başlatın:
hello - İstendiğinde temsilciye bu kez daha geniş bir konu verin. Bazı fikirler:
- kitleler için ürünler tasarlayan bir endüstriyel tasarımcı
- bir kartograf (harita yapımcısı)
- ekinlerin daha fazla yiyecek vermesini sağlayan adam
- Döngü tamamlandığında aracı dosyayı yazar. Oluşturulan dosyayı
adk_multiagent_systems/movie_pitchesdizininde inceleyin. - Döngü yapısını görmek için geliştirici kullanıcı arayüzündeki olay grafiğini inceleyin.
Bölüm Özeti
Bu bölümde, LoopAgent simgesini nasıl kullanacağınızı öğrendiniz:
LoopAgent, alt temsilci dizisini tekrarlayan ve yinelemeli görevler için "iç döngü" oluşturan bir iş akışı temsilcisidir.- Döngü içindeki temsilciler, işi aktarmak için oturum durumunu kullanır (ör.
PLOT_OUTLINE) ve geri bildirim (ör.CRITICAL_FEEDBACK) birbirine aktarılır. - Döngü,
max_iterationssınırına ulaşıldığında veyaexit_looparacı çağrıldığında durdurulabilir.
12. "Fan out and gather" için ParallelAgent kullanma
ParallelAgent, tüm alt aracılarını aynı anda (eşzamanlı olarak) yürüten bir iş akışı aracısıdır. Bu, iki farklı araştırma işi çalıştırmak gibi bağımsız alt görevlere bölünebilen görevler için değerlidir.
Paralel olarak çalışan bir "ön üretim ekibi" oluşturmak için ParallelAgent kullanacaksınız. Bir temsilci gişe potansiyeli hakkında araştırma yaparken başka bir temsilci aynı anda oyuncu seçimi fikirleri için beyin fırtınası yapar. Bu duruma genellikle "dağıt ve topla" modeli denir: ParallelAgent işi "dağıtır", daha sonraki bir aracı (file_writer) ise sonuçları "toplar".

Son temsilci akışınız şu şekilde olacak:
- Sohbeti
greeter(kök) başlatır. - Bu işlem,
film_concept_team(SequentialAgent) öğesine aktarılır ve şu işlem çalıştırılır:- Grafiği oluşturmak için
writers_room(LoopAgent). - Gişe ve oyuncu seçimi hakkında aynı anda araştırma yapmak için yeni
preproduction_team(ParallelAgent) - Tüm sonuçları toplamak ve dosyayı kaydetmek için
file_writersimgesini tıklayın.
- Grafiği oluşturmak için
Bu değişiklikleri yapmak için:
adk_multiagent_systems/workflow_agents/agent.pybölümünde, yeniParallelAgentve alt aracılarını# Agentsbaşlığının altına yapıştırın.box_office_researcher = Agent( name="box_office_researcher", model=model_name, description="Considers the box office potential of this film", instruction=""" PLOT_OUTLINE: { PLOT_OUTLINE? } INSTRUCTIONS: Write a report on the box office potential of a movie like that described in PLOT_OUTLINE based on the reported box office performance of other recent films. """, output_key="box_office_report" ) casting_agent = Agent( name="casting_agent", model=model_name, description="Generates casting ideas for this film", instruction=""" PLOT_OUTLINE: { PLOT_OUTLINE? } INSTRUCTIONS: Generate ideas for casting for the characters described in PLOT_OUTLINE by suggesting actors who have received positive feedback from critics and/or fans when they have played similar roles. """, output_key="casting_report" ) preproduction_team = ParallelAgent( name="preproduction_team", sub_agents=[ box_office_researcher, casting_agent ] )film_concept_teamSequentialAgent'ninsub_agentslistesini yenipreproduction_team'ı (writers_roomilefile_writerarasında) içerecek şekilde güncelleyin. Mevcutfilm_concept_teamtanımınızı aşağıdakilerle değiştirin:film_concept_team = SequentialAgent( name="film_concept_team", description="Write a film plot outline and save it as a text file.", sub_agents=[ writers_room, preproduction_team, file_writer ], )file_writeraracısınıninstructionözelliğini, eyaletteki yeni raporları "toplayıp" dosyaya ekleyecek şekilde güncelleyin.
file_writeriçininstructiondizesini şununla değiştirin:instruction=""" INSTRUCTIONS: - Create a marketable, contemporary movie title suggestion for the movie described in the PLOT_OUTLINE. If a title has been suggested in PLOT_OUTLINE, you can use it, or replace it with a better one. - Use your 'write_file' tool to create a new txt file with the following arguments: - for a filename, use the movie title - Write to the 'movie_pitches' directory. - For the 'content' to write, include: - The PLOT_OUTLINE - The BOX_OFFICE_REPORT - The CASTING_REPORT PLOT_OUTLINE: { PLOT_OUTLINE? } BOX_OFFICE_REPORT: { box_office_report? } CASTING_REPORT: { casting_report? } """,- ADK Dev UI sekmesine dönün ve + New Session'ı (+ Yeni Oturum) tıklayın.
- Sohbeti başlatmak için
hellogirin. - İstendiğinde yeni bir karakter fikri girin. Bazı fikirler:
- kablosuz bağlantı teknolojisini icat eden aktris
- heyecanlı bir aşçı
- Dünya fuarı sergilerindeki kilit oyuncular
- Aracı işini tamamladığında
adk_multiagent_systems/movie_pitchesdizinindeki son dosyayı inceleyin. Artık tek bir belgede olay örgüsü, gişe raporu ve oyuncu seçimi raporu yer almalıdır.
Bölüm Özeti
Bu bölümde, ParallelAgent simgesini nasıl kullanacağınızı öğrendiniz:
- Bir
ParallelAgent"dağıtma" işlemi, alt aracılarını sırayla değil aynı anda çalıştırır. - Bu, birbirinden bağımsız görevler (ör. iki farklı konuyu araştırma) için oldukça verimlidir.
- Paralel aracıların sonuçları daha sonraki bir aracı tarafından "toplanır". Bunun için paralel aracıların çalışmalarını oturum durumuna (
output_keykullanarak) kaydetmesi ve son bir aracının (ör.file_writer) bu anahtarları okuması gerekir.
13. Özel iş akışı aracıları
SequentialAgent, LoopAgent ve ParallelAgent önceden tanımlanmış iş akışı aracıları ihtiyaçlarınız için yeterli olmadığında CustomAgent, yeni iş akışı mantığı uygulama esnekliği sağlar.
Alt aracılar arasında akış kontrolü, koşullu yürütme veya durum yönetimi için kalıplar tanımlayabilirsiniz. Bu özellik; karmaşık iş akışları, durum bilgisi içeren düzenlemeler veya özel iş mantığını çerçevelerin düzenleme katmanına entegre etmek için kullanışlıdır.
CustomAgent oluşturma bu laboratuvarın kapsamı dışındadır ancak ihtiyacınız olursa böyle bir özelliğin olduğunu bilmeniz iyi olur.
14. Tebrikler!
Google Agent Development Kit (ADK)'yi kullanarak gelişmiş bir çoklu aracı sistemi başarıyla oluşturdunuz. Basit bir üst-alt temsilci ilişkisinden, yaratıcı bir projeyi araştırabilen, yazabilen ve iyileştirebilen karmaşık, otomatik iş akışlarını yönetmeye geçtiniz.
Özet
Bu laboratuvarda şunları yaptınız:
- Üst ve alt aracı ilişkileriyle hiyerarşik ağaçta düzenlenmiş aracılar.
- Hem otomatik olarak (
descriptionkullanılarak) hem de açıkça (instructionkullanılarak) kontrollü temsilciden temsilciye aktarımlar. tool_context.statesözlüğüne veri yazmak için bir araç kullanıldı.- Anahtar şablonu kullanıldı (ör.
{ PLOT_OUTLINE? }) oturum durumundan okumak ve temsilcinin istemine rehberlik etmek için kullanılır. - Basit ve adım adım iş akışı (araştırma -> yazma -> kaydetme) oluşturmak için
SequentialAgentuygulandı. - Yinelemeli iyileştirme döngüsü oluşturmak için
criticaracısı veexit_looparacıyla birlikteLoopAgentkullanıldı. - Bağımsız görevleri (ör. oyuncu seçimi ve gişe araştırması) aynı anda yürütmek için
ParallelAgentkullanıldı.
Denemeye devam etme
Öğrendiklerinizi geliştirebileceğiniz birçok yol vardır. Aşağıdaki önerilerden yararlanabilirsiniz:
- Daha fazla temsilci ekleyin:
preproduction_teamParallelAgenthesabınıza yeni bir temsilci eklemeyi deneyin. Örneğin,PLOT_OUTLINEtemelinde film için kısa açıklama yazan birmarketing_agentoluşturabilirsiniz. - Daha fazla araç ekleme:
researchertemsilcinize daha fazla araç verin. Wikipedia'da bulunmayan bilgileri bulmak için Google Arama API'sini kullanan bir araç oluşturabilirsiniz. - Keşfet
CustomAgent: Laboratuvarda, standart şablonlara uymayan iş akışları içinCustomAgentözelliğinden bahsedildi. Örneğin, bir aracıyı yalnızca oturum durumunda belirli bir anahtar varsa koşullu olarak çalıştıran bir aracı oluşturmayı deneyin.