Procedimentos estruturados
Uma sequência fixa de etapas tipadas que seu agente executa da mesma forma sempre
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 em ordem 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 ligou, escalar um ticket ou receber 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 da mesma forma sempre, mas você ainda quiser criar rapidamente usando etapas simples. Procedimentos estruturados são mais fáceis de escrever do que um workflow, mas 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, portanto 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 Tentar novamente. Dentro do manipulador de falha de uma etapa Ferramenta, você pode usar qualquer etapa, exceto Se ou outra Ferramenta.
Referência de etapas da API
O content de um procedimento estruturado é um documento codificado em JSON que contém uma matriz 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 está escrito e depois continua. Forneça message_translations para dar ao agente uma mensagem exata para cada idioma adicional compatível, 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. A matriz opcional fallback é 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. - Depois que uma ramificação termina, 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 em 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 de ferramenta obrigatório e não vazio. A ferramenta deve estar vinculada ao agente.tool_name: nome obrigatório da ferramenta, correspondente à 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 assumir 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 indica 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, Subprocesso, Ferramenta do sistema e Tentar novamente. Ele não pode conter etapas Ferramenta ou Se. Depois que o manipulador é executado, o procedimento continua com a etapa após a etapa Ferramenta.
Tentar novamente
Uma etapa Tentar novamente executa novamente 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: 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 inalcançáveis.
Subprocesso
Uma etapa Subprocesso executa outro procedimento estruturado. Quando as etapas desse procedimento terminam, a execução retorna à etapa após a etapa Subprocesso.
- Tipo da API:
sub_procedure procedure_id: ID de 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 chamar 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, ele deve ser a etapa final na sequência, ramificação ou manipulador de falha que o contém.
Regras de validação
Publicar o agente ou salvar o rascunho do agente rejeita um procedimento estruturado que viole qualquer uma destas regras. O erro nomeia a etapa com problema por seu caminho.
- Duas etapas Se não podem ser colocadas consecutivamente.
- 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 pode aparecer apenas dentro de
on_failuree deve ser a última etapa ali. 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 Subprocesso deve apontar para um procedimento estruturado existente no mesmo agente e não para si mesmo.
tool_iddeve ser uma ferramenta do agente,tool_namedeve corresponder, eschema_overridesdeve corresponder ao esquema da ferramenta.- A lista
steps, todainstructione todamessagedevem ser não vazias.
Para saber como reestruturar um procedimento que encontra uma destas regras, consulte Boas práticas.
Exemplo completo da API
Este exemplo processa o cancelamento de um pedido com base no status de envio. Ele fixa um parâmetro de ferramenta, recupera-se de uma chamada de ferramenta com falha, chama 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 você publica; você não precisa compilar nada. Atualmente, o resultado compilado fica visível como nós somente leitura na aba Workflow.
Quando a solicitação do usuário corresponde ao gatilho de um procedimento, o agente entra no procedimento e executa suas etapas em ordem. Enquanto está dentro do procedimento estruturado, o agente se concentra em cada etapa isoladamente. Ao chegar ao fim, ele retorna ao restante da conversa.
As regras a seguir descrevem como as etapas se comportam durante a 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 dentro do mesmo
turno. Uma etapa Informar ou Dizer transmite sua mensagem e continua. Não há etapa que pause a
conversa além de Perguntar, nem etapa que encerre o turno atual. Se você precisar de informações do usuário,
use uma etapa Perguntar. Se a conversa precisar terminar, 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 ele pode dizer mais. Quando um subprocesso é concluído, o controle retorna à próxima etapa do procedimento que o chamou.
Etapas Ferramenta distinguem apenas sucesso de falha
Uma etapa Ferramenta não pode criar uma ramificação 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 manipulador de falha, a conversa será encerrada. Se houver um, as etapas do manipulador serão executadas e o procedimento continuará para a próxima etapa. Uma etapa Tentar novamente dentro do manipulador executa novamente 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 continuam 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 continuará com a etapa após o Se. Um caso não tratado não é um erro.
Ramificações Se não levam o estado adiante
Nada que seja decidido dentro de uma ramificação Se é lembrado pelas etapas posteriores. Se algo aprendido em uma ramificação for necessário mais tarde, persista-o explicitamente com uma chamada de ferramenta ou uma variável dinâmica.
Etapas Perguntar, Informar e Dizer não têm ferramentas
Somente etapas Ferramenta podem chamar ferramentas. Não é necessário dizer a uma etapa Perguntar, Informar ou Dizer para não chamar ferramentas; ela não consegue.
Gerenciar um procedimento estruturado
Criar pelo painel
Gerenciar pela CLI
Gerenciar pela API
Abra seu agente no painel e selecione Procedures. 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 os procedimentos estruturados enquanto você edita. Se um procedimento violar uma regra de validação, o botão Publish exibirá um estado de erro, a aba Procedures exibirá um selo 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 são afetados.


Práticas recomendadas
Cada tipo de etapa já impõe seu próprio comportamento, então você raramente precisa especificá-lo. Escreva a intenção de cada etapa e deixe o tipo de etapa fazer o resto. As orientações abaixo abordam os casos que vale a pena acertar.
Para testar um procedimento estruturado, siga Iteração em um procedimento.
Como escolher tipos de etapa
Faça uma pergunta por etapa Ask
Uma etapa Ask espera uma resposta. Se você reunir várias perguntas em uma única instrução, o agente tende a ignorar 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 resposta. Se uma etapa precisa de uma resposta do usuário, ela é uma etapa Ask.
Dê à etapa Ask uma condição clara de saída quando apenas a pergunta 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, diga 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 mensagem por conta própria e uma etapa Say quando a redação deve ser literal ou traduzida. Ambas enviam exatamente uma mensagem, portanto não é necessário instruir uma etapa a enviar uma única mensagem.
Não diga a etapas sem ferramentas para evitar 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.
Como estruturar o procedimento
Não preencha o espaço 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 dele.
Adicione um Else quando 'nenhuma das opções acima' for importante
Uma etapa If sem Else segue para a próxima etapa quando nada corresponde. Se o caso sem correspondência precisar se comportar de forma diferente, adicione uma ramificação Else para ele.
Persista tudo de que uma etapa posterior precisa
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.
Posicione condições de expressão após a ferramenta que as preenche
Condições de expressão testam variáveis dinâmicas. Coloque uma etapa If que as utiliza logo após a etapa Tool que define essas variáveis. Para criar ramificações 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 de cada um. Sequências copiadas se distanciam com o tempo.
Como trabalhar 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 tíquete já estiver marcado _, não consegue impedir a chamada. Se a chamada nem sempre deve 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 deve 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 diga ao usuário
o que aconteceu e tente novamente, encaminhe ou continue.
Mantenha as etapas Tool restritas à chamada da ferramenta
Uma etapa Tool apenas executa a ferramenta; o agente não pode falar nem tomar uma decisão durante ela. Para falar com o usuário ou criar ramificações com base no retorno da ferramenta, coloque isso em uma etapa separada antes ou depois da etapa Tool.
Como escrever instruções
Descreva apenas a etapa atual
O procedimento controla o que é executado a seguir, e o agente não conhece as etapas posteriores enquanto executa a atual. Deixe a ordem das etapas fazer 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 que
o agente aplique um limite que a plataforma não aplica. Use uma etapa Ask para esperar pelo usuário ou
a ferramenta de sistema end_call para encerrar a conversa.
Mantenha regras globais no prompt de sistema
Tom, formatação, despedidas e políticas de recusa devem ficar no prompt de sistema. Uma instrução de etapa deve dizer apenas o que é específico daquela etapa.
Como compor procedimentos
As orientações gerais para compor procedimentos também se aplicam a procedimentos estruturados; consulte Como compor procedimentos na página de procedimentos de formato livre.
Um padrão é específico para combinar tipos: um procedimento de formato livre pode fazer referência a um estruturado. Mantenha o tratamento de situações abertas em um procedimento de formato livre e delegue as partes que precisam ser executadas da mesma forma todas as vezes, 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.
- Não é possível iniciar um procedimento estruturado a partir de um nó específico do workflow no painel.
- 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 modelo
Procedimentos estruturados forçam chamadas de ferramentas internas 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 garantí-la, 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 modelo.
Consulte Procedimentos para ver limites aplicáveis a todos os procedimentos, incluindo o limite de tamanho do conteúdo e como os procedimentos estruturados diferem dos de formato livre.