Explore transfers between parent, sub-agent, and peer agents

Periksa progres saya

/ 25

Use session state to store and retrieve specific information

Periksa progres saya

/ 25

Begin building a multi-agent system with a SequentialAgent

Periksa progres saya

/ 25

Add a LoopAgent for iterative work

Periksa progres saya

/ 25

Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.
Konten ini belum dioptimalkan untuk perangkat seluler.
Untuk pengalaman terbaik, kunjungi kami dengan komputer desktop menggunakan link yang dikirim melalui email.

GENAI106

Ringkasan

Lab ini membahas orkestrasi sistem multi-agen (MAS) dalam Google Agent Development Kit (Google ADK).

Lab ini mengasumsikan bahwa Anda sudah memahami dasar-dasar ADK dan penggunaan alat seperti yang dibahas dalam lab:

  • Mulai menggunakan Google Agent Development Kit (ADK)
  • Melengkapi agen ADK dengan berbagai alat

Tujuan

Di lab ini, Anda akan:

  • Membuat beberapa agen dan menghubungkannya satu sama lain melalui hubungan induk ke sub-agen.
  • Membuat konten di percakapan multi-turn dan beberapa agen dengan menuliskan data ke kamus status sesi.
  • Memberikan petunjuk ke agen untuk membaca nilai dari status sesi untuk digunakan sebagai konteks respons mereka.
  • Menggunakan agen alur kerja untuk meneruskan percakapan antaragen secara langsung.

Penyiapan dan persyaratan

Sebelum mengklik tombol Start Lab

Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.

Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.

Untuk menyelesaikan lab ini, Anda memerlukan:

  • Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
  • Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.

Cara memulai lab dan login ke Konsol Google Cloud

  1. Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran. Di sebelah kiri ada panel Lab Details yang berisi hal-hal berikut:

    • Tombol Open Google Cloud console
    • Waktu tersisa
    • Kredensial sementara yang harus Anda gunakan untuk lab ini
    • Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
  2. Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).

    Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.

    Tips: Atur tab di jendela terpisah secara berdampingan.

    Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
  3. Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.

    {{{user_0.username | "Username"}}}

    Anda juga dapat menemukan Username di panel Lab Details.

  4. Klik Next.

  5. Salin Password di bawah dan tempel ke dialog Welcome.

    {{{user_0.password | "Password"}}}

    Anda juga dapat menemukan Password di panel Lab Details.

  6. Klik Next.

    Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda. Catatan: Penggunaan akun Google Cloud sendiri untuk lab ini mungkin dikenai biaya tambahan.
  7. Klik untuk melanjutkan ke halaman berikutnya:

    • Setujui persyaratan dan ketentuan.
    • Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
    • Jangan daftar uji coba gratis.

Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.

Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search. Ikon Navigation menu dan kolom Search

Sistem Multi-Agen (MAS)

Dengan Agent Development Kit, developer dapat memperoleh perilaku model generatif yang lebih andal, canggih, dan bersifat multilangkah. Alih-alih menulis perintah yang panjang dan rumit yang belum tentu memberikan hasil yang andal, Anda dapat membuat alur yang terdiri atas beberapa agen sederhana yang dapat berkolaborasi untuk memecahkan masalah yang kompleks dengan membagi tugas dan tanggung jawab.

Pendekatan arsitektur ini menawarkan beberapa keunggulan utama seperti:

  • Lebih mudah dirancang: Anda dapat berpikir dalam kerangka agen dengan tugas dan keterampilan yang spesifik.
  • Fungsi khusus dengan performa yang lebih andal: Agen khusus dapat belajar dari contoh-contoh yang jelas sehingga menjadi lebih andal dalam menjalankan tugas tertentu.
  • Organisasi yang lebih baik: Membagi alur kerja menjadi agen-agen terpisah memungkinkan pendekatan yang lebih terstruktur sehingga lebih mudah dipahami.
  • Peningkatan kualitas dan pemeliharaan yang mudah: Lebih mudah untuk meningkatkan kualitas atau memperbaiki komponen khusus daripada melakukan perubahan pada agen kompleks yang dapat memperbaiki satu perilaku, tetapi berpotensi memengaruhi perilaku lainnya.
  • Modularitas: Agen-agen terpisah dari satu alur kerja dapat dengan mudah disalin dan disertakan dalam alur kerja serupa lainnya.

Pohon Hierarki Agen

Struktur pohon yang menampilkan hierarki antaragen

Di Agent Development Kit, Anda mengatur agen dalam struktur seperti pohon. Hal ini membantu membatasi opsi transfer untuk tiap agen dalam struktur pohon, sehingga lebih mudah untuk mengontrol dan memprediksi kemungkinan rute yang dapat dilalui percakapan dalam struktur tersebut. Manfaat struktur hierarkis ini mencakup:

  • Struktur ini terinspirasi dari tim kolaboratif di dunia nyata sehingga mempermudah desain dan penalaran terkait perilaku sistem multi-agen (MAS).
  • Struktur ini intuitif bagi developer karena mencerminkan pola umum dalam pengembangan software.
  • Struktur ini memberikan kontrol yang lebih besar atas alur informasi dan pendelegasian tugas dalam sistem, sehingga mempermudah pemahaman kemungkinan jalur dan proses debug sistem. Misalnya, jika suatu sistem memiliki dua agen pembuatan laporan di bagian berbeda dalam alurnya dengan deskripsi yang serupa, dengan struktur pohon kita dapat lebih memastikan bahwa agen yang dipanggil adalah agen yang benar.

Struktur akan selalu dimulai dengan agen yang ditentukan dalam variabel root_agent (meskipun mungkin menggunakan nama yang berbeda saat ditampilkan kepada pengguna untuk mengidentifikasi dirinya). root_agent dapat bertindak sebagai induk untuk satu atau beberapa sub-agen. Tiap agen sub-agen dapat memiliki sub-agennya sendiri.

Tugas 1. Menginstal ADK dan menyiapkan lingkungan Anda

Di lingkungan lab ini, Agent Platform API telah diaktifkan untuk Anda. Jika Anda mengikuti langkah-langkah ini di project sendiri, Anda dapat mengaktifkannya dengan membuka Agent Platform dan mengikuti dialog untuk mengaktifkannya.

Menyiapkan tab Cloud Shell Editor

  1. Di jendela Konsol Google Cloud yang aktif, buka Cloud Shell dengan menekan tombol G, lalu tombol S di keyboard Anda. Atau, Anda dapat mengklik tombol Activate Cloud Shell (Mengaktifkan Cloud Shell) di kanan atas Konsol Cloud.
  2. Klik Continue.
  3. Jika diminta untuk memberikan otorisasi pada Cloud Shell, klik Authorize.
  4. Di pojok kanan atas panel Cloud Shell Terminal, klik tombol Open in new window Tombol Open in new window.
  5. Klik ikon pensil Open Editor (Ikon Edit berbentuk pensil) di bagian atas panel untuk melihat file.
  6. Di bagian atas menu navigasi sebelah kiri, klik ikon Explorer (Ikon Explorer) untuk membuka file explorer Anda.
  7. Klik tombol Open Folder.
  8. Di dialog Open Folder yang terbuka, klik OK untuk memilih folder beranda akun siswa Qwiklab Anda.
  9. Tutup panel Gemini atau tutorial tambahan yang muncul di sisi kanan layar agar ruang jendela bagi editor kode Anda lebih besar.
  10. Di sepanjang lab, Anda dapat memanfaatkan jendela ini sebagai IDE dengan Cloud Shell Editor dan Cloud Shell Terminal.

Mendownload dan menginstal ADK serta contoh kode untuk lab ini

  1. Tempel perintah berikut ke Cloud Shell Terminal untuk menyalin file kode dari bucket Cloud Storage untuk lab ini:

    gcloud storage cp -r gs://{{{project_0.project_id| YOUR_GCP_PROJECT_ID}}}-bucket/* .
  2. Perbarui variabel lingkungan PATH, instal ADK, dan instal persyaratan lab tambahan dengan menjalankan perintah berikut di Cloud Shell Terminal.

    export PATH=$PATH:"/home/${USER}/.local/bin" python3 -m pip install google-adk[otel-gcp]==1.30.0 -r adk_multiagent_systems/requirements.txt

Tugas 2. Menjelajahi transfer antara agen induk, sub-agen, dan agen peer

Percakapan selalu dimulai dengan agen yang ditentukan sebagai variabel root_agent.

Perilaku default agen induk adalah memahami deskripsi tiap sub-agen dan menentukan apakah kontrol percakapan harus ditransfer atau tidak ke sub-agen kapan saja.

Anda dapat membantu memandu transfer tersebut dalam instruction induk dengan merujuk ke sub-agen berdasarkan nama (nilai parameter name, bukan nama variabel). Coba contoh berikut:

  1. Di Cloud Shell Terminal, jalankan perintah berikut untuk membuat file .env guna mengautentikasi agen di direktori parent_and_subagents.

    cd ~/adk_multiagent_systems cat << EOF > parent_and_subagents/.env GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT={{{project_0.project_id| YOUR_GCP_PROJECT_ID}}} GOOGLE_CLOUD_LOCATION=global MODEL={{{project_0.startup_script.gemini_flash_model_id | gemini_flash_model_id}}} EOF

    Variabel ini memiliki peran berikut:

    • GOOGLE_GENAI_USE_VERTEXAI=TRUE menunjukkan bahwa Anda menggunakan Agent Platform untuk autentikasi, bukan autentikasi kunci Gemini API.
    • GOOGLE_CLOUD_PROJECT dan GOOGLE_CLOUD_LOCATION memberikan project dan lokasi yang akan dikaitkan dengan panggilan model Anda.
    • MODEL disimpan di sini agar dapat dimuat sebagai variabel lingkungan lain.
  2. Jalankan perintah berikut untuk menyalin file .env tersebut ke direktori workflow_agents, yang akan Anda gunakan nanti di lab:

    cp parent_and_subagents/.env workflow_agents/.env
  3. Di panel file explorer Cloud Shell Editor, buka direktori adk_multiagent_systems/parent_and_subagents.

  4. Klik file agent.py untuk membukanya.

Tips: Karena kode Python mengharuskan kita menentukan sub-agen sebelum dapat menambahkannya ke agen, untuk membaca file agent.py sesuai urutan alur percakapan, sebaiknya mulai dari agen yang berada di bagian bawah, lalu baca ke atas.
  1. Perhatikan bahwa ada tiga agen di sini:

    • root_agent bernama steering (namanya digunakan untuk mengidentifikasinya di UI pengembangan dan antarmuka command line ADK). Agen ini akan mengajukan pertanyaan kepada pengguna (apakah ia sudah tahu tujuan perjalanannya atau apakah ia memerlukan bantuan untuk menentukannya), dan respons pengguna atas pertanyaan tersebut akan membantu agen panduan ini mengetahui ke mana arah percakapan dari dua sub-agennya. Perhatikan bahwa hanya ada instruction atau petunjuk sederhana yang tidak menyebutkan sub-agen, tetapi agen ini mengetahui deskripsi sub-agennya.
    • travel_brainstormer yang membantu pengguna berdiskusi terkait tujuan perjalanan jika ia tidak tahu ingin pergi ke mana.
    • attractions_planner yang membantu pengguna membuat daftar rekomendasi aktivitas yang dapat dilakukan setelah mengetahui negara yang ingin dikunjungi.
  2. Jadikan travel_brainstormer dan attractions_planner sebagai sub-agen dari root_agent dengan menambahkan baris berikut ke pembuatan root_agent:

    sub_agents=[travel_brainstormer, attractions_planner]
  3. Simpan file dengan mengklik tombol Save.

  4. Perhatikan bahwa Anda tidak menambahkan parameter parent yang sesuai ke sub-agen. Pohon hierarki hanya ditentukan dengan menetapkan sub_agents saat membuat agen induk.

  5. Di Cloud Shell Terminal, jalankan perintah berikut untuk menggunakan antarmuka command line ADK guna memulai chat dengan agen Anda:

    cd ~/adk_multiagent_systems adk run parent_and_subagents
  6. Saat Anda melihat perintah [user]:, sapa agen dengan:

    hello

    Contoh output (output Anda mungkin sedikit berbeda):

    [user]: hello [steering]: Hello! Welcome to your travel adventure. Do you already know where you'd like to travel, or would you like some help deciding?
  7. Beri tahu agen:

    I could use some help deciding.

    Contoh output (output Anda mungkin sedikit berbeda):

    [user]: I could use some help deciding. [travel_brainstormer]: Hello! I'd love to help you decide on the perfect destination for your next trip. To start, here are a few highly popular countries that travelers love: * **Italy:** Famous for food, history, art, and beautiful landscapes. * **Japan:** A unique blend of ultra-modern cities, ancient temples, stunning nature, and incredible cuisine. * **Costa Rica:** A paradise for nature lovers, wildlife, and outdoor adventures. * **France:** Renowned for world-class art, fashion, gastronomy, and romantic cities. To help narrow things down to the perfect match for you, what are your primary goals for this trip? Are you looking for: 1. **Adventure** (hiking, wildlife, outdoor activities) 2. **Leisure** (relaxing on beaches, spas, slow-paced exploring) 3. **Learning** (history, museums, exploring different cultures) 4. **Shopping** (fashion, local markets, unique finds) 5. **Viewing Art** (galleries, architecture, world-famous masterpieces) Let me know what sounds most exciting to you, or if you have a mix of these in mind!
  8. Perhatikan nama [travel_brainstormer] dalam tanda kurung pada respons bahwa root_agent (bernama [steering]) telah mentransfer percakapan ke sub-agen yang sesuai hanya berdasarkan description sub-agen tersebut.

  9. Pada perintah user:, masukkan exit untuk mengakhiri percakapan.

  10. Anda juga dapat memberikan petunjuk yang lebih mendetail ke agen tentang kapan harus mentransfer ke sub-agen sebagai bagian dari instructions. Dalam file agent.py, tambahkan baris berikut ke instruction root_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'.
  11. Simpan file dengan mengklik tombol Save.

  12. Di Cloud Shell Terminal, jalankan perintah berikut untuk memulai antarmuka command line lagi:

    adk run parent_and_subagents
  13. Sapa agen dengan:

    hello
  14. Balas sapaan agen dengan:

    I would like to go to Japan.

    Contoh output (output Anda mungkin sedikit berbeda):

    [user]: I would like to go to Japan. [attractions_planner]: Japan is an incredible destination with a perfect blend of ancient traditions and futuristic cities! Here are some of the top attractions and regions to consider for your trip, categorized by the type of experience: ### 1. **The Modern & Futuristic (Tokyo)** * **Shibuya Crossing & Harajuku:** Experience the bustling energy of the world's busiest pedestrian crossing and the quirky fashion of Takeshita Street. * **teamLab Planets:** An immersive, digital-art museum where you walk through water and interact with stunning light projections. * **Senso-ji Temple:** Tokyo's oldest and most iconic Buddhist temple, located in the historic Asakusa district. ### 2. **History & Tradition (Kyoto & Nara)** * **Fushimi Inari Shrine (Kyoto):** Famous for its path of thousands of vibrant red torii gates winding up the mountain. * **Kinkaku-ji (The Golden Pavilion, Kyoto):** A breathtaking Zen temple covered in gold leaf, reflecting over a serene pond. * **Nara Park (Nara):** Home to hundreds of freely roaming, bowing deer and the massive Great Buddha statue at Todai-ji Temple. ### 3. **Nature & Scenic Views** * **Mount Fuji & Lake Kawaguchiko:** Enjoy stunning views of Japan's iconic volcano, especially beautiful during cherry blossom or autumn foliage seasons. * **Arashiyama Bamboo Grove (Kyoto):** Walk through a towering forest of green bamboo that feels like another world. ### 4. **Food & Entertainment (Osaka)** * **Dotonbori:** Osaka's neon-lit food street, famous for street foods like *takoyaki* (octopus balls) and *okonomiyaki* (savory pancakes). * **Osaka Castle:** A magnificent historic landmark surrounded by a massive park and moat. --- To help me tailor the perfect itinerary for you, **what kinds of things are you most interested in?** * Historic temples and shrines? * Modern city life and pop culture (anime, gaming, shopping)? * Nature, hiking, and scenic landscapes? * Incredible food and culinary experiences? Let me know, and we can start building your custom list of stops!
  15. Perhatikan bahwa Anda telah dialihkan ke sub-agen lain, attractions_planner.

  16. Balas dengan:

    Actually I don't know what country to visit.

    Contoh output (output Anda mungkin sedikit berbeda):

    user: actually I don't know what country to visit [travel_brainstormer]: Okay! I can help you brainstorm some countries for travel...
  17. Perhatikan bahwa Anda telah dialihkan ke agen travel_brainstormer, yang merupakan agen peer untuk attractions_planner. Opsi ini diizinkan secara default. Jika Anda ingin mencegah pengalihan ke peer, Anda dapat menyetel parameter disallow_transfer_to_peers ke True pada agen attractions_planner.

  18. Pada perintah pengguna, ketik exit untuk mengakhiri sesi.

Pola langkah demi langkah: Jika Anda tertarik dengan agen yang memandu pengguna melalui proses langkah demi langkah, salah satu pola yang berguna adalah menjadikan langkah pertama sebagai root_agent dengan agen langkah kedua sebagai satu-satunya sub-agennya, dan berlanjut dengan tiap langkah tambahan sebagai satu-satunya sub-agen dari agen langkah sebelumnya.

Klik Periksa progres saya untuk memverifikasi tujuan. Menjelajahi transfer antara agen induk, sub-agen, dan agen peer

Tugas 3. Menggunakan status sesi untuk menyimpan dan mengambil informasi tertentu

Tiap percakapan di ADK berada dalam Session (sesi) yang dapat diakses oleh semua agen yang terlibat dalam percakapan. Sesi mencakup histori percakapan, yang dibaca agen sebagai bagian dari konteks yang digunakan untuk membuat respons. Sesi ini juga mencakup kamus status sesi yang memberi Anda kontrol lebih besar atas informasi penting yang ingin disorot serta cara mengaksesnya.

Hal ini dapat sangat membantu untuk meneruskan informasi antaragen atau untuk mempertahankan struktur data sederhana, seperti daftar tugas, selama percakapan berlangsung dengan pengguna.

Untuk mempelajari cara menambahkan dan membaca dari status:

  1. Kembali ke file adk_multiagent_systems/parent_and_subagents/agent.py

  2. Tempel definisi fungsi berikut setelah header # Tools:

    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"}
  3. Dalam kode ini, perhatikan:

    • Sesi akan diteruskan ke fungsi alat Anda sebagai ToolContext. Yang perlu Anda lakukan adalah menetapkan parameter untuk menerimanya, seperti yang Anda lihat di sini dengan parameter bernama tool_context. Kemudian, Anda dapat menggunakan tool_context untuk mengakses informasi sesi seperti histori percakapan (melalui tool_context.events) dan kamus status sesi (melalui tool_context.state). Saat kamus tool_context.state diubah oleh fungsi alat Anda, perubahan tersebut akan tercermin dalam status sesi setelah alat menyelesaikan eksekusinya.
    • Docstring memberikan deskripsi dan bagian yang jelas untuk argumen dan nilai yang ditampilkan.
    • Kode fungsi yang diberi komentar menunjukkan betapa mudahnya melakukan pembaruan pada kamus status.
  4. Tambahkan alat ke agen attractions_planner dengan menambahkan parameter tools saat agen dibuat:

    tools=[save_attractions_to_state]
  5. Tambahkan poin butir berikut ke instruction yang ada di agen attractions_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.
  6. Perhatikan bagian dalam tanda kurung kurawal: { attractions? }. Fitur ADK ini, key templating, memuat nilai kunci attractions dari kamus status. Tanda tanya setelah kunci attractions mencegah terjadinya error jika kolom belum tersedia.

  7. Sekarang Anda akan menjalankan agen dari antarmuka web, yang menyediakan tab untuk melihat perubahan yang dilakukan pada status sesi. Luncurkan UI Web Agent Development Kit dengan perintah berikut:

    adk web --allow_origins "regex:https://.*\.cloudshell\.dev"

    Output

    INFO: 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)
  8. Untuk melihat antarmuka web di tab baru, klik link http://127.0.0.1:8000 di output Terminal.

  9. Tab browser baru akan terbuka dengan UI Dev ADK.

  10. Dari dropdown Select an agent di sebelah kiri, pilih agen parent_and_subagents dari dropdown.

  11. Mulai percakapan dengan: hello

  12. Setelah agen menyapa Anda, balas dengan:

    I'd like to go to Egypt.

    Anda akan dialihkan ke attractions_planner dan diberi daftar tempat wisata.

  13. Pilih tempat wisata, misalnya:

    I'll go to the Sphinx
  14. Anda akan menerima konfirmasi dalam respons, seperti: Oke, saya telah menyimpan Sphinx ke daftar Anda. Berikut beberapa objek wisata lainnya...

  15. Klik kotak alat respons (ditandai dengan tanda centang) untuk melihat peristiwa yang dibuat dari respons alat. Perhatikan bahwa respons ini menyertakan kolom actions yang menyertakan state_delta yang menjelaskan perubahan pada status.

  16. Anda akan diminta oleh agen untuk memilih objek wisata lainnya. Balas agen dengan menyebutkan salah satu opsi yang telah disajikannya.

  17. Di menu navigasi sebelah kiri, klik "X" untuk keluar dari fokus pada peristiwa yang Anda periksa sebelumnya.

  18. Sekarang di sidebar, Anda akan melihat daftar peristiwa dan beberapa opsi tab. Pilih tab State. Di sini, Anda dapat melihat status saat ini, termasuk array attractions dengan dua nilai yang telah Anda minta.

    Pratinjau Status Sesi di UI Web

  19. Kirim pesan ini ke agen:

    What is on my list?
  20. Daftar Anda akan ditampilkan sebagai daftar berbutir sesuai dengan instruction miliknya.

  21. Setelah selesai bereksperimen dengan agen, tutup tab browser web dan tekan CTRL + C di Cloud Shell Terminal untuk menghentikan server.

    Selanjutnya di lab ini, Anda akan mendemonstrasikan cara menggunakan status untuk berkomunikasi antaragen.

Klik Periksa progres saya untuk memverifikasi tujuan. Menggunakan status sesi untuk menyimpan dan mengambil informasi tertentu

Alih-alih menyimpan sebagian kecil informasi, jika Anda ingin menyimpan seluruh respons teks agen di kamus status, Anda dapat menyetel parameter output_key saat menentukan agen, dan seluruh outputnya akan disimpan di kamus status dengan nama kolom tersebut.

Agen Alur Kerja

Transfer dari agen induk ke sub-agen sangat ideal jika Anda memiliki beberapa sub-agen spesialis, dan Anda ingin pengguna berinteraksi dengan tiap sub-agen tersebut.

Namun, jika Anda ingin agen bertindak satu demi satu tanpa menunggu giliran dari pengguna, Anda dapat menggunakan agen alur kerja. Berikut beberapa contoh skenario saat Anda dapat menggunakan agen alur kerja, termasuk saat Anda ingin agen melakukan:

  • Perencanaan dan Eksekusi: Jika Anda ingin satu agen menyiapkan daftar item, lalu agen lain menggunakan daftar tersebut untuk melakukan tugas lanjutan, misalnya menulis bagian dokumen
  • Riset dan Penulisan: Jika Anda ingin satu agen memanggil fungsi untuk mengumpulkan informasi kontekstual dari Google Penelusuran atau sumber data lainnya, lalu agen lain menggunakan informasi tersebut untuk menghasilkan beberapa output.
  • Pembuatan Draf dan Revisi: Jika Anda ingin satu agen menyiapkan draf dokumen, lalu agen lain memeriksa hasilnya dan melakukan iterasi

Untuk menyelesaikan jenis tugas ini, agen alur kerja memiliki sub-agen dan menjamin bahwa tiap sub-agennya menjalankan tugasnya. Agent Development Kit menyediakan tiga agen alur kerja bawaan dan peluang untuk menentukan agen Anda sendiri:

  • SequentialAgent
  • LoopAgent
  • ParallelAgent

Pada bagian selanjutnya di lab ini, Anda akan membangun sistem multi-agen (MAS) yang menggunakan beberapa agen LLM, agen alur kerja, dan alat untuk membantu mengontrol alur agen.

Secara khusus, Anda akan membangun agen yang akan mengembangkan dokumen proposal untuk film hit baru: film biografi berdasarkan kehidupan seorang tokoh sejarah. Sub-agen Anda akan menangani riset serta loop penulisan iteratif dengan penulis skenario dan kritikus. Selanjutnya, beberapa sub-agen tambahan akan membantu mendiskusikan ide terkait pemilihan pemeran dan menggunakan data box office historis untuk membuat beberapa prediksi terkait hasil box office.

Hasilnya, sistem multi-agen (MAS) Anda akan terlihat seperti ini (klik gambar untuk melihatnya dalam ukuran lebih besar):

Diagram sistem multi-agen (MAS) film_concept_team

Namun, Anda akan memulai dengan versi yang lebih sederhana.

Tugas 4. Mulai membangun sistem multi-agen (MAS) dengan SequentialAgent

SequentialAgent menjalankan sub-agennya dalam urutan linear. Tiap sub-agen dalam daftar sub_agents dijalankan satu per satu, sesuai urutan yang ditentukan.

Hal ini ideal untuk alur kerja yang mengharuskan tugas dilakukan dalam urutan tertentu, dan output dari satu tugas berfungsi sebagai input untuk tugas berikutnya.

Dalam tugas ini, Anda akan menjalankan SequentialAgent untuk membangun versi pertama sistem multi-agen (MAS) untuk pengembangan proposal film. Draf pertama agen Anda akan disusun seperti ini:

Langkah 1 sistem multi-agen (MAS) film_concept_team

  • root_agent yang diberi nama greeter untuk menyambut pengguna dan meminta seorang tokoh sejarah sebagai subjek film

  • SequentialAgent yang diberi nama film_concept_team akan mencakup:

    • researcher untuk mempelajari lebih lanjut tokoh sejarah yang diminta dari Wikipedia, menggunakan alat LangChain yang dibahas di lab Melengkapi agen ADK dengan berbagai alat. Agen dapat memilih untuk memanggil alatnya beberapa kali secara berurutan, sehingga periset dapat melakukan beberapa giliran berturut-turut jika ia menentukan bahwa ia perlu melakukan lebih banyak riset.
    • screenwriter untuk mengubah riset menjadi kerangka alur cerita.
    • file_writer untuk memberi judul pada film yang dihasilkan dan menulis hasil urutan ke file.
  1. Di Cloud Shell Editor, buka direktori adk_multiagent_systems/workflow_agents.

  2. Klik file agent.py di direktori workflow_agents.

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

  4. Anda juga memiliki alat fungsi append_to_state. Dengan fungsi ini, agen yang memiliki alat tersebut dapat menambahkan konten ke nilai kamus dalam status. Hal ini sangat berguna bagi agen yang mungkin memanggil alat beberapa kali atau bertindak dalam beberapa iterasi LoopAgent, sehingga tiap kali agen bertindak, outputnya akan disimpan.

  5. Coba versi agen saat ini dengan meluncurkan antarmuka web dari Cloud Shell Terminal. Anda akan menggunakan argumen --reload_agents untuk mengaktifkan pemuatan ulang agen secara langsung berdasarkan perubahan agen:

    cd ~/adk_multiagent_systems adk web --allow_origins "regex:https://.*\.cloudshell\.dev" --reload_agents Catatan: Jika Anda tidak menutup sesi adk web sebelumnya, port default 8000 akan diblokir, tetapi Anda dapat meluncurkan UI Dev dengan port baru menggunakan, misalnya adk web --port 8001.
  6. Untuk melihat antarmuka web di tab baru, klik link http://127.0.0.1:8000 di output Terminal.

  7. Tab browser baru akan terbuka dengan UI Dev ADK.

  8. Dari dropdown Select an agent di sebelah kiri, pilih workflow_agents.

  9. Mulai percakapan dengan: hello. Mungkin perlu waktu beberapa saat agar agen merespons, tetapi agen akan meminta Anda memasukkan seorang tokoh sejarah untuk memulai pembuatan alur cerita film.

  10. Saat diminta untuk memasukkan tokoh sejarah, Anda dapat memasukkan tokoh pilihan Anda atau menggunakan salah satu contoh berikut:

    • Zhang Zhongjing - seorang dokter Tiongkok terkenal dari Abad ke-2 M.
    • Ada Lovelace - seorang matematikawan dan penulis asal Inggris yang dikenal karena karyanya di bidang komputer awal.
    • Marcus Aurelius - seorang kaisar Romawi yang terkenal dengan tulisan filosofisnya.
  11. Agen sekarang akan memanggil agennya satu per satu saat menjalankan alur kerja dan menulis file kerangka alur cerita ke direktori ~/adk_multiagent_systems/movie_pitches. Fungsi ini akan memberi tahu Anda saat file telah ditulis ke disk.

    Jika Anda tidak melihat agen melaporkan bahwa agen tersebut telah membuat file untuk Anda atau ingin mencoba karakter lain, Anda dapat mengklik + New Session di kanan atas dan mencoba lagi.

  12. Lihat output agen di Cloud Shell Editor. (Anda mungkin perlu menggunakan menu Cloud Shell Editor untuk mengaktifkan View > Word Wrap agar dapat melihat teks lengkap tanpa banyak men-scroll secara horizontal.)

  13. Di UI Dev ADK, klik salah satu ikon agen (agent_icon) yang merepresentasikan giliran percakapan untuk menampilkan tampilan peristiwa.

  14. Tampilan peristiwa memberikan representasi visual dari hierarki agen dan alat yang digunakan dalam sesi ini. Anda mungkin perlu men-scroll di panel peristiwa untuk melihat alur cerita lengkapnya.

grafik web adk

  1. Selain tampilan grafik, Anda dapat mengklik tab Request pada peristiwa untuk melihat informasi yang diterima agen ini sebagai bagian dari permintaannya, termasuk histori percakapan.
  2. Anda juga dapat mengklik tab Response pada peristiwa untuk melihat hal yang ditampilkan oleh agen.
Catatan: Meskipun sistem ini dapat memberikan hasil yang menarik, sistem ini tidak dimaksudkan untuk menyiratkan bahwa petunjuk dapat dibuat singkat atau penambahan contoh dapat dilewati. Keandalan sistem akan sangat meningkat dari lapisan tambahan berupa penambahan petunjuk dan contoh yang lebih ketat untuk tiap agen.

Klik Periksa progres saya untuk memverifikasi tujuan. Mulai membangun sistem multi-agen (MAS) dengan SequentialAgent

Tugas 5. Menambahkan LoopAgent untuk pekerjaan iteratif

LoopAgent menjalankan sub-agennya dalam urutan yang ditentukan, lalu memulai lagi di awal urutan tanpa terhenti untuk menangani input pengguna. Loop ini akan berulang hingga sejumlah iterasi tercapai atau panggilan untuk keluar dari loop telah dilakukan oleh salah satu sub-agennya (biasanya dengan memanggil alat exit_loop bawaan).

Hal ini bermanfaat untuk tugas yang memerlukan penyempurnaan, pemantauan, atau alur kerja siklus yang berkelanjutan. Beberapa contoh di antaranya:

  • Penyempurnaan Iteratif: Terus meningkatkan kualitas dokumen atau rencana melalui siklus agen berulang.
  • Pemantauan Berkelanjutan: Memeriksa sumber data atau kondisi secara berkala menggunakan serangkaian agen.
  • Debat atau Negosiasi: Menyimulasikan diskusi berulang antara agen untuk mencapai hasil yang lebih baik.

Anda akan menambahkan LoopAgent ke agen proposal film untuk memungkinkan beberapa putaran riset dan iterasi saat menyusun cerita. Selain menyempurnakan skrip, hal ini memungkinkan pengguna memulai dengan input yang tidak terlalu spesifik: alih-alih menyarankan tokoh sejarah tertentu, pengguna mungkin hanya tahu bahwa mereka menginginkan cerita tentang seorang dokter zaman dahulu, dan loop iterasi riset serta penulisan akan memungkinkan agen menemukan kandidat yang tepat, lalu mengerjakan cerita tersebut.

Langkah 2 sistem multi-agen (MAS) film_concept_team

Agen yang direvisi akan berjalan seperti ini:

  • root_agent greeter akan tetap sama.
  • film_concept_team SequentialAgent kini akan terdiri atas:
    • writers_room LoopAgent yang akan memulai urutan. Hal ini akan mencakup:
      • Agen researcher akan sama seperti sebelumnya.
      • Agen screenwriter akan sama seperti sebelumnya.
      • Agen critic yang akan memberikan masukan penting pada draf saat ini untuk mendorong tahapan riset dan peningkatan berikutnya melalui loop.
    • Saat loop berakhir, loop akan mengalihkan kontrol percakapan kembali ke film_concept_team SequentialAgent, yang kemudian akan meneruskan kontrol ke agen berikutnya dalam urutannya: file_writer yang akan tetap seperti sebelumnya untuk memberi judul film dan menulis hasil urutan ke file.

Untuk melakukan perubahan ini:

  1. Di file adk_multiagent_systems/workflow_agents/agent.py, tambahkan impor alat ini agar Anda dapat memberi agen kemampuan untuk keluar dari loop jika diinginkan:

    from google.adk.tools import exit_loop from google.adk.models import Gemini
  2. Untuk menentukan kapan harus keluar dari loop, tambahkan agen critic ini untuk memutuskan kapan kerangka plot siap. Tempel agen baru berikut ke dalam file agent.py di header bagian # Agents (tanpa menimpa agen yang ada). Perhatikan bahwa alat ini memiliki exit_loop sebagai salah satu alatnya dan petunjuk terkait kapan harus menggunakannya:

    critic = Agent( name="critic", model=Gemini(model=model_name, retry_options=RETRY_OPTIONS), 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] )
  3. Buat LoopAgent baru bernama writers_room yang membuat loop iteratif periset, penulis skenario, dan kritikus. Tiap loop yang dilakukan akan diakhiri dengan peninjauan kritis terhadap hasil kerja sejauh ini, yang akan mendorong peningkatan kualitas untuk putaran berikutnya. Tempel kode berikut di film_concept_team SequentialAgent yang ada.

    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, )
  4. Perhatikan bahwa pembuatan LoopAgent mencakup parameter untuk max_iterations. Fungsi ini menentukan berapa kali loop akan berjalan sebelum berakhir. Meskipun Anda berencana menghentikan loop melalui metode lain, sebaiknya sertakan batas pada jumlah total iterasi.

  5. Perbarui film_concept_team SequentialAgent untuk menggantikan researcher dan screenwriter dengan writers_room LoopAgent yang baru saja Anda buat. Agen file_writer harus tetap berada di akhir urutan. film_concept_team kini akan terlihat seperti 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 ], )
  6. Kembali ke tab UI Dev ADK dan klik tombol + New Session di kanan atas untuk memulai sesi baru.

  7. Mulai percakapan baru dengan: hello

  8. Saat diminta untuk memilih jenis karakter historis, pilih salah satu yang Anda minati. Beberapa ide karakter tersebut mencakup:

    • seorang desainer industri yang membuat produk untuk masyarakat luas
    • seorang kartografer (pembuat peta)
    • orang yang meningkatkan hasil panen tanaman pertanian
  9. Setelah Anda memilih jenis karakter, agen akan memproses iterasi loop dan akhirnya memberikan judul film serta menulis garis besarnya ke file.

  10. Dengan menggunakan Cloud Shell Editor, tinjau file yang dihasilkan, yang harus disimpan di direktori adk_multiagent_systems/movie_pitches. (Sekali lagi, Anda mungkin perlu menggunakan menu Editor untuk mengaktifkan View > Word Wrap untuk melihat teks lengkap tanpa banyak men-scroll secara horizontal.)

Klik Periksa progres saya untuk memverifikasi tujuan. Menambahkan LoopAgent untuk pekerjaan iteratif

Tugas 6. Menggunakan pola "fan out and gather" untuk pembuatan laporan dengan ParallelAgent

ParallelAgent memungkinkan sub-agennya dieksekusi secara serentak. Tiap sub-agen beroperasi di cabangnya sendiri, dan secara default tidak membagikan histori atau status percakapan secara langsung satu sama lain selama eksekusi paralel.

Hal ini berguna untuk tugas yang dapat dibagi menjadi sub-tugas independen yang dapat diproses secara bersamaan. Penggunaan ParallelAgent dapat mengurangi waktu eksekusi keseluruhan untuk tugas tersebut secara signifikan.

Di lab ini, Anda akan menambahkan beberapa laporan tambahan, yaitu beberapa riset tentang potensi performa box office dan beberapa ide awal tentang pemilihan pemeran, untuk meningkatkan kualitas proposal film baru Anda.

Langkah 3 sistem multi-agen (MAS) film_concept_team

Agen yang direvisi akan berjalan seperti ini:

  • greeter akan tetap sama.
  • film_concept_team SequentialAgent kini akan terdiri atas:
    • writers_room LoopAgent, yang akan tetap sama, termasuk:
      • Agen researcher
      • Agen screenwriter
      • Agen critic
    • preproduction_team ParallelAgent baru Anda akan bertindak, yang terdiri atas:
      • Agen box_office_researcher untuk menggunakan data box office historis guna membuat laporan terkait potensi performa box office untuk film ini
      • Agen casting_agent untuk menghasilkan beberapa ide awal tentang pemilihan pemeran berdasarkan aktor yang telah membintangi film serupa
    • Agen file_writer yang akan tetap seperti sebelumnya untuk menulis hasil urutan ke file.

Meskipun sebagian besar contoh ini menunjukkan kerja kreatif yang akan dilakukan oleh tim pekerja manusia, alur kerja ini menunjukkan cara memecah rangkaian tugas yang kompleks ke beberapa sub-agen untuk menghasilkan draf dokumen kompleks yang kemudian dapat diedit dan ditingkatkan kualitasnya oleh anggota tim pekerja manusia.

  1. Tempel agen baru dan ParallelAgent berikut ke file workflow_agents/agent.py di bawah header # Agents:

    box_office_researcher = Agent( name="box_office_researcher", model=Gemini(model=model_name, retry_options=RETRY_OPTIONS), 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=Gemini(model=model_name, retry_options=RETRY_OPTIONS), 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 ] )
  2. Perbarui daftar sub_agents agen film_concept_team yang ada untuk menyertakan preproduction_team di antara writers_room dan file_writer:

    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 ], )
  3. Perbarui instruction file_writer menjadi:

    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? }
  4. Simpan file dengan mengklik tombol Save.

  5. Di UI Dev ADK, klik + New Session di kanan atas.

  6. Masukkan hello untuk memulai percakapan.

  7. Jika diminta, masukkan ide karakter baru yang Anda minati. Beberapa ide karakter tersebut mencakup:

    • aktris yang menemukan teknologi untuk Wi-Fi
    • seorang koki yang menarik
    • pemain kunci dalam pameran World's Fair
  8. Setelah agen menyelesaikan penulisan dan pembuatan laporannya, periksa file yang dihasilkan di direktori adk_multiagent_systems/movie_pitches. Jika sebagian proses gagal, klik + New session di kanan atas dan coba lagi.

Agen alur kerja kustom

Jika agen alur kerja yang telah ditentukan sebelumnya dari 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 antara 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, dan akan bermanfaat jika Anda mengetahuinya.

Selamat!

Di lab ini, Anda telah mempelajari cara membuat beberapa agen dan menghubungkannya satu sama lain dengan hubungan induk ke sub-agen, menambahkan ke status sesi dan membacanya dalam petunjuk agen, serta menggunakan agen alur kerja untuk meneruskan percakapan antaragen secara langsung.

Sertifikasi dan pelatihan Google Cloud

...membantu Anda mendapatkan manfaat optimal dari teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual agar dapat disesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.

Manual Terakhir Diperbarui pada 26 Juli 2026

Lab Terakhir Diuji pada 26 Juli 2026

Hak cipta 2026 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.

Sebelum memulai

  1. Lab membuat project dan resource Google Cloud untuk jangka waktu tertentu
  2. Lab memiliki batas waktu dan tidak memiliki fitur jeda. Jika lab diakhiri, Anda harus memulainya lagi dari awal.
  3. Di kiri atas layar, klik Start lab untuk memulai

Gunakan penjelajahan rahasia

  1. Salin Nama Pengguna dan Sandi yang diberikan untuk lab tersebut
  2. Klik Open console dalam mode pribadi

Login ke Konsol

  1. Login menggunakan kredensial lab Anda. Menggunakan kredensial lain mungkin menyebabkan error atau dikenai biaya.
  2. Setujui persyaratan, dan lewati halaman resource pemulihan
  3. Jangan klik End lab kecuali jika Anda sudah menyelesaikan lab atau ingin mengulanginya, karena tindakan ini akan menghapus pekerjaan Anda dan menghapus project

Konten ini tidak tersedia untuk saat ini

Kami akan memberi tahu Anda melalui email saat konten tersedia

Bagus!

Kami akan menghubungi Anda melalui email saat konten tersedia

Satu lab dalam satu waktu

Konfirmasi untuk mengakhiri semua lab yang ada dan memulai lab ini

Gunakan penjelajahan rahasia untuk menjalankan lab

Menggunakan jendela Samaran atau browser pribadi adalah cara terbaik untuk menjalankan lab ini. Langkah ini akan mencegah konflik antara akun pribadi Anda dan akun Siswa, yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.