Anda dapat menambahkan agen AI yang sudah ada sebagai langkah-langkah dalam alur kerja untuk mentransfer tugas ke agen khusus. Hal ini memungkinkan Anda menyusun alur kerja multi-agen yang mengatur berbagai agen, yang masing-masing menangani bagian tertentu dari proses yang lebih besar.
Sebelum memulai
Sebelum menggunakan fitur ini, selesaikan langkah-langkah berikut:
- Pastikan administrator Gemini Enterprise telah mengaktifkan tombol pengaktifan fitur Pembuat Alur Kerja di setelan pengelolaan fitur aplikasi Anda. Untuk mengetahui informasi selengkapnya, lihat Mengelola fitur aplikasi web.
Pastikan agen yang ingin Anda tambahkan tersedia di organisasi Anda. Fitur ini mendukung penambahan agen berikut:
Menambahkan langkah agen yang ada
Aplikasi
- Buka aplikasi web Gemini Enterprise Anda di browser.
- Buka agen yang ada atau buat agen baru.
- Di pembuat alur, klik Tambahkan langkah.
- Di panel Add step, klik Existing agents untuk meluaskan bagian.
Jelajahi daftar agen yang tersedia.
Klik agen yang ingin Anda tambahkan.
Sistem akan menambahkan langkah agen yang ada ke alur kerja Anda. Agen yang dipilih berjalan sebagai bagian dari alur kerja Anda, menerima input dari langkah-langkah sebelumnya dan meneruskan output ke langkah-langkah selanjutnya.
Di kanvas, klik langkah agen yang ada untuk membuka panel konfigurasinya, lalu konfigurasi hal berikut:
- Perintah: Masukkan perintah atau petunjuk yang digunakan untuk memicu
agen. Anda dapat menyertakan teks statis atau output referensi dari langkah-langkah sebelumnya (misalnya,
${step_name.output}).
- Perintah: Masukkan perintah atau petunjuk yang digunakan untuk memicu
agen. Anda dapat menyertakan teks statis atau output referensi dari langkah-langkah sebelumnya (misalnya,
Langkah agen adalah referensi dinamis ke agen yang dipilih. Jika agen sumber diupdate atau versi baru ditayangkan, alur kerja Anda akan otomatis menggunakan versi terbaru.
Untuk mengetahui informasi selengkapnya tentang batasan fitur ini, lihat Masalah dan batasan umum.
Cara kerja pertanyaan klarifikasi
Saat dijalankan dalam alur kerja, agen yang ada dapat menjeda eksekusi untuk mengajukan pertanyaan klarifikasi kepada pengguna jika memerlukan informasi yang tidak ada untuk menyelesaikan tugasnya.
Pertanyaan klarifikasi didukung secara native saat agen yang dirujuk memancarkan sinyal input-required (A2A) atau peristiwa RequestInput (ADK).
Saat langkah agen yang ada berjalan dan memerlukan informasi tambahan:
- Eksekusi dijeda: Alur kerja akan menjeda eksekusi di langkah agen yang ada dan memulai perintah human-in-the-loop (HITL).
- Pengguna menjawab perintah: Aplikasi web Gemini Enterprise menampilkan pertanyaan klarifikasi agen kepada pengguna beserta kolom teks untuk memasukkan respons mereka.
- Eksekusi dilanjutkan: Saat pengguna mengirimkan jawabannya, alur kerja akan melanjutkan agen yang ada, dengan meneruskan jawaban pengguna kembali ke agen.
- Dukungan multi-putaran: Agen dapat mengajukan beberapa pertanyaan klarifikasi secara berurutan di beberapa putaran hingga mengumpulkan semua informasi yang diperlukan dan menghasilkan output akhirnya.
Isolasi konteks
Selama pertukaran pertanyaan klarifikasi, agen yang dirujuk hanya menerima histori interaksinya sendiri dengan pengguna dan perintah awal yang dikonfigurasi untuk node. Output dan variabel dari langkah lain dalam alur kerja tidak diteruskan secara otomatis ke agen yang dirujuk, kecuali jika dirujuk secara eksplisit dalam perintah langkah.
Menerapkan pertanyaan klarifikasi di agen Anda
Untuk mendukung pertanyaan klarifikasi, konfigurasi agen kustom Anda agar memancarkan sinyal input permintaan tingkat protokol saat memerlukan informasi tambahan.
Agen A2A (asli)
Untuk agen yang menerapkan protokol Agent-to-Agent (A2A) secara langsung, kembalikan tugas
dalam status input-required dengan TaskUpdater, yang memberikan pertanyaan
klarifikasi dalam payload pesan:
from a2a.server.tasks import TaskUpdater
from a2a.types import Message, Part, Role, TextPart
# Inside your custom agent's task executor class:
async def execute(self, context, event_queue):
updater = TaskUpdater(event_queue, context.task_id, context.context_id)
if context.current_task is None:
await updater.submit()
await updater.start_work()
user_input = context.get_user_input()
if "weather" in user_input and "tokyo" not in user_input.lower():
await updater.requires_input(
Message(
message_id=f"q-{context.task_id}",
role=Role.agent,
parts=[Part(root=TextPart(
text="Which city would you like the weather for?"))],
task_id=context.task_id,
context_id=context.context_id,
)
)
return
await updater.complete(
Message(
message_id=f"a-{context.task_id}",
role=Role.agent,
parts=[Part(root=TextPart(
text="It is sunny and 72°F in Tokyo."))],
task_id=context.task_id,
context_id=context.context_id,
)
)
Respons pengguna dikirim kembali ke agen Anda sebagai permintaan message/send dengan
taskId yang sama.
Agen A2A (dibangun dengan ADK)
Jika agen Anda dibangun dengan Agent Development Kit (ADK) dan diekspos melalui
A2A (menggunakan to_a2a()), gabungkan fungsi bertanya Anda dalam
LongRunningFunctionTool:
from google.adk.agents import Agent
from google.adk.tools.long_running_tool import LongRunningFunctionTool
from google.adk.a2a.utils.agent_to_a2a import to_a2a
def get_weather(city: str) -> str:
"""Returns weather information for a city."""
return f"It is sunny and 72°F in {city}."
def ask_clarifying_question(question: str) -> None:
"""Asks the user a question and waits for their reply."""
return None
root_agent = Agent(
model="gemini-2.5-flash",
name="weather_agent",
instruction=(
"If the user asks for weather without specifying a city, call "
"`ask_clarifying_question` and wait. Do not guess."
),
tools=[get_weather, LongRunningFunctionTool(ask_clarifying_question)],
)
a2a_app = to_a2a(root_agent, port=8000)
Agen ADK di Agent Engine
Untuk agen ADK yang dihosting mesin penalaran di Agent Engine, keluarkan peristiwa RequestInput
dalam alat generator atau langkah agen kustom:
from google.adk.events import RequestInput
# Inside a generator tool or custom agent step
def ask_for_details():
"""Requests user input during tool or step execution."""
yield RequestInput(
interrupt_id="weather_city",
message="Which city would you like the weather for?",
)
Langkah berikutnya
- Pelajari cara menggunakan tindakan konektor.
- Pelajari cara menghubungkan server MCP.
- Pelajari cara menggunakan langkah-langkah kontrol alur.