Petunjuk dan persyaratan penyiapan lab
Lindungi akun dan progres Anda. Selalu gunakan jendela browser pribadi dan kredensial lab untuk menjalankan lab ini.

Membangun Sistem Multiagen dengan ADK

Lab 1 jam 30 menit universal_currency_alt 5 Kredit show_chart Advanced
info 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 multiagen 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 (Mulai Lab)

Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer, yang dimulai saat Anda mengklik Start Lab (Mulai Lab), menampilkan lamanya resource Cloud akan tersedia untuk Anda.

Lab praktis Qwiklabs ini memungkinkan Anda melakukan aktivitas lab sendiri di lingkungan cloud nyata, bukan di lingkungan demo atau simulasi. Yaitu dengan cara memberi Anda kredensial sementara yang baru yang digunakan untuk login dan mengakses Google Cloud Platform selama durasi lab.

Yang diperlukan

Untuk menyelesaikan lab ini, Anda memerlukan:

  • Akses ke browser internet standar (disarankan browser Chrome).
  • Waktu untuk menyelesaikan lab.

Catatan: Jika Anda sudah memiliki project atau akun GCP pribadi, jangan gunakan project atau akun tersebut untuk lab ini.

Cara memulai lab dan login ke Google Cloud Console

  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: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
  7. Klik halaman berikutnya:

    • Setujui persyaratan dan ketentuan.
    • Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
    • Jangan mendaftar 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 Multiagen

Dengan Agent Development Kit, developer akan mendapatkan perilaku model generatif yang bersifat multilangkah, lebih andal, dan canggih. 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 spesialis 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 dan lebih mudah dipahami.
  • Peningkatan kualitas dan pemeliharaan yang mudah: Lebih mudah untuk meningkatkan 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, sehingga lebih mudah untuk mengontrol dan memprediksi kemungkinan rute yang dapat diambil percakapan melalui struktur. Manfaat struktur hierarkis ini mencakup:

  • Struktur ini terinspirasi dari tim kolaboratif di dunia nyata sehingga mempermudah desain dan penalaran terkait perilaku sistem multiagen.
  • 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, Vertex AI API telah diaktifkan untuk Anda. Jika Anda mengikuti langkah-langkah ini di project sendiri, Anda dapat mengaktifkannya dengan membuka Vertex AI 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/adk_multiagent_systems .
  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 -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
  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 mereka sudah tahu tujuan perjalanan mereka atau apakah mereka 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 mereka 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 menentukan 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 akan sedikit berbeda):

    pengguna: halo [steering]: Hai! Apakah Anda sudah menentukan negara tujuan perjalanan Anda, atau Anda perlu bantuan untuk memutuskan tempat tujuan?
  7. Beri tahu agen:

    Saya perlu bantuan untuk memutuskan.

    Contoh output (output Anda mungkin akan sedikit berbeda):

    pengguna: Saya perlu bantuan untuk memutuskan. [travel_brainstormer]: Oke! Untuk memberikan rekomendasi terbaik, saya perlu memahami hal yang Anda cari dalam perjalanan. ...
  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:

    Jika pengguna memerlukan bantuan untuk memutuskan, kirim mereka ke 'travel_brainstormer'. Jika mereka tahu negara mana yang ingin dikunjungi, kirim mereka ke '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:

    Saya ingin pergi ke Jepang.

    Contoh output (output Anda mungkin akan sedikit berbeda):

    pengguna: Saya ingin pergi ke Jepang. [attractions_planner]: Oke, saya dapat membantu Anda. Berikut beberapa tempat wisata populer di Jepang: * **Tokyo:** * Kuil Senso-ji * Persimpangan Shibuya * Tokyo Skytree * **Kyoto:** ...
  15. Perhatikan bahwa Anda telah dialihkan ke sub-agen lain, attractions_planner.

  16. Balas dengan:

    Sebenarnya saya tidak tahu negara mana yang harus dikunjungi.

    Contoh output (output Anda mungkin akan sedikit berbeda):

    pengguna: sebenarnya saya tidak tahu negara mana yang harus dikunjungi [travel_brainstormer]: Oke! Saya dapat membantu berdiskusi terkait negara yang dapat menjadi tujuan perjalanan Anda.
  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]: """Menyimpan daftar tempat wisata ke status["attractions"]. Args: attractions [str]: daftar string yang akan ditambahkan ke daftar tempat wisata Returns: None """ # Memuat tempat wisata yang sudah ada dari status. Jika belum ada, mulai dengan membuat daftar kosong existing_attractions = tool_context.state.get("attractions", []) # Memperbarui kunci 'attractions' dengan gabungan daftar lama dan baru. # Saat alat dijalankan, ADK akan membuat peristiwa dan melakukan # pembaruan terkait di status sesi. tool_context.state["attractions"] = existing_attractions + attractions # Praktik terbaik untuk alat adalah menampilkan pesan status pada 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-poin berikut ke instruction yang ada di agen attractions_planner:

    - Saat pengguna membalas, gunakan alat Anda untuk menyimpan tempat wisata yang mereka pilih lalu berikan tempat wisata lain yang mungkin menarik. - Jika mereka meminta untuk melihat daftar, berikan daftar berbutir dari {attractions? } lalu sarankan tempat wisata lainnya.
  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

    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 ADK Dev UI.

  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:

    Saya ingin pergi ke Mesir.

    Anda akan dialihkan ke attractions_planner dan diberi daftar tempat wisata.

  13. Pilih tempat wisata, misalnya:

    Saya akan mengunjungi 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 navigation menu 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:

    Apa yang ada di daftar saya?
  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 multiagen yang menggunakan beberapa agen LLM, agen alur kerja, dan alat untuk membantu mengontrol alur agen.

Secara khusus, Anda akan membuat 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 multiagen Anda akan terlihat seperti ini (klik gambar untuk melihatnya dalam ukuran lebih besar):

Diagram sistem multiagen film_concept_team

Namun, Anda akan memulai dengan versi yang lebih sederhana.

Tugas 4. Mulai membangun sistem multiagen 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 multiagen untuk pengembangan proposal film. Draf pertama agen Anda akan disusun seperti ini:

Langkah 1 sistem multiagen 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:

    • Periset untuk mempelajari lebih lanjut tokoh sejarah yang diminta dari Wikipedia, menggunakan alat LangChain yang dibahas di lab Mengefektifkan agen ADK dengan 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.
    • Penulis skenario untuk mengubah riset menjadi garis besar plot.
    • 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 --reload_agents Catatan: Jika Anda tidak menutup sesi adk web sebelumnya, port default 8000 akan diblokir, tetapi Anda dapat meluncurkan UI pengembangan dengan port baru menggunakan adk web --port 8001, misalnya.
  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 ADK Dev UI.

  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 China 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 plot 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 ADK Dev UI, klik salah satu ikon agen (agent_icon) yang mewakili 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 plot 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 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 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
  2. Untuk menentukan kapan harus keluar dari loop, tambahkan agen critic ini untuk memutuskan kapan garis besar 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=model_name, description="Menilai kerangka cerita untuk membantu meningkatkan kualitasnya.", instruction=""" INSTRUCTIONS: Pertimbangkan pertanyaan berikut terkait PLOT_OUTLINE: - Apakah kerangka plot mengikuti struktur tiga babak sinematik yang memuaskan? - Apakah konflik para karakternya terasa menarik? - Apakah ceritanya terasa kokoh dan masuk akal dalam periode sejarah tertentu? - Apakah kerangka cerita ini cukup menggabungkan detail sejarah dari RESEARCH? Jika PLOT_OUTLINE berhasil menjawab pertanyaan ini, keluar dari loop penulisan dengan alat 'exit_loop'. Jika peningkatan signifikan dapat dilakukan, gunakan alat 'append_to_state' untuk menambahkan masukan Anda ke kolom 'CRITICAL_FEEDBACK'. Jelaskan keputusan Anda dan ringkas masukan yang telah Anda berikan. 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="Melakukan iterasi melalui riset dan penulisan untuk meningkatkan kualitas kerangka plot film.", 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="Menulis kerangka plot film dan menyimpannya sebagai file teks.", sub_agents=[ writers_room, file_writer ], )
  6. Kembali ke tab ADK Dev UI 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 subtugas 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 multiagen 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=model_name, description="Mempertimbangkan potensi film ini untuk masuk box office", instruction=""" PLOT_OUTLINE: { PLOT_OUTLINE? } INSTRUCTIONS: Tulis laporan tentang potensi sebuah film sebagai box office seperti yang dijelaskan dalam PLOT_OUTLINE berdasarkan performa box office yang dilaporkan dari film-film terbaru lainnya. """, output_key="box_office_report" ) casting_agent = Agent( name="casting_agent", model=model_name, description="Menghasilkan ide pemilihan pemeran untuk film ini", instruction=""" PLOT_OUTLINE: { PLOT_OUTLINE? } INSTRUCTIONS: Buat ide untuk pemilihan pemeran karakter yang dijelaskan dalam PLOT_OUTLINE dengan menyarankan aktor yang telah menerima masukan positif dari kritikus dan/atau penggemar saat mereka memainkan peran serupa. """, 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="Menulis kerangka plot film dan menyimpannya sebagai file teks.", sub_agents=[ writers_room, preproduction_team, file_writer ], )
  3. Perbarui instruction file_writer menjadi:

    INSTRUCTIONS: - Buat saran judul film kontemporer yang menarik dan dapat dipasarkan untuk film yang dijelaskan dalam PLOT_OUTLINE. Jika judul telah disarankan dalam PLOT_OUTLINE, Anda dapat menggunakannya, atau menggantinya dengan judul yang lebih baik. - Gunakan alat 'write_file' untuk membuat file txt baru dengan argumen berikut: - untuk nama file, gunakan judul film - Tulis ke direktori 'movie_pitches'. - Untuk 'content' yang akan ditulis, sertakan: - PLOT_OUTLINE - BOX_OFFICE_REPORT - 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 ADK Dev UI, 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 mengoptimalkan 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 untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.

Manual Terakhir Diperbarui pada 3 Februari 2026

Lab Terakhir Diuji pada 3 Februari 2026

Hak cipta 2020 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.