1. Pengantar
Ringkasan
Lab ini mengajarkan cara mengatur sistem multi-agen yang kompleks menggunakan Agent Development Kit (ADK) Google. Anda akan beralih dari hierarki agen sederhana ke pembuatan alur kerja kolaboratif yang otomatis.
Yang akan Anda build
Anda akan membangun dua sistem multi-agen yang berbeda:
- Agen perencanaan perjalanan sederhana yang mempelajari cara mengalihkan percakapan antara agen "brainstorming" dan agen "perencanaan tempat wisata".
- Generator ide film yang lebih canggih yang menggunakan "ruang penulis" agen otomatis (seperti peneliti, penulis skenario, dan kritikus) untuk bekerja sama dalam loop guna membuat plot film lengkap.
Yang akan Anda pelajari
- Cara membuat hubungan induk dan sub-agen.
- Cara menulis data ke sesi
statedari alat. - Cara membaca dari
statemenggunakan pembuatan template kunci (misalnya,{my_key?}). - Cara menggunakan
SequentialAgentuntuk alur kerja langkah demi langkah. - Cara menggunakan
LoopAgentuntuk membuat siklus penyempurnaan iteratif. - Cara menggunakan
ParallelAgentuntuk menjalankan tugas independen secara serentak.
2. Sistem Multi-Agen
Agent Development Kit (ADK) memungkinkan developer mendapatkan perilaku multi-langkah yang lebih andal dan canggih dari model generatif. Daripada satu perintah yang kompleks, ADK memungkinkan Anda membangun alur beberapa agen yang lebih sederhana yang berkolaborasi dalam suatu masalah dengan membagi pekerjaan.
Pendekatan ini memiliki beberapa keunggulan dibandingkan dengan menggunakan satu perintah monolitik:
- Desain yang Lebih Sederhana: Lebih mudah mendesain dan mengatur alur agen kecil khusus daripada merekayasa satu perintah besar yang kompleks.
- Keandalan: Agen khusus lebih andal dalam tugas tertentu daripada satu agen besar yang kompleks.
- Kemudahan pemeliharaan: Lebih mudah untuk memperbaiki atau meningkatkan kualitas agen kecil khusus tanpa merusak bagian lain dari sistem.
- Modularitas: Agen yang dibuat untuk satu alur kerja dapat dengan mudah digunakan kembali di alur kerja lainnya.
Hierarki Agen

Di ADK, Anda mengatur agen dalam struktur hierarki. Hierarki ini penting untuk mengontrol alur percakapan, karena membatasi agen mana yang dapat "meneruskan" percakapan ke agen lain. Hal ini membuat perilaku sistem lebih mudah diprediksi dan di-debug. Berbagai manfaat yang ditawarkan antara lain:
- Desain Intuitif: Strukturnya terinspirasi oleh tim di dunia nyata, sehingga lebih mudah dipahami.
- Alur yang Dikontrol: Hierarki memberi Anda kontrol yang tepat atas delegasi tugas, yang membantu dalam proses penelusuran bug. Misalnya, struktur hierarki memastikan agen penulisan laporan yang benar dipanggil, meskipun Anda memiliki dua agen dengan deskripsi yang serupa.
Seluruh struktur dimulai dengan root_agent. Agen ini bertindak sebagai induk dan dapat memiliki satu atau beberapa sub-agen, yang pada gilirannya juga dapat menjadi induk bagi sub-agennya sendiri, sehingga membentuk pohon.
3. Penyiapan project
Akun Google
Jika belum memiliki Akun Google pribadi, Anda harus membuat Akun Google.
Gunakan akun pribadi, bukan akun kantor atau sekolah.
Login ke Konsol Google Cloud
Login ke Konsol Google Cloud menggunakan Akun Google pribadi.
Aktifkan Penagihan
Menukarkan kredit Google Cloud senilai $5 (opsional)
Untuk menjalankan workshop ini, Anda memerlukan Akun Penagihan dengan sejumlah kredit. Jika Anda berencana menggunakan penagihan sendiri, Anda dapat melewati langkah ini.
- Klik link ini dan login dengan Akun Google pribadi.Anda akan melihat tampilan seperti ini:

- Klik tombol KLIK DI SINI UNTUK MENGAKSES KREDIT ANDA.Tindakan ini akan membawa Anda ke halaman untuk menyiapkan profil penagihan

- Klik Konfirmasi.
Anda kini terhubung ke Akun Penagihan Uji Coba Google Cloud Platform.

Menyiapkan akun penagihan pribadi
Jika menyiapkan penagihan menggunakan kredit Google Cloud, Anda dapat melewati langkah ini.
Untuk menyiapkan akun penagihan pribadi, buka di sini untuk mengaktifkan penagihan di Cloud Console.
Beberapa Catatan:
- Menyelesaikan lab ini akan dikenai biaya kurang dari $1 USD untuk resource Cloud.
- Anda dapat mengikuti langkah-langkah di akhir lab ini untuk menghapus resource agar tidak dikenai biaya lebih lanjut.
- Pengguna baru memenuhi syarat untuk mengikuti Uji Coba Gratis senilai$300 USD.
Buat project (opsional)
Jika Anda tidak memiliki project saat ini yang ingin digunakan untuk lab ini, buat project baru di sini.
4. Buka Cloud Shell Editor
- Klik link ini untuk langsung membuka Cloud Shell Editor
- Jika diminta untuk memberikan otorisasi kapan saja hari ini, klik Authorize untuk melanjutkan.

- Jika terminal tidak muncul di bagian bawah layar, buka terminal:
- Klik Lihat
- Klik Terminal

- Di terminal, tetapkan project Anda dengan perintah ini:
gcloud config set project [PROJECT_ID]- Contoh:
gcloud config set project lab-project-id-example - Jika tidak ingat project ID, Anda dapat mencantumkan semua project ID dengan:
gcloud projects list
- Contoh:
- Anda akan melihat pesan ini:
Updated property [core/project].
5. Mengaktifkan API
Untuk menggunakan Vertex AI API dan berinteraksi dengan model Gemini, Anda harus mengaktifkan Vertex AI API di project Google Cloud Anda.
- Di terminal, aktifkan API:
gcloud services enable aiplatform.googleapis.com
Berikut adalah bagian yang diperbarui, yang menggantikan pembuatan file manual dengan petunjuk untuk meng-clone repositori GitHub dan menginstal dependensi.
Pengantar Vertex AI SDK untuk Python
Untuk berinteraksi dengan model yang dihosting di Vertex AI dari aplikasi Python, Anda akan menggunakan Vertex AI SDK untuk Python. SDK ini menyederhanakan proses pengiriman perintah, penentuan parameter model, dan penerimaan respons tanpa perlu menangani kompleksitas panggilan API yang mendasarinya secara langsung.
Anda dapat menemukan dokumentasi lengkap untuk Vertex AI SDK untuk Python di sini: Pengantar Vertex AI SDK untuk Python | Google Cloud.
6. Menyiapkan lingkungan project
Meng-clone repo
- Di terminal, buat clone repositori yang berisi file awal.
Flaggit clone --depth 1 https://github.com/GoogleCloudPlatform/devrel-demos.git--depth 1hanya meng-clone versi terbaru, yang lebih cepat. - Di terminal, buka direktori kerja yang benar untuk lab ini.
cd devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems
Mengaktifkan lingkungan virtual
- Di terminal, buat dan aktifkan lingkungan virtual menggunakan
uv:uv venv source .venv/bin/activate - Di terminal, instal
google-adkdan dependensi lainnya dari filerequirements.txt:uv pip install -r requirements.txt
Meninjau struktur file Anda
Setelah semua file Anda dibuat, buka folder adk_multiagent_systems di explorer untuk melihat struktur lengkapnya.
- Di menu Cloud Shell Editor, pilih File > Open Folder....

- Di kotak yang muncul, tambahkan informasi folder berikut setelah nama pengguna Anda:
devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems/. Klik Oke.
Tampilannya akan seperti ini:
- Panel explorer di sebelah kiri akan dimuat ulang. Sekarang Anda akan melihat struktur project lengkap, dengan sub-direktori
parent_and_subagentsdanworkflow_agents, yang siap untuk langkah berikutnya.
Menyiapkan variabel lingkungan
- Anda sudah ada di direktori
adk_multiagent_systems. Di terminal, buat file.envuntuk menyimpan variabel lingkungan Anda:cloudshell edit .env - Tempelkan kode berikut ke dalam file
.envyang terbuka di editor:GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT="[YOUR-PROJECT-ID]" GOOGLE_CLOUD_LOCATION=global MODEL="gemini-2.5-flash" - Ganti
[YOUR-PROJECT-ID]dengan ID Project Google Cloud Anda yang sebenarnya. (misalnya,PROJECT_ID = "google-cloud-labs")
Jika Anda tidak dapat mengingat project ID, jalankan perintah berikut di terminal. Daftar semua project dan ID-nya akan ditampilkan.gcloud projects list - Di terminal, salin file
.envini ke direktori sub-agen agar mereka juga dapat mengakses variabel: Struktur file sekarang akan terlihat seperti ini:cp .env parent_and_subagents/.env cp .env workflow_agents/.env
7. Menjelajahi transfer antara agen induk, sub-agen, dan agen rekanan
Percakapan selalu dimulai dengan root_agent. Secara default, agen induk menggunakan description sub-agennya untuk memutuskan kapan harus mentransfer percakapan. Anda juga dapat memandu transfer ini secara eksplisit di instruction induk menggunakan name sub-agen.
Mari kita uji.
- Di Cloud Shell Editor, buka
adk_multiagent_systems/parent_and_subagents/agent.py. Perhatikan tiga agen dalam fileagent.py:root_agent(bernamasteering): Menanyakan pertanyaan kepada pengguna untuk memutuskan sub-agen mana yang akan ditransfer. Awalnya, agen ini hanya mengandalkandescriptionsub-agennya.travel_brainstormer: Membantu pengguna mencari ide tujuan.attractions_planner: Membantu pengguna membuat daftar hal yang dapat dilakukan di negara tertentu.
- Jadikan
travel_brainstormerdanattractions_plannersebagai sub-agenroot_agentdengan menambahkan baris berikut ke pembuatanroot_agent:sub_agents=[travel_brainstormer, attractions_planner] - Di terminal, mulai percakapan dengan agen Anda:
cd ~/devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems adk run parent_and_subagents - Pada perintah
[user]:di terminal, ketik: Contoh output (Output Anda mungkin sedikit berbeda):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?
- Sekarang, beri tahu agen di terminal:
Contoh output (Output Anda mungkin sedikit berbeda):I could use some help deciding. Perhatikan tag[travel_brainstormer]: Okay! To give you the best recommendations, I need to understand what you're looking for in a trip. ...
[travel_brainstormer].root_agentyang mentransfer kontrol berdasarkan hanya padadescriptionsub-agen. - Di prompt
user:di terminal, ketikexit, lalu tekan ENTER untuk mengakhiri percakapan. - Sekarang, mari kita buat lebih jelas. Di
agent.py, tambahkan kode berikut keinstructionroot_agent: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'. - Di terminal, jalankan agen lagi:
adk run parent_and_subagents - Pada perintah
[user]:di terminal, ketik:hello - Jawab dengan:
Contoh output (Output Anda mungkin sedikit berbeda):I would like to go to Japan. Perhatikan transfer ke[attractions_planner]: Okay, I can help you with that! Here are some popular attractions in Japan: ...
attractions_planner, seperti yang dipandu oleh petunjuk baru Anda. - Sekarang balas dengan:
Contoh output (Output Anda mungkin sedikit berbeda):Actually I don't know what country to visit. Perhatikan bahwa Anda telah dipindahkan ke[travel_brainstormer]: Okay! I can help you brainstorm some countries for travel...
travel_brainstormer, rekanattractions_planner. Opsi ini diizinkan secara default. - Pada perintah pengguna, ketik
exituntuk mengakhiri sesi.
Rekap
Di bagian ini, Anda telah mempelajari dasar-dasar hierarki agen dan alur percakapan:
- Percakapan selalu dimulai dengan
root_agent. - Agen induk dapat otomatis dialihkan ke sub-agen berdasarkan
description-nya. - Anda dapat mengontrol alur ini secara eksplisit dengan memberikan
instructioninduk untuk ditransfer ke sub-agen berdasarkanname-nya. - Secara default, agen dapat mentransfer ke agen
peermereka (saudara dalam hierarki).
8. Menggunakan status sesi untuk menyimpan dan mengambil informasi
Setiap percakapan ADK memiliki Session, yang mencakup kamus status sesi. Status ini dapat diakses oleh semua agen, sehingga menjadi cara yang tepat untuk meneruskan informasi di antara agen atau mempertahankan data (seperti daftar) selama percakapan.
Untuk mempelajari cara menambahkan dan membaca dari status:
- Kembali ke file
adk_multiagent_systems/parent_and_subagents/agent.py - Tempel definisi fungsi berikut setelah header
# Tools: Dalam kode ini, perhatikan: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"}- Fungsi ini menerima
tool_context: ToolContext. Objek ini adalah gateway Anda ke sesi. - Baris
tool_context.state["attractions"] = ...membaca dan menulis langsung ke kamus status sesi. ADK akan menangani sisanya.
- Fungsi ini menerima
- Tambahkan alat ke agen
attractions_plannerdengan menambahkan parametertools:tools=[save_attractions_to_state] - Tambahkan poin-poin berikut ke
instructionyang ada pada agenattractions_planner:- 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. - Luncurkan UI Web Agent Development Kit dengan perintah berikut di terminal:
Outputadk 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) - Di terminal Cloud Shell, klik Untuk melihat antarmuka web di tab baru, klik tombol Web Preview, lalu pilih Change Port.

- Masukkan nomor port 8000, lalu klik Change and Preview. Tab browser baru akan terbuka dengan ADK Dev UI.

- Dari dropdown Select an agent di sebelah kiri, pilih
parent_and_subagents. - Mulai percakapan dengan:
hello - Setelah agen menyapa Anda, balas dengan:
Anda akan dialihkan keI'd like to go to Egypt.attractions_plannerdan diberi daftar tempat wisata. - Pilih tempat wisata, misalnya:
I'll go to the Sphinx - Anda akan mendapatkan respons seperti: Oke, saya telah menyimpan The Sphinx ke daftar Anda...
- Klik kotak alat respons (ditandai dengan tanda centang) untuk melihat acara yang dibuat dari respons alat.
Perhatikan bahwa ini mencakup kolom actions yang mencakupstateDeltayang menjelaskan perubahan pada status. - Balas dengan objek wisata lain dari daftar agen.
- Di menu navigasi sebelah kiri, klik "X" untuk keluar dari fokus pada peristiwa yang Anda periksa sebelumnya.
- Di sidebar sebelah kiri, klik tab Negara Bagian. Anda kini dapat melihat array
attractionsdalam status sesi, yang akan berisi kedua item yang Anda pilih.
- Kirim pesan ini ke agen:
Sekarang, agen akan membaca dari status dan menampilkan daftar Anda.What is on my list? - Setelah selesai bereksperimen dengan agen, tutup tab browser web dan tekan CTRL + C di Terminal Cloud Shell untuk menghentikan server.
Ringkasan Bagian
Di bagian ini, Anda telah mempelajari cara menggunakan status Session untuk membagikan data:
- Untuk menulis status: Anda menulis ke kamus status dari dalam alat, menggunakan objek
tool_context.state(misalnya,tool_context.state["my_list"] = [...]). - Untuk membaca status: Anda menyuntikkan data status langsung ke
instructionagen menggunakan pembuatan template kunci (misalnya,Here is your list: {my_list?}). - Untuk memeriksa status: Anda dapat memantau status sesi secara langsung di UI Dev ADK menggunakan tab Status.
9. Agen Alur Kerja
Sejauh ini, Anda telah melihat cara agen induk mentransfer ke sub-agen, lalu menunggu pengguna. Agen alur kerja berbeda: mereka mengeksekusi sub-agennya satu per satu dalam alur otomatis, tanpa menunggu input pengguna.
Fitur ini sangat cocok untuk tugas multi-langkah otomatis seperti pipeline "Rencanakan dan Lakukan" atau "Buat Draf dan Revisi". ADK menyediakan tiga agen alur kerja bawaan untuk mengelola hal ini:
SequentialAgentLoopAgentParallelAgent
Bagian selanjutnya dari lab ini akan berfokus pada pembuatan sistem multi-agen menggunakan tiga agen alur kerja ini.
Anda akan membuat agen yang mengembangkan dokumen saran untuk film baru tentang tokoh sejarah. Agen Anda akan menangani riset, penulisan berulang, dan pembuatan laporan.
Pada akhirnya, sistem Anda akan terlihat seperti ini:

Anda akan membangun sistem ini selangkah demi selangkah, dimulai dengan alur kerja yang paling sederhana.
10. Membangun sistem multi-agen dengan SequentialAgent
SequentialAgent adalah agen alur kerja yang mengeksekusi sub-agennya dalam urutan linear yang sederhana. Setiap agen dalam daftar sub_agents-nya dijalankan satu per satu, secara berurutan. Hal ini sangat cocok untuk pipeline yang tugasnya harus dilakukan dalam urutan tertentu, seperti agen saran film yang akan Anda buat sekarang.
Versi pertama ini akan disusun seperti ini:

root_agent(greeter) akan menyambut pengguna dan mendapatkan subjek film.- Kemudian, domain akan ditransfer ke
SequentialAgentbernamafilm_concept_team, yang akan:- Jalankan agen
researcheruntuk mendapatkan fakta dari Wikipedia. - Jalankan agen
screenwriteruntuk menggunakan fakta tersebut dalam menulis plot. - Jalankan agen
file_writeruntuk menyimpan plot akhir ke file.
- Jalankan agen
Mari kita jalankan.
- Di Cloud Shell Editor, buka
adk_multiagent_systems/workflow_agents/agent.py.
Baca file definisi agen ini. Karena sub-agen harus ditentukan sebelum dapat ditetapkan ke induk, untuk membaca file sesuai urutan alur percakapan, Anda dapat membaca agen dari bagian bawah file ke bagian atas. - Perhatikan alat
append_to_state. Fungsi helper ini memungkinkan agen menambahkan data ke daftar dalam status sesi, yang merupakan cararesearcherdanscreenwritermeneruskan tugasnya. - Coba agen. Di terminal, luncurkan antarmuka web dengan pengaktifan pemuatan ulang langsung:
cd ~/devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems adk web --reload_agents - Di terminal Cloud Shell, klik Untuk melihat antarmuka web di tab baru, klik tombol Web Preview, lalu pilih Change Port.

- Masukkan nomor port 8000, lalu klik Change and Preview. Tab browser baru akan terbuka dengan ADK Dev UI.

- Dari dropdown Pilih agen, pilih
workflow_agents. - Mulai percakapan dengan:
hello. Agengreeterakan merespons. - Saat diminta, masukkan tokoh sejarah. Anda dapat menggunakan salah satu opsi ini atau opsi Anda sendiri:
- Zhang Zhongjing
- Ada Lovelace
- Marcus Aurelius
SequentialAgentsekarang akan mengambil alih. Anda tidak akan melihat pesan perantara apa pun.researcher,screenwriter, danfile_writerakan berjalan satu demi satu. Agen hanya akan merespons setelah seluruh urutan selesai.
Jika gagal, Anda dapat mengklik + Sesi Baru di kanan atas dan mencoba lagi.- Setelah agen mengonfirmasi bahwa file telah ditulis, temukan dan buka file
.txtbaru di direktorimovie_pitchesdi Cloud Shell Editor Anda untuk melihat output. - Di UI Dev ADK, klik ikon agen terakhir dalam histori chat untuk membuka tampilan peristiwa.
- Tampilan peristiwa menampilkan grafik visual hierarki agen. Anda dapat melihat cara
greetermemanggilfilm_concept_team, yang kemudian memanggil setiap sub-agennya secara berurutan.
- Anda dapat mengklik tab Permintaan dan Respons untuk setiap agen dalam grafik guna memeriksa data persis yang diteruskan, termasuk status sesi.
Ringkasan Bagian
Di bagian ini, Anda telah mempelajari cara menggunakan agen alur kerja:
SequentialAgentmenjalankan sub-agennya satu per satu, secara berurutan, tanpa menunggu input pengguna di antara langkah-langkahnya.- Ini adalah "alur kerja" karena pengguna berbicara dengan
root_agent, yang kemudian menyerahkan pekerjaan keSequentialAgentuntuk diselesaikan. - Sub-agen dalam urutan menggunakan status sesi (misalnya,
{ PLOT_OUTLINE? }) untuk mengakses pekerjaan agen sebelumnya. - Anda dapat menggunakan grafik peristiwa di Dev UI untuk memvisualisasikan dan men-debug seluruh alur kerja antar-agen.
11. Menambahkan LoopAgent untuk pekerjaan berulang
LoopAgent adalah agen alur kerja yang menjalankan sub-agennya secara berurutan, lalu mengulanginya, dimulai dari awal. "Loop" ini berlanjut hingga kondisi terpenuhi, seperti mencapai jumlah max_iterations atau sub-agen memanggil alat exit_loop bawaan.
Fitur ini berguna untuk tugas yang memerlukan penyempurnaan berulang. Anda akan menambahkan LoopAgent ini untuk membuat "ruang penulis" bagi agen presentasi film Anda. Hal ini memungkinkan agen researcher, screenwriter, dan critic baru bekerja dalam loop, meningkatkan kualitas plot dengan setiap iterasi hingga critic memutuskan bahwa plot sudah siap. Hal ini juga membantu agen menangani input pengguna yang lebih tidak jelas (seperti "dokter zaman dahulu") dengan membiarkannya meneliti dan menyempurnakan ide.

Untuk melakukan perubahan ini:
- Di
adk_multiagent_systems/workflow_agents/agent.py, tambahkan impor untukexit_loop(di dekat imporgoogle.adklainnya):from google.adk.tools import exit_loop - Tambahkan agen
criticbaru. Agen ini akan meninjau plot. Jika bagus, fungsi ini akan memanggilexit_loop. Jika tidak, fungsi ini akan menambahkan masukan ke status untuk loop berikutnya.
Tempel definisi agen berikut di bagian# Agents: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] ) - Buat
LoopAgentwriters_room. Bagian ini akan berisi tiga agen yang akan bekerja dalam loop.
Tempelkan kode berikut di atas definisi agenfilm_concept_team: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, ) - Perbarui
SequentialAgentfilm_concept_teamuntuk menggunakan loopwriters_roomyang baru. Gantiresearcherdanscreenwriterdengan agenwriters_roomtunggal.Ganti definisifilm_concept_teamyang ada dengan yang berikut ini: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 ], ) - Kembali ke tab ADK Dev UI dan klik + New Session di kanan atas.
- Mulai percakapan baru dengan:
hello - Jika diminta, berikan topik yang lebih luas kepada agen kali ini. Beberapa ide:
- seorang desainer industri yang membuat produk untuk masyarakat luas
- kartografer (pembuat peta)
- orang yang membuat hasil panen menghasilkan lebih banyak makanan
- Setelah loop selesai, agen akan menulis file. Tinjau file yang dihasilkan di direktori
adk_multiagent_systems/movie_pitches. - Periksa grafik peristiwa di Dev UI untuk melihat struktur loop.
Ringkasan Bagian
Di bagian ini, Anda telah mempelajari cara menggunakan LoopAgent:
LoopAgentadalah agen alur kerja yang mengulangi urutan sub-agennya, sehingga membuat "loop dalam" untuk tugas iteratif.- Agen di dalam loop menggunakan status sesi untuk meneruskan tugas (misalnya,
PLOT_OUTLINE) dan masukan (misalnya,CRITICAL_FEEDBACK) satu sama lain pada lintasan berikutnya. - Loop dapat dihentikan dengan mencapai batas
max_iterationsatau oleh agen yang memanggil alatexit_loop.
12. Menggunakan ParallelAgent untuk "fan out and gather"
ParallelAgent adalah agen alur kerja yang mengeksekusi semua sub-agennya secara bersamaan (serentak). Hal ini berguna untuk tugas yang dapat dibagi menjadi sub-tugas independen, seperti menjalankan dua tugas riset yang berbeda.
Anda akan menggunakan ParallelAgent untuk membuat "tim praproduksi" yang bekerja secara paralel. Satu agen akan meneliti potensi penjualan tiket bioskop, sementara agen lain secara bersamaan mendiskusikan ide pemilihan pemeran. Pola ini sering disebut pola "fan out and gather": ParallelAgent "membagikan" tugas, dan agen berikutnya (file_writer) "mengumpulkan" hasilnya.

Alur agen akhir Anda adalah:
greeter(root) memulai percakapan.- Proses ini akan ditransfer ke
film_concept_team(SequentialAgent), yang berjalan:writers_room(LoopAgent) untuk membuat plot.preproduction_team(ParallelAgent) baru untuk meneliti box office dan pemilihan pemeran secara bersamaan.file_writeruntuk mengumpulkan semua hasil dan menyimpan file.
Untuk melakukan perubahan ini:
- Di
adk_multiagent_systems/workflow_agents/agent.py, tempelkanParallelAgentbaru dan sub-agennya di bawah header# Agents.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 ] ) - Perbarui daftar
sub_agentsSequentialAgent'sfilm_concept_teamuntuk menyertakanpreproduction_teambaru (antarawriters_roomdanfile_writer).Ganti definisifilm_concept_teamyang ada dengan yang berikut: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 ], ) - Perbarui
instructionagenfile_writersehingga "mengumpulkan" laporan baru dari status dan menambahkannya ke file.
Ganti stringinstructionuntukfile_writerdengan ini: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? } """, - Kembali ke tab UI Dev ADK, lalu klik + Sesi Baru.
- Masukkan
hellountuk memulai percakapan. - Jika diminta, masukkan ide karakter baru. Beberapa ide:
- aktris yang menemukan teknologi untuk wifi
- koki yang menarik
- pemain kunci dalam pameran pekan raya dunia
- Setelah agen menyelesaikan tugasnya, periksa file akhir di direktori
adk_multiagent_systems/movie_pitches. Sekarang dokumen tersebut akan berisi plot, laporan box office, dan laporan casting dalam satu dokumen.
Ringkasan Bagian
Di bagian ini, Anda telah mempelajari cara menggunakan ParallelAgent:
- Pekerjaan
ParallelAgent"memperluas", menjalankan semua sub-agennya secara bersamaan, bukan secara berurutan. - Cara ini sangat efisien untuk tugas yang tidak saling bergantung (seperti meneliti dua topik yang berbeda).
- Hasil agen paralel "dikumpulkan" oleh agen berikutnya. Hal ini dilakukan dengan membuat agen paralel menyimpan pekerjaannya ke status sesi (menggunakan
output_key), dan membuat agen akhir (sepertifile_writer) membaca kunci tersebut.
13. Agen alur kerja kustom
Jika agen alur kerja yang telah ditentukan sebelumnya, yaitu SequentialAgent, LoopAgent, dan ParallelAgent, tidak cukup untuk memenuhi kebutuhan Anda, CustomAgent memberikan fleksibilitas untuk menerapkan logika alur kerja baru.
Anda dapat menentukan pola untuk kontrol alur, eksekusi bersyarat, atau pengelolaan status antar-sub-agen. Hal ini berguna untuk alur kerja yang kompleks, orkestrasi stateful, atau mengintegrasikan logika bisnis kustom ke dalam lapisan orkestrasi framework.
Pembuatan CustomAgent berada di luar cakupan lab ini, tetapi sebaiknya Anda mengetahui bahwa CustomAgent ada jika Anda membutuhkannya.
14. Selamat!
Anda telah berhasil membangun sistem multi-agen yang canggih menggunakan Google Agent Development Kit (ADK). Anda telah berkembang dari hubungan agen induk-turunan sederhana hingga mengatur alur kerja otomatis yang kompleks yang dapat meneliti, menulis, dan menyempurnakan project kreatif.
Rekap
Di lab ini, Anda telah melakukan hal berikut:
- Agen yang diatur dalam pohon hierarkis dengan hubungan induk dan sub-agen.
- Transfer antar-agen yang dikontrol, baik secara otomatis (menggunakan
description) maupun secara eksplisit (menggunakaninstruction). - Menggunakan alat untuk menulis data ke kamus
tool_context.state. - Menggunakan pembuatan template kunci (misalnya,
{ PLOT_OUTLINE? }) untuk membaca dari status sesi dan memandu perintah agen. - Menerapkan
SequentialAgentuntuk membuat alur kerja langkah demi langkah yang sederhana (riset -> tulis -> simpan). - Menggunakan
LoopAgentdengan agencriticdan alatexit_loopuntuk membuat siklus penyempurnaan iteratif. - Menggunakan
ParallelAgentuntuk "memperluas" tugas independen (seperti casting dan riset box office) agar berjalan secara bersamaan.
Melanjutkan eksperimen
Ada banyak cara untuk mengembangkan apa yang telah Anda pelajari. Berikut adalah beberapa ide:
- Menambahkan agen lainnya: Coba tambahkan agen baru ke
preproduction_teamParallelAgentAnda. Misalnya, Anda dapat membuatmarketing_agentyang menulis tagline untuk film berdasarkanPLOT_OUTLINE. - Menambahkan alat lainnya: Beri agen
researcherAnda lebih banyak alat. Anda dapat membuat alat yang menggunakan Google Search API untuk menemukan informasi yang tidak ada di Wikipedia. - Jelajahi
CustomAgent: Lab ini menyebutkanCustomAgentuntuk alur kerja yang tidak sesuai dengan template standar. Coba buat satu yang, misalnya, menjalankan agen secara bersyarat hanya jika ada kunci tertentu dalam status sesi.