Procedimientos estructurados
Descripción general
Un procedimiento estructurado es un procedimiento que ejecuta una secuencia fija de pasos. Un procedimiento de formato libre ofrece indicaciones en lenguaje natural que el agente interpreta y adapta a la situación. Un procedimiento estructurado es una lista ordenada de pasos tipados que el agente ejecuta en orden cada vez que se aplica el procedimiento.
Usa un procedimiento estructurado cuando determinados pasos deban realizarse de la misma forma en cada llamada: verificar la identidad de quien llama, escalar un ticket o procesar un pago. Lo creas como una breve lista de pasos en lenguaje sencillo.
Como todos los procedimientos, un procedimiento estructurado tiene un activador que describe cuándo se aplica. Cuando una conversación coincide con el activador, el agente ejecuta los pasos del procedimiento en orden y luego vuelve al resto de la conversación.

Cuándo usar un procedimiento estructurado
Usa un procedimiento estructurado cuando determinados pasos deban ejecutarse siempre de la misma forma, pero quieras crearlo rápidamente con pasos sencillos. Los procedimientos estructurados son más fáciles de escribir que un workflow, pero menos expresivos. Para saber cómo se comparan con los procedimientos de formato libre, los workflows y el prompt del sistema, consulta Cuándo usar procedimientos.
Anatomía de un procedimiento estructurado
Un procedimiento estructurado tiene tres partes: un nombre, un activador y una lista ordenada de pasos.
Nombre
Una etiqueta breve que identifica el procedimiento en el panel de control. El nombre nunca se envía al LLM, por lo que no afecta al comportamiento del agente.
Activador
Una descripción en lenguaje sencillo de cuándo debe ejecutar el agente este procedimiento; por ejemplo, Cuando el usuario pide reembolsar un pedido. El agente compara la intención del usuario con el activador de cada procedimiento y ejecuta el que coincide, por lo que los activadores deben ser concretos y diferenciados. El agente solo ve el texto del activador, nunca el nombre ni el ID del procedimiento. Un activador funciona igual que en cualquier procedimiento; consulta Escribir activadores.
Deja el activador vacío para convertir el procedimiento en un subprocedimiento que solo se ejecuta cuando otro procedimiento lo llama.
Pasos
El cuerpo del procedimiento es una lista ordenada de pasos tipados. Hay varios tipos de pasos, que puedes combinar para describir la tarea.

No todos los pasos pueden aparecer en cualquier lugar. Dentro de una rama Si, puedes usar cualquier paso excepto otro Si o un Reintentar. Dentro del controlador de errores de un paso Herramienta, puedes usar cualquier paso excepto un Si u otra Herramienta.
Referencia de pasos de la API
El content de un procedimiento estructurado es un documento codificado en JSON que contiene un array steps. Cada paso es un objeto identificado por su type. El activador es un campo independiente de nivel superior en el procedimiento, no forma parte de content. Las cargas útiles de la API y el SDK usan type: "deterministic" para el procedimiento en sí.
Preguntar
Un paso Preguntar indica al agente que solicite información y espere hasta que el usuario proporcione una respuesta adecuada.
- Tipo de API:
ask instruction: Cadena obligatoria no vacía.
Contar
Un paso Contar indica al agente que genere un único mensaje con sus propias palabras. No espera una respuesta del usuario antes de continuar.
- Tipo de API:
tell instruction: Cadena obligatoria no vacía.
Decir
Un paso Decir pronuncia el texto proporcionado exactamente como está escrito y luego continúa. Proporciona message_translations para dar al agente un mensaje exacto para cada idioma adicional que admita, identificado mediante el código de idioma.
- Tipo de API:
say message: Cadena obligatoria no vacía.message_translations: Objeto opcional que asigna un código de idioma a{ "value": "..." }.
Si, si no si y si no
Un paso Si contiene una o más ramas condicionales ordenadas. Se ejecuta la primera rama que coincide. El array fallback opcional es la rama Si no.
- Tipo de API:
branch branches: Lista obligatoria no vacía de ramas condicionales.fallback: Lista opcional de pasos Si no.- Cada rama requiere una
conditiony una listastepsno vacía.
Esto funciona como if/else-if/else:
- Las condiciones se evalúan en orden.
- Se ejecuta la primera rama que coincide.
- Si no coincide ninguna condición, se ejecuta
fallback. - Tras terminar una rama, el procedimiento vuelve a unirse a la secuencia principal.
El ejemplo anterior usa una condición de texto, que el modelo evalúa en lenguaje natural. Las condiciones también pueden ser expresiones sobre variables dinámicas:
Una condición de expresión comprueba variables dinámicas, que se rellenan con resultados de herramientas o se establecen al iniciar la conversación. No puede leer la respuesta más reciente del usuario. Para crear una rama según lo que haya dicho el usuario, usa una condición de texto.
Todas las ramas de un mismo paso Si deben usar el mismo tipo de condición: llm o expression.
Herramienta
Un paso Herramienta llama a una herramienta específica.
- Tipo de API:
tool_call tool_id: ID de herramienta obligatorio no vacío. La herramienta debe estar vinculada al agente.tool_name: Nombre de herramienta obligatorio que coincide con la herramienta.instruction: Instrucción opcional que describe cómo llamar a la herramienta.schema_overrides: Valores fijos opcionales para los parámetros de la herramienta.on_failure: Controlador de errores opcional.
Valores de parámetros fijos
Usa schema_overrides cuando un parámetro deba tener siempre un valor específico. El modelo no ve ni elige un parámetro sobrescrito. Las claves son rutas de parámetros en el esquema de la herramienta; cada valor indica una fuente:
Gestión de errores
Sin on_failure, una llamada a herramienta fallida finaliza la conversación. Añade on_failure para ejecutar pasos de recuperación en su lugar.
fallback: Lista obligatoria no vacía de pasos que se ejecutan cuando falla la herramienta.branches: Reservado para la gestión condicional de errores. Déjalo vacío.
Un controlador de errores puede contener pasos Preguntar, Contar, Decir, Subprocedimiento, Herramienta del sistema y Reintentar. No puede contener pasos Herramienta ni Si. Después de ejecutar el controlador, el procedimiento continúa con el paso posterior al paso Herramienta.
Reintentar
Un paso Reintentar vuelve a ejecutar el controlador de errores que lo contiene, incluida la llamada a la herramienta. Cada intento vuelve a llamar a la herramienta y, si vuelve a fallar, ejecuta de nuevo todos los pasos del controlador. Cuando se agotan los intentos, finaliza la conversación.
- Tipo de API:
retry max_retries: Entero opcional de 1 a 3. El valor predeterminado es 1.- El valor cuenta los intentos posteriores a la llamada original a la herramienta.
- Reintentar solo es válido dentro de
on_failure. - Reintentar debe ser el paso final de su controlador de errores porque los pasos posteriores no serían accesibles.
Subprocedimiento
Un paso Subprocedimiento ejecuta otro procedimiento estructurado. Cuando terminan los pasos de ese procedimiento, la ejecución vuelve al paso posterior al paso Subprocedimiento.
- Tipo de API:
sub_procedure procedure_id: ID de procedimiento obligatorio no vacío.- El destino debe existir en el mismo agente.
- El destino debe ser un procedimiento estructurado.
- Un procedimiento no puede invocarse a sí mismo.
Herramienta del sistema
Un paso Herramienta del sistema realiza una acción integrada del sistema.
- Tipo de API:
system_tool system_tool_name: Nombre de herramienta del sistema obligatorio.- Actualmente, solo se admite
end_call. Es posible que se añadan más herramientas del sistema más adelante. - Como
end_calles terminal, debe ser el paso final de la secuencia, rama o controlador de errores que lo contiene.
Reglas de validación
Al publicar el agente o guardar su borrador, se rechaza cualquier procedimiento estructurado que incumpla alguna de estas reglas. El error identifica el paso problemático por su ruta.
- No se pueden colocar dos pasos Si seguidos.
- Los pasos Si no pueden anidarse.
- Un paso Si con condiciones de expresión no puede seguir directamente a un paso Preguntar.
- Todas las condiciones de un mismo paso Si deben ser del mismo tipo:
llmoexpression. - Reintentar solo puede aparecer dentro de
on_failurey debe ser el último paso allí. end_calldebe ser el último paso de cualquier lista en la que aparezca.- El
fallbackde un controlador de errores debe contener al menos un paso. - Un Subprocedimiento debe apuntar a un procedimiento estructurado existente en el mismo agente y no a sí mismo.
tool_iddebe ser una herramienta del agente,tool_namedebe coincidir yschema_overridesdebe coincidir con el esquema de la herramienta.- La lista
steps, cadainstructiony cadamessageno pueden estar vacíos.
Para saber cómo reestructurar un procedimiento que incumple una de estas reglas, consulta Buenas prácticas.
Ejemplo completo de API
Este ejemplo gestiona la cancelación de un pedido según el estado del envío. Fija un parámetro de herramienta, se recupera de una llamada a herramienta fallida, invoca otro procedimiento estructurado y después finaliza la llamada.
Cómo se ejecuta un procedimiento estructurado
Convertir los pasos de un procedimiento estructurado a la forma que ejecuta el agente se llama compilación. La plataforma compila todos los procedimientos estructurados al guardar el borrador del agente o publicar el agente; los autores nunca tienen que compilar nada por su cuenta.
Cuando la solicitud del usuario coincide con el activador de un procedimiento, la plataforma entra en el procedimiento y ejecuta sus pasos en orden. Mientras está dentro del procedimiento estructurado, el agente se centra en cada paso de forma aislada. Cuando llega al final, la plataforma devuelve el control al resto de la conversación.
Las conexiones de workflow no pueden conectarse a un procedimiento estructurado ni salir de él. Usa un paso Subprocedimiento para encadenar procedimientos estructurados. La plataforma gestiona la entrada desde un activador coincidente y la finalización, incluido el retorno del control al nodo del workflow donde comenzó el procedimiento.
Las siguientes reglas describen cómo se comportan los pasos en tiempo de ejecución.
Solo Preguntar espera al usuario
Todos los pasos excepto Preguntar se ejecutan de inmediato, y el control pasa al siguiente paso dentro del mismo
turno. Un paso Contar o Decir transmite su mensaje y continúa. No hay ningún paso que pause la
conversación aparte de Preguntar, ni ningún paso que finalice el turno actual. Si necesitas la
información del usuario, usa un paso Preguntar. Si la conversación debe terminar, usa la herramienta del sistema end_call.
Llegar al final de un procedimiento no finaliza el turno
Cuando termina el último paso, el procedimiento finaliza y el agente vuelve al resto de la conversación con el turno aún abierto, por lo que puede decir más cosas. Cuando termina un subprocedimiento, el control vuelve al siguiente paso del procedimiento que lo llamó.
Los pasos Herramienta solo distinguen entre éxito y error
Un paso Herramienta no puede crear ramas según un código de estado ni según el cuerpo de la respuesta. Si la herramienta tiene éxito, el procedimiento continúa. Si falla y el paso no tiene controlador de errores, la conversación termina. Si tiene uno, se ejecutan los pasos del controlador y el procedimiento continúa con el siguiente paso. Un Reintentar dentro del controlador vuelve a ejecutar la herramienta y, si vuelve a fallar, todos los pasos del controlador, hasta que la herramienta tiene éxito o se agotan los intentos. Si se agotan, la conversación termina.
Los pasos Si continúan cuando no hay coincidencias
Las condiciones se evalúan en orden y se ejecuta la primera coincidencia. La rama Si no se ejecuta cuando no hay ninguna coincidencia. Si no hay Si no y no hay coincidencias, el procedimiento continúa con el paso posterior al Si. Un caso no controlado no es un error.
Las ramas Si no trasladan el estado hacia adelante
Ninguna decisión tomada dentro de una rama Si se recuerda en pasos posteriores. Si se necesita más adelante algo aprendido en una rama, guárdalo explícitamente con una llamada a herramienta o una variable dinámica.
Los pasos Preguntar, Contar y Decir no tienen herramientas
Solo los pasos Herramienta pueden llamar a herramientas. No es necesario indicar a un paso Preguntar, Contar o Decir que no llame a herramientas; no puede hacerlo.
Gestionar un procedimiento estructurado
Crear desde el panel de control
Gestionar desde la CLI
Gestionar mediante la API
Abre tu agente en el panel de control y selecciona Procedimientos. Usa + para crear un procedimiento estructurado. Añade un activador, selecciona un tipo para cada paso y publica los cambios del agente.
El panel de control valida los procedimientos estructurados mientras los editas. Si un procedimiento incumple una regla de validación, el botón Publicar muestra un estado de error, la pestaña Procedimientos muestra una insignia de error y la vista previa no puede iniciarse hasta que se corrija el procedimiento. Selecciona el indicador de error para ver qué procedimiento y paso se han visto afectados.


Buenas prácticas
Cada tipo de paso ya aplica su propio comportamiento, así que rara vez necesitas especificarlo. Describe la intención de cada paso y deja que el tipo de paso se encargue del resto. Las indicaciones siguientes cubren los casos que conviene definir bien.
Para probar un procedimiento estructurado, sigue Iterar en un procedimiento.
Elegir tipos de paso
Haz una pregunta por cada paso Ask
Un paso Ask espera una respuesta. Si agrupas varias preguntas en una sola instrucción, el agente suele omitir algunas o combinarlas. Usa un Ask por cada dato que necesites.
Usa Tell para afirmaciones y Ask para preguntas
Un paso Tell transmite su mensaje y continúa sin esperar. Un Tell formulado como pregunta nunca recibe respuesta. Si un paso necesita una respuesta del usuario, es un Ask.
Da a un Ask una condición de salida clara cuando la pregunta no sea suficiente
Un paso Ask avanza cuando recibe una respuesta adecuada. Si no queda claro por la pregunta qué se considera una respuesta, indícalo en la instrucción; por ejemplo, _Pide el ID del pedido; un ID válido tiene ocho dígitos _.
Elige Tell para la formulación y Say para las palabras exactas
Usa un paso Tell cuando el agente deba redactar el mensaje por sí mismo y un paso Say cuando la formulación deba ser literal o traducida. Ambos envían exactamente un mensaje, así que no hace falta indicar a un paso que envíe un único mensaje.
No indiques a los pasos sin herramientas que eviten usar herramientas
Los pasos Ask, Tell y Say no pueden llamar a herramientas. Escribir no llames a ninguna herramienta en ellos añade ruido a la instrucción sin cambiar el comportamiento.
Estructurar el procedimiento
No añadas relleno entre dos pasos If
No se pueden colocar dos pasos If seguidos. Insertar un Tell o Say sin relación entre ellos para cumplir la regla hace que el agente diga algo que no debería. En su lugar, integra la segunda decisión en el primer If como ramas Else if adicionales, o muévela a un subprocedimiento.
Incluye las decisiones anidadas en un subprocedimiento
Los pasos If no se pueden anidar. Cuando una decisión depende de otra, coloca la decisión interna en su propio procedimiento estructurado y llámalo con un paso Sub-procedure desde la rama que lo necesite.
Añade un Else cuando importe «ninguna de las anteriores»
Un paso If sin Else continúa al paso siguiente cuando no hay ninguna coincidencia. Si el caso sin coincidencia debe comportarse de otra manera, añade una rama Else para él.
Conserva todo lo que necesite un paso posterior
Las decisiones tomadas dentro de una rama If no se recuerdan después. Si un paso posterior depende de algo aprendido en una rama, regístralo con una llamada a herramienta o una variable dinámica dentro de la rama.
Coloca las condiciones de expresión después de la herramienta que las rellena
Las condiciones de expresión prueban variables dinámicas. Coloca un paso If que las use justo después del paso Tool que establece esas variables. Para bifurcar según lo que haya dicho el usuario, usa una condición de texto.
Extrae los pasos compartidos a un subprocedimiento
Cuando varios procedimientos estructurados comparten la misma secuencia, como escalar a una persona, inclúyela en un procedimiento estructurado con un desencadenante vacío y llámalo desde cada uno. Las secuencias copiadas acaban divergiendo con el tiempo.
Trabajar con herramientas
Controla un paso Tool con un If, no con su instrucción
Un paso Tool siempre llama a su herramienta. Una condición escrita en la instrucción, como _omite esto si el ticket ya está etiquetado _, no puede impedir la llamada. Si la llamada no debe producirse siempre, coloca la condición en un paso If antes del paso Tool.
Fija los valores de los parámetros en lugar de describirlos
Cuando un parámetro deba tener siempre un valor específico, establécelo con una sobrescritura constant en
schema_overrides. Una instrucción como establece siempre el estado como pendiente pide al modelo que
cumpla la indicación; una sobrescritura se aplica y no se puede omitir.
Da a cada paso Tool un controlador de errores
Sin on_failure, cualquier error de una herramienta finaliza la conversación. Añade un controlador que indique al usuario
qué ha ocurrido y vuelva a intentarlo, escale o continúe.
Limita los pasos Tool a la llamada a la herramienta
Un paso Tool solo ejecuta la herramienta; el agente no puede hablar ni tomar una decisión durante él. Para hablar con el usuario o bifurcar según lo que haya devuelto la herramienta, colócalo en un paso independiente antes o después del paso Tool.
Redactar instrucciones
Describe solo el paso actual
El procedimiento controla lo que se ejecuta después, y el agente no conoce los pasos posteriores mientras ejecuta el actual. Deja que el orden de los pasos se encargue de la secuencia.
No intentes terminar el turno con texto
Las frases escritas en las instrucciones del paso, como este es el último mensaje de este turno, piden
al agente que aplique un límite que la plataforma no aplica. Usa un paso Ask para esperar al usuario o
la herramienta del sistema end_call para finalizar la conversación.
Mantén las reglas globales en el prompt del sistema
El tono, el formato, las despedidas y las políticas de rechazo deben estar en el prompt del sistema. La instrucción de un paso debe indicar solo lo específico de ese paso.
Combinar procedimientos
Las indicaciones generales para combinar procedimientos también se aplican a los procedimientos estructurados; consulta Combinar procedimientos en la página de procedimientos de formato libre.
Hay un patrón específico para combinar tipos: un procedimiento de formato libre puede hacer referencia a uno estructurado. Mantén la gestión abierta en un procedimiento de formato libre y delega las partes que deben ejecutarse siempre de la misma forma, como la verificación de identidad o la escalada, a un procedimiento estructurado.
Limitaciones
- Los pasos If no se pueden anidar ni se pueden colocar dos pasos If seguidos.
- La única herramienta del sistema compatible es
end_call. - Los procedimientos estructurados no pueden hacer referencia a documentos de la base de conocimientos.
- No hay forma de finalizar el turno actual cuando se completa un procedimiento; el agente mantiene el turno abierto y puede seguir hablando.
- Las aristas del workflow no pueden conectarse a un procedimiento estructurado ni partir de él. Usa un paso Sub-procedure para encadenar procedimientos estructurados; la plataforma gestiona la entrada y la finalización.
- Iniciar un procedimiento añade latencia: el agente hace una llamada a herramienta para entrar en él y después avanza por el workflow generado.
Compatibilidad con proveedores de modelos
Los procedimientos estructurados fuerzan llamadas a herramientas internas al entrar en un subprocedimiento y al completar un procedimiento. Las principales familias de modelos de OpenAI, Anthropic, Gemini y Grok admiten la selección forzada de herramientas. Es posible que otros modelos o proveedores personalizados no lo garanticen, lo que puede hacer menos fiables las transiciones a subprocedimientos o la finalización de procedimientos. Verifica que se admita la selección forzada de herramientas al usar otro proveedor de modelos.
Consulta Procedimientos para conocer los límites aplicables a todos los procedimientos, incluido el límite de tamaño del contenido y en qué se diferencian los procedimientos estructurados de los de formato libre.