Search

Jump to a page or agent

Configure

Procedures

Instrucciones por tarea, que el agente sigue cuando su disparador coincide.

Un procedure son las instrucciones de una tarea concreta, que el agente sigue cuando su disparador coincide en vez de reconstruirlas desde el prompt en cada llamada. Se administran en Procedures, dentro de cada agente.

Por qué no es simplemente más prompt

Un system prompt largo funciona bien mientras el agente hace una cosa. Cuando hace ocho, empieza a competir consigo mismo: las instrucciones de devoluciones estorban a las de facturación, y las dos se pagan en cada turno aunque la conversación no vaya de ninguna de las dos.

Un procedure separa las dos cosas. El catálogo —el nombre y el disparador de cada uno— sí viaja en el prompt, porque es lo que el agente lee para decidir cuál aplica. El cuerpo no: se carga solo cuando entra.

Los dos tipos

Se elige al crearlo y no se puede cambiar después, porque cada uno guarda algo distinto.

Libre es Markdown que el agente interpreta y adapta. Sirve cuando el orden importa poco y quieres que module el tono según la conversación. Es una instrucción, no una garantía: el prompt le dice que siga el que coincida sin improvisar su propia versión, y normalmente lo hace.

Estructurado es una lista de pasos que el runtime ejecuta. Ahí "no improvisa" deja de ser una instrucción y pasa a ser el mecanismo: el orden lo decide el intérprete, no el modelo.

Lo que sigue siendo un juicio del modelo, en los dos casos, es si entra. Cuál procedure aplica es una pregunta sobre lo que quiso decir una persona, y no hay forma de hacer eso determinista.

El disparador

Descríbelo como lo diría quien escribe, no como lo llamas internamente: «quiere devolver algo que compró» funciona mejor que «flujo RMA».

Dejarlo vacío tiene un significado propio: el procedure pasa a ser un sub-procedure, alcanzable solo desde el cuerpo de otro y nunca por sí solo. Es la forma de tener un trozo compartido —verificar identidad, por ejemplo— sin que el agente lo elija por su cuenta.

Modo

A demanda es el normal: el cuerpo se carga cuando el disparador coincide.

Siempre en el prompt mete el cuerpo entero en cada turno, se use o no. Es útil para algo que aplica a toda conversación, y es la opción que cuesta tokens en cada llamada — el carril marca esos procedures con una etiqueta por esa razón.

Los pasos de un procedure estructurado

Cada tipo de paso cuesta algo distinto, y esa es la razón de que haya varios en lugar de uno:

PasoQué haceCoste
Texto exactoEmite unas palabras tal cualCero llamadas al modelo
DiCuenta algo, con sus propias palabrasUna llamada
PreguntaPregunta y termina el turno, esperando respuestaUna llamada
HerramientaEjecuta una herramienta concretaUna llamada
SiRamifica según una condiciónCero, o una si la juzga el modelo
Sub-procedureEntra en otro procedureCero

Texto exacto es el único que garantiza las palabras, precisamente porque no pasa por el modelo. Si necesitas una frase legal literal, ese es el paso.

Referencias dentro del cuerpo

En un procedure libre puedes apuntar a otros recursos por id:

[tool id="..."]        una herramienta
[kb id="..."]          un documento de la base de conocimiento
[procedure id="..."]   otro procedure

Y a variables dinámicas con {{nombre}}.

Límites

Hasta 64 procedures por agente. No es un límite de la base de datos: el catálogo se renderiza en el prompt de cada turno y el modelo tiene que elegir entre las entradas. Pasado ese punto la respuesta honesta deja de ser una lista más larga y pasa a ser un workflow.

El cuerpo admite hasta 50 000 caracteres y el disparador 1 000.

Borrar

Es un borrado suave. El cuerpo de otro procedure puede seguir apuntando a este con [procedure id="..."], y «ese procedure ya no existe» es mejor respuesta que un uuid que nadie puede consultar.