Procedimentos estruturados
Uma sequência fixa de etapas tipadas que seu agente executa sempre da mesma forma
Visão geral
Um procedimento estruturado é um procedimento que executa uma sequência fixa de etapas. Um procedimento de formato livre é uma orientação em linguagem natural que o agente interpreta e adapta à situação. Um procedimento estruturado é uma lista ordenada de etapas tipadas que o agente executa na ordem definida sempre que o procedimento se aplica.
Use um procedimento estruturado quando etapas específicas precisarem ocorrer da mesma forma em todas as chamadas: verificar a identidade de quem liga, escalar um ticket ou processar um pagamento. Você o cria como uma lista curta de etapas em linguagem simples.
Como todo procedimento, um procedimento estruturado tem um gatilho que descreve quando ele se aplica. Quando uma conversa corresponde ao gatilho, o agente executa as etapas do procedimento em ordem e depois retorna ao restante da conversa.

Quando usar um procedimento estruturado
Use um procedimento estruturado quando etapas específicas precisarem ser executadas sempre da mesma forma, mas você ainda quiser criar rapidamente usando etapas simples. Procedimentos estruturados são mais fáceis de escrever do que um workflow, mas são menos expressivos. Para saber como eles se comparam a procedimentos de formato livre, workflows e ao prompt do sistema, consulte Quando usar procedimentos.
Anatomia de um procedimento estruturado
Um procedimento estruturado tem três partes: um nome, um gatilho e uma lista ordenada de etapas.
Nome
Um rótulo curto que identifica o procedimento no painel. O nome nunca é enviado ao LLM, portanto não afeta o comportamento do agente.
Gatilho
Uma descrição em linguagem simples de quando o agente deve executar este procedimento, por exemplo, Quando o usuário pedir o reembolso de um pedido. O agente compara a intenção do usuário com o gatilho de cada procedimento e executa o correspondente, então os gatilhos devem ser concretos e distintos. O agente vê apenas o texto do gatilho, nunca o nome ou o ID do procedimento. Um gatilho funciona da mesma forma que em qualquer procedimento; consulte Como escrever gatilhos.
Deixe o gatilho vazio para tornar o procedimento um subprocesso que só é executado quando outro procedimento o chama.
Etapas
O corpo do procedimento é uma lista ordenada de etapas tipadas. Há vários tipos de etapa, que você combina para descrever a tarefa.

Nem todas as etapas podem aparecer em qualquer lugar. Dentro de uma ramificação Se, você pode usar qualquer etapa, exceto outro Se ou uma etapa Tentar novamente. Dentro do manipulador de falha de uma etapa Ferramenta, você pode usar qualquer etapa, exceto um Se ou outra Ferramenta.
Referência de etapas da API
O content de um procedimento estruturado é um documento codificado em JSON que contém um array steps. Cada etapa é um objeto identificado por seu type. O gatilho é um campo separado de nível superior no procedimento, não faz parte de content. As cargas úteis da API e do SDK usam type: "deterministic" para o próprio procedimento.
Perguntar
Uma etapa Perguntar instrui o agente a solicitar informações e aguardar até que o usuário forneça uma resposta adequada.
- Tipo da API:
ask instruction: String obrigatória e não vazia.
Informar
Uma etapa Informar instrui o agente a gerar uma única mensagem com suas próprias palavras. Ela não aguarda uma resposta do usuário antes de continuar.
- Tipo da API:
tell instruction: String obrigatória e não vazia.
Dizer
Uma etapa Dizer fala o texto fornecido exatamente como foi escrito e depois continua. Forneça message_translations para dar ao agente uma mensagem exata para cada idioma adicional compatível com ele, identificada pelo código do idioma.
- Tipo da API:
say message: String obrigatória e não vazia.message_translations: Objeto opcional que mapeia um código de idioma para{ "value": "..." }.
Se, senão se e senão
Uma etapa Se contém uma ou mais ramificações condicionais ordenadas. A primeira ramificação correspondente é executada. O array fallback opcional é a ramificação Senão.
- Tipo da API:
branch branches: Lista obrigatória e não vazia de ramificações condicionais.fallback: Lista opcional de etapas Senão.- Cada ramificação exige uma
conditione uma listastepsnão vazia.
Isso funciona como if/else-if/else:
- As condições são avaliadas em ordem.
- A primeira ramificação correspondente é executada.
- Se nenhuma condição corresponder,
fallbacké executado. - Após o término de uma ramificação, o procedimento retorna à sequência principal.
O exemplo acima usa uma condição de texto, que o modelo avalia em linguagem natural. As condições também podem ser expressões sobre variáveis dinâmicas:
Uma condição de expressão testa variáveis dinâmicas, que são preenchidas por resultados de ferramentas ou definidas quando a conversa começa. Ela não pode ler a resposta mais recente do usuário. Para criar uma ramificação com base no que o usuário disse, use uma condição de texto.
Todas as ramificações de uma etapa Se devem usar o mesmo tipo de condição: llm ou expression.
Ferramenta
Uma etapa Ferramenta chama uma ferramenta específica.
- Tipo da API:
tool_call tool_id: ID da ferramenta obrigatório e não vazio. A ferramenta deve estar associada ao agente.tool_name: Nome obrigatório da ferramenta, que deve corresponder à ferramenta.instruction: Instrução opcional que descreve como chamar a ferramenta.schema_overrides: Valores fixos opcionais para os parâmetros da ferramenta.on_failure: Manipulador de falha opcional.
Valores fixos de parâmetros
Use schema_overrides quando um parâmetro sempre precisar ter um valor específico. O modelo não vê nem escolhe um parâmetro substituído. As chaves são caminhos de parâmetros no esquema da ferramenta; cada valor nomeia uma origem:
Tratamento de falhas
Sem on_failure, uma chamada de ferramenta com falha encerra a conversa. Adicione on_failure para executar etapas de recuperação.
fallback: Lista obrigatória e não vazia de etapas executadas quando a ferramenta falha.branches: Reservado para tratamento condicional de falhas. Deixe vazio.
Um manipulador de falha pode conter etapas Perguntar, Informar, Dizer, Subprocedimento, Ferramenta do sistema e Tentar novamente. Ele não pode conter etapas Ferramenta ou Se. Após a execução do manipulador, o procedimento continua com a etapa após a etapa Ferramenta.
Tentar novamente
Uma etapa Tentar novamente executa de novo o manipulador de falha que a contém, incluindo a chamada da ferramenta. Cada tentativa chama a ferramenta novamente e, se ela falhar outra vez, executa todas as etapas do manipulador novamente. Quando as tentativas se esgotam, a conversa é encerrada.
- Tipo da API:
retry max_retries: Número inteiro opcional de 1 a 3. O padrão é 1.- O valor conta as tentativas após a chamada original da ferramenta.
- Tentar novamente é válido apenas dentro de
on_failure. - Tentar novamente deve ser a etapa final em seu manipulador de falha, pois as etapas posteriores seriam inacessíveis.
Subprocedimento
Uma etapa Subprocedimento executa outro procedimento estruturado. Quando as etapas desse procedimento são concluídas, a execução retorna à etapa após a etapa Subprocedimento.
- Tipo da API:
sub_procedure procedure_id: ID do procedimento obrigatório e não vazio.- O destino deve existir no mesmo agente.
- O destino deve ser um procedimento estruturado.
- Um procedimento não pode invocar a si mesmo.
Ferramenta do sistema
Uma etapa Ferramenta do sistema executa uma ação integrada do sistema.
- Tipo da API:
system_tool system_tool_name: Nome obrigatório da ferramenta do sistema.- No momento, apenas
end_callé compatível. Mais ferramentas do sistema poderão ser adicionadas futuramente. - Como
end_callé terminal, deve ser a etapa final na sequência, ramificação ou manipulador de falha que o contém.
Regras de validação
A publicação do agente ou o salvamento do rascunho do agente rejeita um procedimento estruturado que viola qualquer uma destas regras. O erro indica a etapa com problema pelo respectivo caminho.
- Duas etapas Se não podem ser colocadas uma após a outra.
- Etapas Se não podem ser aninhadas.
- Uma etapa Se com condições de expressão não pode vir diretamente após uma etapa Perguntar.
- Todas as condições em uma etapa Se devem ser do mesmo tipo:
llmouexpression. - Tentar novamente só pode aparecer dentro de
on_failuree deve ser a última etapa nesse local. end_calldeve ser a última etapa em qualquer lista em que apareça.- O
fallbackde um manipulador de falha deve conter pelo menos uma etapa. - Um Subprocedimento deve apontar para um procedimento estruturado existente no mesmo agente e não para ele próprio.
tool_iddeve ser uma ferramenta do agente,tool_namedeve corresponder, eschema_overridesdeve corresponder ao esquema da ferramenta.- A lista
steps, cadainstructione cadamessagedevem ser não vazios.
Para saber como reestruturar um procedimento que viola uma dessas regras, consulte Boas práticas.
Exemplo completo de API
Este exemplo processa o cancelamento de um pedido com base no status de envio. Ele fixa um parâmetro de ferramenta, se recupera de uma chamada de ferramenta com falha, invoca outro procedimento estruturado e então encerra a chamada.
Como um procedimento estruturado é executado
Transformar as etapas de um procedimento estruturado no formato que o agente executa é chamado de compilação. A plataforma compila todos os procedimentos estruturados quando o rascunho do agente é salvo ou o agente é publicado; quem cria os procedimentos nunca precisa compilar nada.
Quando a solicitação do usuário corresponde ao gatilho de um procedimento, a plataforma entra no procedimento e executa suas etapas em ordem. Dentro do procedimento estruturado, o agente se concentra em cada etapa isoladamente. Quando chega ao fim, a plataforma devolve o controle ao restante da conversa.
As conexões de workflow não podem apontar para nem partir de um procedimento estruturado. Use uma etapa Subprocedimento para encadear procedimentos estruturados. A plataforma gerencia a entrada por um gatilho correspondente e a conclusão, incluindo devolver o controle ao nó do workflow em que o procedimento começou.
As regras a seguir descrevem o comportamento das etapas em tempo de execução.
Apenas Perguntar aguarda o usuário
Todas as etapas, exceto Perguntar, são executadas imediatamente, e o controle passa para a próxima
etapa no mesmo turno. Uma etapa Informar ou Dizer entrega sua mensagem e continua. Não há etapa que pause a
conversa além de Perguntar, nem etapa que encerre o turno atual. Se precisar da entrada do usuário,
use uma etapa Perguntar. Se a conversa precisar ser encerrada, use a ferramenta do sistema end_call.
Chegar ao fim de um procedimento não encerra o turno
Quando a última etapa é concluída, o procedimento termina e o agente retorna ao restante da conversa com o turno ainda aberto, portanto pode falar mais. Quando um subprocedimento é concluído, o controle retorna à próxima etapa do procedimento que o chamou.
Etapas de ferramenta distinguem apenas sucesso de falha
Uma etapa Ferramenta não pode criar ramificações com base em um código de status ou no corpo da resposta. Se a ferramenta for bem-sucedida, o procedimento continua. Se ela falhar e a etapa não tiver um manipulador de falha, a conversa será encerrada. Se houver um, as etapas do manipulador são executadas e o procedimento continua para a próxima etapa. Uma etapa Tentar novamente dentro do manipulador executa de novo a ferramenta e, se ela falhar outra vez, todas as etapas do manipulador, até que a ferramenta seja bem-sucedida ou as tentativas se esgotem. Se elas se esgotarem, a conversa será encerrada.
Etapas Se seguem adiante quando não há correspondência
As condições são avaliadas em ordem, e a primeira correspondência é executada. A ramificação Senão é executada quando não há correspondência. Se não houver Senão e nada corresponder, o procedimento continua com a etapa após o Se. Um caso não tratado não é um erro.
Ramificações Se não mantêm o estado adiante
Nada decidido dentro de uma ramificação Se é lembrado pelas etapas posteriores. Se algo aprendido em uma ramificação for necessário depois, persista-o explicitamente com uma chamada de ferramenta ou uma variável dinâmica.
Etapas Perguntar, Informar e Dizer não têm ferramentas
Apenas etapas Ferramenta podem chamar ferramentas. Não é necessário instruir uma etapa Perguntar, Informar ou Dizer a não chamar ferramentas; ela não pode fazer isso.
Gerenciar um procedimento estruturado
Criar pelo painel
Gerenciar pela CLI
Gerenciar pela API
Abra seu agente no painel e selecione Procedimentos. Use + para criar um procedimento estruturado. Adicione um gatilho, selecione um tipo para cada etapa e publique as alterações do agente.
O painel valida procedimentos estruturados enquanto você os edita. Se um procedimento violar uma regra de validação, o botão Publicar exibirá um estado de erro, a aba Procedimentos exibirá um indicador de erro e a prévia não poderá iniciar até que o procedimento seja corrigido. Selecione o indicador de erro para ver qual procedimento e etapa foram afetados.


Práticas recomendadas
Cada tipo de etapa já impõe seu próprio comportamento, então você raramente precisa explicá-lo. Escreva a intenção de cada etapa e deixe que o tipo de etapa faça o resto. As orientações abaixo abordam os casos que vale a pena acertar.
Para testar um procedimento estruturado, siga Iterando em um procedimento.
Escolhendo tipos de etapa
Faça uma pergunta por etapa Ask
Uma etapa Ask espera uma resposta. Se você agrupar várias perguntas em uma única instrução, o agente tende a pular algumas ou juntá-las. Use uma etapa Ask para cada informação.
Use Tell para afirmações e Ask para perguntas
Uma etapa Tell transmite sua mensagem e segue adiante sem esperar. Uma etapa Tell formulada como pergunta nunca recebe uma resposta. Se uma etapa precisa de uma resposta do usuário, ela é uma Ask.
Dê a uma etapa Ask uma condição de saída clara quando a pergunta sozinha não for suficiente
Uma etapa Ask avança quando recebe uma resposta adequada. Se o que conta como resposta não estiver claro na pergunta, informe isso na instrução, por exemplo, _Peça o ID do pedido; um ID válido tem oito dígitos _.
Escolha Tell para formulação e Say para palavras exatas
Use uma etapa Tell quando o agente deve compor a própria mensagem e uma etapa Say quando a redação precisa ser literal ou traduzida. Ambas transmitem exatamente uma mensagem, então não é necessário instruir uma etapa a enviar uma única mensagem.
Não diga às etapas sem ferramentas para evitarem ferramentas
As etapas Ask, Tell e Say não podem chamar ferramentas. Escrever não chame nenhuma ferramenta nelas adiciona ruído à instrução sem mudar o comportamento.
Estruturando o procedimento
Não insira preenchimento entre duas etapas If
Duas etapas If não podem ser colocadas uma após a outra. Inserir uma etapa Tell ou Say sem relação entre elas para cumprir a regra faz o agente dizer algo que não deveria. Em vez disso, incorpore a segunda decisão à primeira etapa If como ramificações Else if adicionais ou mova-a para um subprocedimento.
Coloque decisões aninhadas em um subprocedimento
Etapas If não podem ser aninhadas. Quando uma decisão depende de outra, coloque a decisão interna em seu próprio procedimento estruturado e chame-o com uma etapa Sub-procedure a partir da ramificação que precisa dela.
Adicione um Else quando 'nenhuma das opções acima' for relevante
Uma etapa If sem Else passa para a próxima etapa quando nada corresponde. Se o caso sem correspondência precisar se comportar de outra forma, adicione uma ramificação Else para ele.
Persista tudo de que uma etapa posterior precisar
Decisões tomadas dentro de uma ramificação If não são lembradas depois. Se uma etapa posterior depender de algo aprendido em uma ramificação, registre isso com uma chamada de ferramenta ou uma variável dinâmica dentro da ramificação.
Coloque condições de expressão depois da ferramenta que as preenche
Condições de expressão testam variáveis dinâmicas. Coloque uma etapa If que as use logo após a etapa Tool que define essas variáveis. Para ramificar com base no que o usuário disse, use uma condição de texto.
Extraia etapas compartilhadas para um subprocedimento
Quando vários procedimentos estruturados compartilham a mesma sequência, como encaminhar para uma pessoa, coloque-a em um procedimento estruturado com um gatilho vazio e chame-o a partir de cada um. Sequências copiadas se tornam diferentes com o tempo.
Trabalhando com ferramentas
Controle uma etapa Tool com uma etapa If, não com sua instrução
Uma etapa Tool sempre chama sua ferramenta. Uma condição escrita na instrução, como _pule isto se o ticket já estiver marcado _, não pode impedir a chamada. Se a chamada não deve sempre acontecer, coloque a condição em uma etapa If antes da etapa Tool.
Defina valores de parâmetros em vez de descrevê-los
Quando um parâmetro precisa sempre assumir um valor específico, defina-o com uma substituição constant em
schema_overrides. Uma instrução como sempre defina o status como pendente pede que o modelo
cumpra isso; uma substituição é aplicada e não pode ser ignorada.
Dê a cada etapa Tool um manipulador de falhas
Sem on_failure, qualquer falha de ferramenta encerra a conversa. Adicione um manipulador que informa ao usuário
o que aconteceu e tenta novamente, encaminha ou continua.
Mantenha as etapas Tool restritas à chamada da ferramenta
Uma etapa Tool executa apenas a ferramenta; o agente não pode falar nem tomar uma decisão durante ela. Para falar com o usuário ou ramificar com base no que a ferramenta retornou, coloque isso em uma etapa separada antes ou depois da etapa Tool.
Escrevendo instruções
Descreva apenas a etapa atual
O procedimento controla o que será executado em seguida, e o agente não sabe das etapas posteriores enquanto executa a atual. Deixe que a ordem das etapas faça o sequenciamento.
Não tente encerrar o turno com texto
Frases escritas nas instruções da etapa, como esta é a última mensagem deste turno, pedem
ao agente que imponha um limite que a plataforma não oferece. Use uma etapa Ask para esperar pelo usuário ou
a ferramenta do sistema end_call para encerrar a conversa.
Mantenha regras globais no prompt do sistema
Tom, formatação, despedidas e políticas de recusa pertencem ao prompt do sistema. A instrução de uma etapa deve informar apenas o que é específico daquela etapa.
Compondo procedimentos
As orientações gerais para compor procedimentos também se aplicam a procedimentos estruturados; consulte Compondo procedimentos na página de procedimentos de formato livre.
Um padrão é específico da combinação de tipos: um procedimento de formato livre pode fazer referência a um estruturado. Mantenha o tratamento aberto em um procedimento de formato livre e delegue as partes que precisam ser executadas sempre da mesma maneira, como verificação de identidade ou encaminhamento, a um procedimento estruturado.
Limitações
- Etapas If não podem ser aninhadas, e duas etapas If não podem ser colocadas uma após a outra.
- A única ferramenta de sistema compatível é
end_call. - Procedimentos estruturados não podem fazer referência a documentos da base de conhecimento.
- Não há como encerrar o turno atual quando um procedimento é concluído; o agente mantém o turno aberto e pode continuar falando.
- As arestas do workflow não podem se conectar a um procedimento estruturado nem partir dele. Use uma etapa Sub-procedure para encadear procedimentos estruturados; a entrada e a conclusão são gerenciadas pela plataforma.
- Iniciar um procedimento adiciona latência: o agente faz uma chamada de ferramenta para entrar nele e depois avança pelo workflow gerado.
Suporte de provedores de modelos
Procedimentos estruturados forçam chamadas internas de ferramentas ao entrar em um subprocedimento e ao concluir um procedimento. As principais famílias de modelos OpenAI, Anthropic, Gemini e Grok oferecem suporte à escolha forçada de ferramenta. Outros modelos ou provedores personalizados podem não garantir isso, o que pode tornar as transições de subprocedimentos ou a conclusão de procedimentos menos confiáveis. Verifique o suporte à escolha forçada de ferramenta ao usar outro provedor de modelos.
Consulte Procedimentos para ver limites que se aplicam a todos os procedimentos, incluindo o limite de tamanho do conteúdo e como os procedimentos estruturados diferem dos de formato livre.