JS Code
JS Code te permite resolver con unas líneas de JavaScript lo que ningún otro componente hace exactamente como necesitas: calcular un valor, reorganizar una lista, combinar datos de varios pasos o consultar un servicio web. Lo que devuelvas con return es el resultado del componente.
También puede convertirse en una herramienta para un agente: el agente decide cuándo usarla y con qué datos, y tu código hace el trabajo.
Cuándo usarlo
- Calcular totales, descuentos o fechas de vencimiento a partir de los datos de un pedido.
- Cambiar la forma de una lista antes de enviarla a otro sistema.
- Consultar la API de un proveedor para la que no hay un componente específico.
- Dar a un agente una herramienta propia, por ejemplo “calcular el precio de envío según el peso y el destino”.
Configuración
| Campo | Qué hace |
|---|---|
| Input Data | Los datos que recibe tu código. Puede ser un mensaje, un registro o una lista. Dentro del código están en $data. |
| JavaScript Code | El código que se ejecuta. Termina con return seguido del resultado. El campo viene con ejemplos comentados de todo lo que puedes usar. |
Dentro del código tienes disponible:
| Nombre | Para qué sirve |
|---|---|
$data | Los datos de Input Data. |
$args | Los datos que envía el agente cuando el componente se usa como herramienta. |
$components | Los resultados de otros componentes del flujo, por su nombre, cuando el componente trabaja como paso del flujo. |
$env | Las variables del entorno vinculado al flujo, por ejemplo $env.URL_API_PEDIDOS. Está vacío si el flujo no tiene entorno. |
$fetch(url, opciones) | Hace una petición a un servicio web y devuelve su respuesta: si fue bien, el código de estado y el contenido. |
$tools["nombre"](datos) | Usa una herramienta conectada en Tools. |
$models["nombre"](texto) | Envía un texto a un modelo conectado en Model y devuelve su respuesta. |
$wait(milisegundos) | Espera el tiempo indicado antes de seguir. |
$log(...) | Escribe un mensaje en el registro de la ejecución, útil para revisar qué ha pasado. |
$tools y $models devuelven siempre un resultado con dos partes: result con la respuesta y error si algo falló.
Opciones avanzadas
| Campo | Qué hace |
|---|---|
| Enable Tools Input | Añade el conector Tools para que el código pueda usar herramientas. Desactivado por defecto. |
| Enable Models Input | Añade el conector Model para que el código pueda consultar modelos de lenguaje. Desactivado por defecto. |
Pestaña Tool
Estos campos se usan cuando conectas la salida Tool a un agente.
| Campo | Qué hace |
|---|---|
| Tool Name | El nombre con el que el agente ve la herramienta. Por defecto, js_tool. |
| Tool Description | Explica al agente qué hace la herramienta y cuándo usarla. Cuanto más clara, mejor la usará. |
| Tool Input Schema | Los datos que el agente debe enviar al usar la herramienta, con su nombre y tipo. Llegan al código en $args. |
| Allow update agent state | Permite que el código modifique el estado del agente que lo usa. Desactivado por defecto. |
Resultado
- Processed Data: lo que devuelve tu código con
return. Conéctalo al siguiente paso del flujo. - Tool: el componente como herramienta, para conectarlo a un agente.
Usas una salida u otra: al conectar una, la otra se oculta.
Ejemplo
Una tienda quiere calcular el total con IVA de cada pedido antes de generar la factura.
-
Conecta el pedido a Input Data.
-
En JavaScript Code, escribe:
const base = $data.lineas.reduce((suma, l) => suma + l.precio * l.cantidad, 0);return { pedido: $data.id, base, total: Math.round(base * 1.21 * 100) / 100 }; -
Conecta Processed Data al componente que genera la factura.
Buenas prácticas
- Empieza con
return $data;para ver qué recibe el componente y escribe el código a partir de ahí. - Para probar las herramientas conectadas, devuelve
$tools: verás las disponibles y qué datos esperan. Conreturn $env;ves las variables del entorno. - No escribas tokens ni contraseñas en el código: guárdalos como variables secretas del entorno y léelos con
$env. - Hay un límite de llamadas a servicios web, herramientas y modelos por ejecución, y un tiempo máximo de ejecución.
Componentes relacionados
- Python Code: lo mismo, escribiendo en Python.
- Environment Variable: lee una variable del entorno sin escribir código.
- API Request: consulta un servicio web sin escribir código.