Flujos / JevModel
Clasificación de texto en Airtable: etiqueta registros automáticamente con una automatización Run a script y Jev
Clasifica un campo de texto largo en Airtable sin salir de la base: lanza una automatización cuando un registro cumple condiciones, llama a JevModel desde una acción Run a script con fetch() y escribe en el registro el label, su probabilidad y una marca de revisión. Incluye secretos, límites de scripts de Airtable, una vía de relleno con CSV y Batch, pruebas y cuándo conviene más una herramienta no-code.
Última actualización:
Respuesta breve: una acción de script, una petición por registro
- Las automatizaciones de Airtable no tienen una acción genérica de “enviar petición HTTP”, así que las APIs de IA externas se llaman desde una acción Run a script con fetch(). Lánzala con “When a record matches conditions” (texto no vacío, categoría vacía), pasa el ID del registro y el texto como variables de entrada y guarda la clave en un secreto de Airtable leído con input.secret().
- El script envía solo el texto a /api/v1/systemone de JevModel con un Choice de 2–12 categorías que tú defines y luego, con table.updateRecordAsync(), escribe el label elegido en un campo de selección única, la probabilidad en un campo numérico y marca una casilla de revisión ante probabilidades bajas, other o errores.
- Airtable documenta límites por ejecución de script, entre ellos 50 peticiones fetch y un tiempo de espera de 30 segundos por fetch, y la acción no está disponible en las pruebas del plan Team. Cada registro etiquetado es una petición Jev normal cobrada en tokens; las cuentas verificadas empiezan con 100.000 tokens gratis. Para registros existentes, exporta un CSV y usa Console → Batch (50 filas por lote antes de comprar, 1.000 después).
¿Cómo se ve la clasificación de texto en Airtable?
Las bases de Airtable suelen acumular texto libre que alguien ordena a mano: envíos de formularios, peticiones de clientes, feedback, solicitudes a un programa, ideas de contenido. Clasificar significa leer el texto de un campo de texto largo y rellenar una categoría de una lista corta y fija, para que vistas, filtros y la siguiente automatización funcionen sin que una persona lea antes cada fila. Una tabla práctica necesita cuatro campos: el texto de origen (Long text), Category (selección única con opciones idénticas a tus IDs de label, por ejemplo billing, bug, feature_request, other), Confidence (número con dos decimales) y Needs review (casilla). Mantén la lista corta y excluyente e incluye siempre other, para que el modelo tenga un destino honesto para el texto que no encaja. Si la urgencia también importa, pregúntala aparte como sí/no en lugar de añadir urgent a la lista; mezclarlas empeora ambas respuestas. Esta guía cubre una categoría por registro. Si un registro puede pertenecer a varias a la vez, usa un campo de selección múltiple y lee antes la guía multi-label.
Clasificación de comentarios de clientes: un tema, una prioridad y por qué el sentimiento no bastaRoute customer support with JevChoice, Score, and Noul¿Cómo se configura la automatización de Airtable paso a paso?
Cinco pasos. 1) Crea los cuatro campos anteriores y añade cada ID de label como opción de selección única antes de la primera ejecución; el script escribe la opción por nombre, así que los nombres deben coincidir. 2) En Automations, crea una automatización con el trigger “When a record matches conditions” y dos condiciones: el campo de texto no está vacío y Category está vacío. Se dispara cuando un registro entra en ese estado, por ejemplo al llegar un envío de formulario, y escribir Category saca al registro de la condición, así que la automatización no entra en bucle con su propia actualización. 3) Añade la acción “Run a script”. En la barra lateral de variables de entrada, añade recordId asignado al ID de registro de Airtable del trigger y text asignado al campo de texto. 4) Crea una clave de API de JevModel en Console → API keys con una cuenta de email verificado y añádela en la pestaña Secrets del editor como JEVMODEL_API_KEY; el script la lee con input.secret("JEVMODEL_API_KEY"). Airtable limita la edición de scripts con secretos a quien puede acceder a ellos y oculta los secretos en la salida de consola. 5) Prueba la acción con un registro de ejemplo, revisa el historial y el registro de ejecución, y luego activa la automatización. Si falla la llamada a Jev, deja Category vacío y marca Needs review, para que un error temporal nunca etiquete mal un registro.
JevModel API: request and responseYour first Jev decision¿Qué límites de Airtable y JevModel debes prever?
Del lado de Airtable, el centro de ayuda enumera los límites de la acción Run a script: un tiempo máximo de script documentado de 30 segundos (ampliado temporalmente a 120 segundos al escribir esto), 30 segundos por fetch, 12 segundos para llamadas a la API de scripting, 512 MB de memoria, 50 peticiones fetch y 30 consultas selectRecords por ejecución, y hasta 15 mutaciones por segundo, cada una de hasta 50 registros. La acción está disponible en todos los planes con distintas limitaciones, pero no durante una prueba del plan Team. Un registro por ejecución, como en el ejemplo, queda muy por debajo. Del lado de JevModel, la petición completa (state más questions) debe caber en 8.000 caracteres, así que recorta el texto largo antes de enviarlo; el ejemplo conserva los primeros 6.000. Una petición puede hacer de 1 a 8 preguntas; un Choice tiene de 2 a 12 opciones cuyos IDs empiezan por minúscula y solo usan minúsculas, dígitos y guiones bajos, y un Score tiene de 2 a 10 niveles ordenados. No hay campo model ni clave de idempotencia: si vuelves a ejecutar la automatización sobre un registro, es una petición nueva y se cobra otra vez. Las ejecuciones fallidas se reembolsan. Cada registro etiquetado es una petición normal a la API cobrada en tokens de tu saldo; las cuentas verificadas empiezan con 100.000 tokens gratis y los paquetes de pago están en la página de precios.
JevModel pricing and free Jev runsJevModel API: request and responseComparación: Run a script vs herramienta no-code vs exportar CSV a Batch
Las tres envían la misma pregunta Jev; cambia dónde vive la lógica y cómo vuelven los resultados a la base. La tabla compara la forma del flujo, no la precisión, y ninguna fila es un benchmark.
Clasificación de texto en Zapier: AI by Zapier Classify vs Vertex Classify Text vs HTTP → JevCategorize Text en Make.com: AI Toolkit vs HTTP → Jev para labels tipados y umbralesBatch text classification with the JevModel API| Dimensión | Run a script de Airtable → Jev | Herramienta no-code (Zapier, Make, n8n…) | Exportar CSV → Console → Batch |
|---|---|---|---|
| Dónde corre | Dentro de la base, como acción de automatización | En la herramienta, con su trigger y acciones de Airtable | En el navegador, una vez |
| Tiempo | Poco después de que el registro cumpla las condiciones | Depende del sondeo o webhook de la herramienta | A posteriori, para lo acumulado |
| Escribir resultados | table.updateRecordAsync() en el mismo script | Un paso de “actualizar registro” en la herramienta | Reimportar o pegar las respuestas exportadas |
| Salida de Jev | Label Choice con probabilidades | La misma respuesta, mapeada por la herramienta | Respuestas por fila (50 filas por lote antes de comprar, 1.000 después) |
Ejemplo de código: clasificar un registro y escribir el label (ilustrativo)
Pega el script en la acción Run a script y cambia la tabla, los campos y las definiciones de labels por los de tu base. La petición sigue el contrato documentado de JevModel: POST /api/v1/systemone con una clave Bearer de una cuenta verificada, un state y preguntas con nombre, aquí un Choice llamado category; una respuesta correcta trae code 0 y data.answers. No hay campo model porque el sitio siempre llama a typesafe/jev-1.13 vía OpenRouter; JevModel es independiente de TypeSafe AI, que desarrolla Jev. El script envía solo el texto, no nombres, emails ni otras columnas. Un valor de selección única se escribe como objeto con name, y esa opción ya debe existir en el campo. Los registros bajo el umbral de ejemplo, los etiquetados other y las llamadas fallidas reciben Needs review, así que una vista filtrada por esa casilla se convierte en la cola humana. 0,7 es un marcador; elige tu umbral con una muestra etiquetada.
JevModel API: request and responseChoice, Score, and NoulJev probability, confidence and human-review thresholds// Illustrative only. Airtable automation → "Run a script" action.
// Input variables: recordId (Airtable record ID from the trigger), text (the long-text field).
// Secret: JEVMODEL_API_KEY (Secrets tab in the script editor).
// Fields: Category (single select), Confidence (number), Needs review (checkbox).
const { recordId, text } = input.config();
const table = base.getTable("Requests");
const res = await fetch("https://jevmodel.app/api/v1/systemone", {
method: "POST",
headers: {
Authorization: "Bearer " + input.secret("JEVMODEL_API_KEY"),
"Content-Type": "application/json",
},
body: JSON.stringify({
// The whole request must stay within 8,000 characters.
state: { text: String(text || "").slice(0, 6000) },
questions: {
category: {
type: "choice",
instructions: "Which team should handle this request submitted through our form?",
criteria: {
billing: "Invoices, payments, refunds, or plan changes.",
bug: "Something is broken, shows an error, or behaves unexpectedly.",
feature_request: "Asks for something the product does not do yet.",
other: "Anything that fits none of the labels above.",
},
},
},
}),
});
const out = await res.json();
if (out.code !== 0) {
// Leave Category empty and hand the record to a person.
await table.updateRecordAsync(recordId, { "Needs review": true });
console.log("Jev call failed: " + out.message);
} else {
const { choice, probabilities } = out.data.answers.category;
const p = probabilities ? probabilities[choice] : 0;
await table.updateRecordAsync(recordId, {
Category: { name: choice }, // the option must already exist in the field
Confidence: p,
"Needs review": p < 0.7 || choice === "other", // 0.7 is a placeholder
});
}
¿Cómo pruebas los labels y tratas los registros existentes?
Empieza con registros cuya categoría ya conoce una persona. Exporta unos cientos como CSV con el texto y el label humano, sube el texto a JevModel Console → Batch con la misma pregunta Choice y exporta las respuestas por fila. Luego compara ambas columnas por label en una hoja de cálculo; Batch no calcula la precisión por ti. Mira qué pares se confunden y cómo cambia la concordancia al subir el umbral de probabilidad, reescribe las definiciones vagas y repite con la misma muestra antes de activar la automatización. Esa misma vía CSV es la forma más sencilla de etiquetar lo acumulado: la automatización solo se dispara con registros que empiezan a cumplir sus condiciones, y un script que recorre muchos registros en una ejecución choca enseguida con el límite de 50 fetch. Tras el lanzamiento, mantén una vista filtrada por Needs review y ordenada por Confidence, y revisa cada semana la proporción de other; si crece, la lista de categorías ya no refleja lo que la gente envía. No dejes que un label borre, oculte ni envíe emails hasta medir cuánto se equivoca, y mantén editable el campo para que las personas lo corrijan.
Evaluate a Jev workflowJev probability, confidence and human-review thresholdsClasificación de texto en Google Sheets: la función =AI() vs Apps Script → API Jev¿Qué configuración elegir para Airtable?
Elige la acción Run a script cuando el trabajo ocurre en la base, puedes editar un script corto y tu plan incluye la acción. Elige una herramienta no-code si ya ejecuta tus otras automatizaciones o si el mismo texto también debe llegar a Slack, email o un CRM; las guías de Zapier, Make, n8n, Power Automate y Pipedream muestran la misma petición Jev en cada una. Elige CSV y Console → Batch para lo acumulado de una vez o para probar definiciones antes de que exista ninguna automatización. Si tus datos están en Google Sheets y no en Airtable, la guía de Google Sheets cubre el mismo patrón con Apps Script. Lista para cualquiera: 1) define labels con un other explícito; 2) deja la urgencia como pregunta sí/no aparte; 3) envía solo el texto y recórtalo por debajo del límite de 8.000 caracteres; 4) deja vacía la categoría y marca el registro si falla la llamada; 5) empieza con labels y una vista de revisión, y añade acciones posteriores solo tras medir la concordancia en una muestra etiquetada. JevModel es solo texto y no es de código abierto; adjuntos, imágenes y audio de Airtable no se clasifican con esta configuración.
Clasificación de texto multietiqueta: un Choice, varias preguntas sí/no o una segunda pasadaNodo Text Classifier de n8n: integrado vs llamar a Jev desde un flujoClasificación de texto en Power Automate: modelos AI Builder vs HTTP → JevClasificación de texto en Pipedream: acción Hugging Face vs HTTP → Jev¿Jev es un modelo multimodal o descargable? Qué es realmente JevModelPreguntas frecuentes
¿Puede una automatización de Airtable llamar a una API de IA sin script?
No a una API arbitraria. El centro de ayuda de Airtable indica que las automatizaciones no incluyen una acción genérica de “enviar petición HTTP”; las llamadas salientes se hacen con fetch() dentro de Run a script. Sin escribir código, usa una herramienta no-code como Zapier, Make o n8n con su trigger de Airtable y un paso HTTP.
¿Por qué usar “When a record matches conditions” y no “When a record is created”?
Un registro creado a mano en la cuadrícula puede nacer vacío y recibir el texto un momento después, así que un trigger de creación puede enviar un campo vacío. Exigir “texto no vacío y Category vacío” espera a que haya algo que clasificar, y rellenar Category saca al registro de la condición, de modo que no se envía otra vez.
¿Cómo etiqueto miles de registros existentes de Airtable?
Exporta una vista a CSV, procésala en JevModel Console → Batch con la misma pregunta Choice (50 filas por lote antes de comprar, 1.000 después) e importa las respuestas por ID de registro. La automatización está pensada para registros nuevos; una ejecución permite 50 peticiones fetch, así que recorrer una tabla grande en una ejecución no escala.
¿Cuánto cuesta clasificar registros de Airtable con Jev?
Cada registro clasificado es una petición normal a la API cobrada en tokens de tu saldo de JevModel; las cuentas verificadas empiezan con 100.000 tokens gratis, y varias preguntas en una misma petición se cobran juntas. Texto corto y una petición por registro mantienen bajo el uso. Las ejecuciones de automatización cuentan aparte en tu plan de Airtable. Consulta la guía de precios para los paquetes actuales.
JevModel es independiente y no está afiliado a TypeSafe AI.