Comparativas / JevModel

Clasificación de texto en Google Sheets: la función =AI() vs Apps Script → API Jev

Etiqueta filas con la función AI de Google Sheets o con una llamada de Apps Script a JevModel: labels Choice fijos con probabilidades, columna de revisión, cuotas de Apps Script y cuándo es más simple subir un CSV a Console → Batch.

Última actualización:

Respuesta breve: un prompt en una celda vs un contrato de labels fijo

  • La función AI de Google (=AI() o =Gemini()) recibe un prompt y un rango opcional, y Google cita “categorizar información” y el análisis de sentimiento entre sus usos. Requiere un plan Google Workspace o Google AI apto, solo devuelve texto, no se puede anidar dentro de otra fórmula como IF y genera como máximo las primeras 350 celdas AI seleccionadas cada vez.
  • Un comando de menú de Apps Script que envía cada fila por POST a /api/v1/systemone de JevModel devuelve un Choice entre 2–12 labels que tú defines, normalmente con probabilidades; así escribes una columna de label y otra de probabilidad, y mandas a revisión las filas dudosas.
  • Para llamadas a una API de pago, mejor un comando de menú que una función personalizada: estas deben responder en 30 segundos y se recalculan cuando cambian las celdas referenciadas, lo que puede volver a llamar (y cobrar) la API. Un script lanzado desde menú dura hasta 6 minutos por ejecución; URL Fetch admite 20.000 llamadas/día en cuentas personales y 100.000/día en Workspace.
  • Sin código: exporta la hoja a CSV y súbela en Console → Batch de JevModel (hasta 50 filas por lote antes de cualquier compra, 1.000 después). Elijas lo que elijas, conserva una columna etiquetada a mano y mide la concordancia antes de confiar en los labels.

Cómo se ve la clasificación de texto dentro de una hoja de cálculo

Casi todas las tareas de clasificación en una hoja tienen la misma forma: una columna de texto libre (respuestas de encuestas, formularios, mensajes de soporte, reseñas), una lista corta de categorías y una columna nueva que debe contener exactamente una de ellas por fila. Los extras útiles son una columna de confianza, una marca de “revisar” y una columna con etiquetas manuales en una muestra para comprobar el resultado. En Google Sheets hay tres formas realistas de rellenar esa columna: la función AI integrada, un Apps Script que llama a una API externa como JevModel, o exportar un CSV, clasificarlo fuera y pegar los resultados.

How to classify text with the JevModel APIBatch text classification with the JevModel API

La función AI de Google Sheets: lo que documenta Google

La ayuda de Google describe la sintaxis AI("prompt", [rango opcional]); =Gemini() es un nombre equivalente. Seleccionas las celdas y pulsas Generate and Insert, o Refresh and Insert para regenerar. Los ejemplos de Google incluyen clasificar una consulta como elogio, solicitud de cambio o devolución, y clasificar correos como positivos, negativos o neutros. Para clasificar importan los límites documentados: solo devuelve texto; la función solo ve el rango que le pasas, no toda la hoja; no puede ir dentro de otra fórmula (el ejemplo no admitido de Google envuelve AI() en IF); solo se generan las primeras 350 celdas AI seleccionadas cada vez; hay límites de generación a corto y largo plazo; y el acceso depende del plan, la configuración del administrador y el idioma. Fortalezas: cero configuración en cuentas aptas y un prompt en lenguaje natural que cualquiera puede editar. Límites: la salida es texto libre, así que el label puede variar (“Return”, “return request”, “Returns”) si el prompt y un paso de limpieza no fuerzan valores exactos, y no hay columna de probabilidad por label para fijar un umbral de revisión.

Clasificación de texto zero-shot en 2026: prompts LLM vs Hugging Face vs API tipadaJev vs GPT and Claude: choosing a decision layer

Apps Script → Jev: usa un comando de menú, no una función personalizada

Apps Script puede llamar cualquier API HTTPS con UrlFetchApp, y la guía de funciones personalizadas de Google confirma que URL Fetch es uno de los servicios permitidos. Aun así, no es el lugar para una llamada de clasificación que se cobra por uso. Una función personalizada debe responder en 30 segundos o la celda muestra #ERROR!; cada uso es una llamada separada al servidor de Apps Script; y se recalcula cuando cambia una celda referenciada, de modo que una edición puede volver a clasificar (y pagar) la misma fila sin que lo notes. Un elemento de menú personalizado lo evita: el script corre una vez al pulsarlo, lee las filas seleccionadas, llama a JevModel y escribe el label y la probabilidad como valores fijos que no se recalculan. Planifica con los límites publicados por Google: 6 minutos por ejecución y cuotas de URL Fetch de 20.000 llamadas/día en cuentas personales y 100.000/día en Google Workspace (Google advierte que pueden cambiar). Trabaja con selecciones que terminen en una ejecución. Guarda la clave de JevModel en Project Settings → Script properties, no en una celda, y recuerda que quien puede editar la hoja también puede editar su script vinculado: limita los editores.

JevModel API: request and responseJevModel pricing and free Jev runsPrivate runs and history

Comparación: =AI() vs Apps Script → Jev vs CSV en Console → Batch

La tabla compara la forma del flujo y el contrato de salida, no la precisión. Ninguna fila es un benchmark; mide con tu propia muestra etiquetada.

Batch text classification with the JevModel APIHow to classify text with the JevModel APIChoice, Score, and Noul
Comparación: =AI() vs Apps Script → Jev vs CSV en Console → Batch
DimensiónSheets =AI()Menú Apps Script → JevModelCSV → Console → Batch
PreparaciónPlan Workspace / Google AI apto; escribir un promptPegar un script y guardar la clave en Script propertiesExportar CSV, subirlo y exportar resultados
Salida de labelTexto libre; los valores exactos dependen del promptUn ID de Choice entre 2–12 labels definidos, normalmente con probabilidadesLa misma pregunta Jev para cada fila
Umbral de revisiónSin columna de probabilidad por labelEscribir la probabilidad junto al label y filtrar las bajasRespuestas por fila en la exportación
Límites principales350 celdas por generación; límites de generación; sin anidar6 min por ejecución; cuota diaria de URL Fetch; ~8.000 caracteres por petición50 filas por lote antes de comprar, 1.000 después
CosteIncluido en tu plan de Google y sus límitesTokens de JevModel por petición correcta; los fallos se reembolsanEl mismo saldo de tokens que Playground y API

Ejemplo de Apps Script: clasificar las filas seleccionadas (ilustrativo)

Abre Extensions → Apps Script, pega el código, crea una propiedad de script llamada JEVMODEL_API_KEY con una clave de JevModel Console → API keys y recarga la hoja. Selecciona las celdas de texto de una columna y elige Jev → Classify selected rows; el label y su probabilidad se escriben en las dos columnas siguientes. La petición sigue el contrato documentado: un state (el texto de la celda) y preguntas con nombre, aquí un Choice cuyos criteria asignan IDs de label a definiciones cortas. Las definiciones claras, con un “other” explícito, importan más que la redacción ingeniosa. El sitio fija el modelo typesafe/jev-1.13 vía OpenRouter, así que no hay campo model. JevModel es independiente de TypeSafe AI, que desarrolla Jev. Un code distinto de cero (por ejemplo INSUFFICIENT_TOKENS) se escribe como ERROR para que relances solo esas filas; la API no tiene clave de idempotencia, así que no relances filas que ya tienen label.

JevModel API: request and responseChoice, Score, and NoulJevModel pricing and free Jev runs
// Illustrative only. Save the key as the script property JEVMODEL_API_KEY.
// Run from the menu, not as a custom function, so edits never re-bill rows.
const LABELS = {
  billing: "Charges, refunds, invoices or payment methods.",
  shipping: "Delivery status, delays or address changes.",
  product: "How the product works, or a defect report.",
  other: "Anything that fits none of the labels above.",
};

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu("Jev")
    .addItem("Classify selected rows", "classifySelection")
    .addToUi();
}

function classifySelection() {
  const key = PropertiesService.getScriptProperties().getProperty("JEVMODEL_API_KEY");
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getActiveRange(); // one column of text cells
  const rows = range.getValues().map(([text]) => {
    if (!text) return ["", ""];
    const res = UrlFetchApp.fetch("https://jevmodel.app/api/v1/systemone", {
      method: "post",
      contentType: "application/json",
      headers: { Authorization: "Bearer " + key },
      muteHttpExceptions: true,
      payload: JSON.stringify({
        state: String(text),
        questions: {
          route: {
            type: "choice",
            instructions: "Which support queue should handle this message?",
            criteria: LABELS,
          },
        },
      }),
    });
    const body = JSON.parse(res.getContentText());
    if (body.code !== 0) return ["ERROR", body.message];
    const answer = body.data.answers.route;
    const p = answer.probabilities ? answer.probabilities[answer.choice] : "";
    return [answer.choice, p];
  });
  // Plain values in the next two columns: label, probability.
  sheet.getRange(range.getRow(), range.getColumn() + 1, rows.length, 2).setValues(rows);
}

Añade una columna de revisión y comprueba los labels antes de usarlos

Una hoja de cálculo facilita la evaluación, así que hazla. Antes de clasificar toda la hoja, etiqueta a mano una muestra aleatoria de filas en otra columna, ejecuta la misma pregunta y compara con COUNTIFS o una tabla dinámica: concordancia por label y qué labels se confunden. Luego define una regla de revisión con esa muestra, por ejemplo “si la probabilidad está por debajo del nivel donde hubo más desacuerdos, a revisión”, y añade una columna como =IF(C2<0.7,"review","ok"); 0,7 es un marcador, no una recomendación. Mantén el label “other” y trata una proporción alta de “other” como señal de que la lista de labels necesita trabajo, no como fallo del modelo. La confianza de Choice que describe TypeSafe, (p − 1/n)/(1 − 1/n), corrige por el número de labels, pero tampoco es precisión calibrada. Revisa la muestra cada vez que cambies labels o definiciones.

Jev probability, confidence and human-review thresholdsEvaluate a Jev workflowClasificación de comentarios de clientes: un tema, una prioridad y por qué el sentimiento no basta

Qué camino elegir

Elige =AI() si ya tienes un plan apto, la hoja es una exploración puntual y alguien leerá los resultados de todos modos. Elige el menú Apps Script → Jev si reutilizas el mismo conjunto de labels, quieres una columna de probabilidad para decidir qué se revisa, o los labels deben coincidir con los que ya usa otra automatización (Zapier, Make, n8n, Power Automate, Pipedream o tu app) con la misma API. Elige CSV → Console → Batch si quieres labels de Jev sin programar, o probar una pregunta con un archivo pequeño. Lista para cualquier camino: 1) define labels con un “other” explícito; 2) etiqueta una muestra a mano; 3) guarda los labels aceptados como valores, no como fórmulas vivas; 4) no pongas claves de API en celdas; 5) no afirmes una precisión que no hayas medido en esa muestra. Si una fila puede tener varios labels, consulta multi-label-text-classification en lugar de forzar un solo Choice.

Clasificación de texto multietiqueta: un Choice, varias preguntas sí/no o una segunda pasadaClasificació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 APIClasificación de texto en Power Automate: modelos AI Builder vs HTTP → JevClasificación de texto en Pipedream: acción Hugging Face vs HTTP → JevNodo Text Classifier de n8n: integrado vs llamar a Jev desde un flujoClasificación de comentarios de clientes: un tema, una prioridad y por qué el sentimiento no bastaJevModel API: request and responseClasificación de texto en Airtable: etiqueta registros automáticamente con una automatización Run a script y Jev

Preguntas frecuentes

¿La función AI de Google Sheets puede clasificar texto?

Sí. Google cita la categorización y el análisis de sentimiento entre sus usos, con ejemplos como =AI("Categorize the customer inquiry as a compliment, exchange request, or return request.", C2). Requiere un plan Google Workspace o Google AI apto, devuelve texto libre y no se puede anidar en fórmulas como IF.

¿Por qué no escribir una función personalizada como =JEV(A2)?

Técnicamente funciona, pero las funciones personalizadas se recalculan cuando cambian las celdas referenciadas y deben terminar en 30 segundos: una API de pago puede volver a llamarse para filas ya pagadas y los rangos grandes agotan el tiempo. Un comando de menú se ejecuta una vez y escribe valores fijos.

¿Cuántas filas puedo clasificar desde Google Sheets con Jev?

Hay tres límites: tu saldo de tokens de JevModel (las cuentas verificadas empiezan con 100.000 tokens gratis), el límite de 6 minutos por ejecución y la cuota diaria de URL Fetch de Apps Script, y la capacidad diaria del sitio. Cada fila es una petición normal; no hay descuento por volumen. Para archivos, Console → Batch admite 50 filas por lote antes de comprar y 1.000 después.

¿Los datos de mi hoja se envían a JevModel?

Solo se envía lo que el script pone en state, en el ejemplo el texto de la celda; JevModel lo reenvía al modelo vía OpenRouter. Quita antes las columnas que no necesites, como emails o teléfonos, y consulta la guía de privacidad sobre cómo se guarda el historial.

JevModel es independiente y no está afiliado a TypeSafe AI.