É possível adicionar agentes de IA como etapas no fluxo de trabalho para transferir tarefas para agentes especializados. Isso permite criar Agentic Workflows que orquestram diferentes agentes, cada um lidando com uma parte específica de um processo maior.
Antes de começar
Antes de usar esse recurso, siga estas etapas:
- Verifique se um administrador do Gemini Enterprise ativou o recurso Workflow Builder nas configurações de gerenciamento de recursos do app. Para mais informações, consulte Gerenciar recursos do app da Web.
Verifique se os agentes que você quer adicionar estão disponíveis na sua organização. Esse recurso permite adicionar os seguintes agentes:
Adicionar uma etapa de agente atual
App
- Abra o app da Web do Gemini Enterprise em um navegador.
- Acesse um agente atual ou crie um novo.
- No criador de fluxos, clique em Adicionar etapa.
- No painel Adicionar etapa, clique em Agentes atuais para abrir a seção.
Navegue pela lista de agentes disponíveis.
Clique no agente que você quer adicionar.
O sistema adiciona a etapa do agente ao seu fluxo de trabalho. O agente selecionado é executado como parte do fluxo de trabalho, recebendo entradas de etapas anteriores e transmitindo saídas para etapas posteriores.
Na tela, clique na etapa do agente para abrir o painel de configuração e defina o seguinte:
- Comando: insira o comando ou as instruções usadas para acionar o
agente. É possível incluir texto estático ou saídas de referência de etapas anteriores (por exemplo,
${step_name.output}).
- Comando: insira o comando ou as instruções usadas para acionar o
agente. É possível incluir texto estático ou saídas de referência de etapas anteriores (por exemplo,
A etapa do agente é uma referência dinâmica ao agente selecionado. Se o agente de origem for atualizado ou uma nova versão for lançada, seu fluxo de trabalho usará automaticamente a versão mais recente.
Para mais informações sobre as limitações desse recurso, consulte Problemas e limitações conhecidos.
Como funcionam as perguntas de esclarecimento
Quando um agente atual é executado em um fluxo de trabalho, ele pode pausar a execução para fazer uma pergunta de esclarecimento ao usuário se precisar de informações ausentes para concluir a tarefa.
As perguntas de esclarecimento são compatíveis de forma nativa quando o agente referenciado emite um
sinal input-required (A2A) ou um evento RequestInput (ADK).
Quando uma etapa do agente é executada e requer mais informações:
- Pausas na execução: o fluxo de trabalho pausa a execução na etapa atual do agente e inicia um comando human-in-the-loop (HITL).
- O usuário responde ao comando: o app da Web do Gemini Enterprise mostra a pergunta de esclarecimento do agente ao usuário, junto com um campo de texto para inserir a resposta.
- Retomada da execução: quando o usuário envia a resposta, o fluxo de trabalho retoma o agente atual, transmitindo a resposta do usuário de volta para ele.
- Suporte a várias interações: o agente pode fazer várias perguntas de esclarecimento em sucessão em várias interações até coletar todas as informações necessárias e produzir a saída final.
Isolamento de contexto
Durante uma troca de perguntas de esclarecimento, o agente referenciado recebe apenas o próprio histórico de interações com o usuário e o comando inicial configurado para o nó. As saídas e variáveis de outras etapas do fluxo de trabalho não são transmitidas automaticamente para o agente referenciado, a menos que sejam explicitamente referenciadas no comando da etapa.
Implementar perguntas de esclarecimento no agente
Para dar suporte a perguntas de esclarecimento, configure seu agente personalizado para emitir um sinal de entrada de solicitação no nível do protocolo quando precisar de mais informações.
Agentes A2A (nativos)
Para agentes que implementam o protocolo Agent-to-Agent (A2A) diretamente, retorne a tarefa
no estado input-required com TaskUpdater, fornecendo a pergunta
de esclarecimento no payload da mensagem:
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,
)
)
A resposta do usuário é enviada de volta ao agente como uma solicitação message/send com
o mesmo taskId.
Agentes A2A (criados com o ADK)
Se o agente for criado com o Kit de Desenvolvimento de Agente (ADK) e exposto por
A2A (usando to_a2a()), envolva a função de pergunta em
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)
Agentes do ADK no Agent Engine
Para agentes do ADK hospedados no mecanismo de raciocínio no Agent Engine, emita um evento RequestInput
em uma ferramenta geradora ou etapa de agente personalizado:
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?",
)
A seguir
- Saiba como configurar conectores e ações de nós de agente.
- Saiba como conectar servidores MCP.
- Saiba como usar etapas de controle de fluxo.