Comparaisons / JevModel

Classification de texte dans Google Sheets : la fonction =AI() vs Apps Script → API Jev

Étiquetez des lignes avec la fonction AI de Google Sheets ou un appel Apps Script vers JevModel : labels Choice fixes avec probabilités, colonne de revue, quotas Apps Script, et quand un CSV dans Console → Batch est plus simple.

Dernière mise à jour:

Réponse courte : un prompt dans une cellule vs un contrat de labels fixe

  • La fonction AI de Google (=AI() ou =Gemini()) prend un prompt et une plage facultative ; Google cite « catégoriser des informations » et l’analyse de sentiment parmi ses usages. Elle exige une offre Google Workspace ou Google AI éligible, ne renvoie que du texte, ne peut pas être imbriquée dans une autre formule comme IF et ne génère au plus que les 350 premières cellules AI sélectionnées à la fois.
  • Une commande de menu Apps Script qui envoie chaque ligne en POST à /api/v1/systemone de JevModel renvoie un Choice parmi 2 à 12 labels que vous définissez, généralement avec des probabilités : vous écrivez une colonne label et une colonne probabilité, puis envoyez les lignes incertaines en revue.
  • Pour une API payante, préférez une commande de menu à une fonction personnalisée : celle-ci doit répondre en 30 secondes et se recalcule quand les cellules référencées changent, ce qui peut rappeler (et facturer) l’API. Un script lancé depuis un menu peut tourner 6 minutes par exécution ; URL Fetch est limité à 20 000 appels/jour pour les comptes grand public et 100 000/jour pour Workspace.
  • Sans code : exportez la feuille en CSV et importez-la dans Console → Batch de JevModel (50 lignes par lot avant tout achat, 1 000 ensuite). Quelle que soit la voie, gardez une colonne étiquetée à la main et mesurez l’accord avant de faire confiance aux labels.

À quoi ressemble la classification de texte dans un tableur

La plupart des tâches de classification dans un tableur ont la même forme : une colonne de texte libre (réponses d’enquête, formulaires, messages de support, avis produits), une courte liste de catégories et une nouvelle colonne qui doit contenir exactement une catégorie par ligne. Les compléments utiles : une colonne de confiance, un indicateur « à revoir » et une colonne d’étiquettes manuelles sur un échantillon pour vérifier le résultat. Dans Google Sheets, trois voies réalistes remplissent cette colonne : la fonction AI intégrée, un Apps Script qui appelle une API externe comme JevModel, ou un export CSV classé ailleurs puis recollé.

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

La fonction AI de Google Sheets : ce que Google documente

L’aide Google décrit la syntaxe AI("prompt", [plage facultative]) ; =Gemini() est un nom équivalent. On sélectionne les cellules puis Generate and Insert, ou Refresh and Insert pour régénérer. Les exemples de Google incluent le classement d’une demande client en compliment, demande d’échange ou demande de retour, et le classement d’e-mails en positif, négatif ou neutre. Pour la classification, les limites documentées comptent : sortie texte uniquement ; la fonction ne voit que la plage transmise, pas tout le classeur ; elle ne peut pas être imbriquée dans une autre formule (l’exemple non pris en charge de Google entoure AI() d’un IF) ; seules les 350 premières cellules AI sélectionnées sont générées à la fois ; il existe des limites de génération à court et long terme ; l’accès dépend de l’offre, des réglages admin et de la langue. Forces : aucune configuration pour les comptes éligibles et un prompt en langage naturel modifiable par tous. Limites : la sortie est du texte libre, donc le label peut dériver (« Return », « return request », « Returns ») si le prompt et un nettoyage n’imposent pas des valeurs exactes, et il n’y a pas de colonne de probabilité par label pour piloter un seuil de revue.

Classification de texte zero-shot en 2026 : prompts LLM vs Hugging Face vs API typéeJev vs GPT and Claude: choosing a decision layer

Apps Script → Jev : une commande de menu, pas une fonction personnalisée

Apps Script peut appeler n’importe quelle API HTTPS avec UrlFetchApp, et le guide des fonctions personnalisées de Google confirme qu’URL Fetch fait partie des services autorisés. Ce n’est pourtant pas le bon endroit pour un appel de classification facturé à l’usage. Une fonction personnalisée doit répondre en 30 secondes, sinon la cellule affiche #ERROR! ; chaque utilisation est un appel distinct au serveur Apps Script ; et elle se recalcule dès qu’une cellule référencée change, si bien qu’une simple modification peut reclasser (et refacturer) la même ligne sans bruit. Un élément de menu personnalisé évite cela : le script s’exécute une fois au clic, lit les lignes sélectionnées, appelle JevModel et écrit le label et la probabilité en valeurs fixes qui ne se recalculent pas. Tenez compte des limites publiées par Google : 6 minutes par exécution et quotas URL Fetch de 20 000 appels/jour pour les comptes grand public et 100 000/jour pour Google Workspace (Google précise qu’ils peuvent changer). Traitez des sélections qui tiennent dans une exécution. Stockez la clé JevModel dans Project Settings → Script properties plutôt que dans une cellule, et rappelez-vous que toute personne pouvant modifier le classeur peut aussi modifier son script lié : limitez les éditeurs.

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

Comparaison : =AI() vs Apps Script → Jev vs CSV dans Console → Batch

Le tableau compare la forme du flux et le contrat de sortie, pas la précision. Aucune ligne n’est un benchmark ; mesurez sur votre propre échantillon étiqueté.

Batch text classification with the JevModel APIHow to classify text with the JevModel APIChoice, Score, and Noul
Comparaison : =AI() vs Apps Script → Jev vs CSV dans Console → Batch
DimensionSheets =AI()Menu Apps Script → JevModelCSV → Console → Batch
Mise en placeOffre Workspace / Google AI éligible ; saisir un promptColler un script, ranger la clé dans Script propertiesExporter le CSV, l’importer, exporter les résultats
Sortie du labelTexte libre ; l’exactitude dépend du promptUn identifiant Choice parmi 2 à 12 labels définis, généralement avec probabilitésLa même question Jev pour chaque ligne
Seuil de revuePas de colonne de probabilité par labelÉcrire la probabilité à côté du label et filtrer les bassesRéponses par ligne dans l’export
Limites principales350 cellules par génération ; limites de génération ; pas d’imbrication6 min par exécution ; quota URL Fetch quotidien ; ~8 000 caractères par requête50 lignes par lot avant achat, 1 000 ensuite
FacturationInclus dans votre offre Google et ses limitesTokens JevModel par requête réussie ; échecs remboursésMême solde de tokens que le Playground et l’API

Exemple Apps Script : classer les lignes sélectionnées (illustratif)

Ouvrez Extensions → Apps Script, collez le code, créez une propriété de script JEVMODEL_API_KEY avec une clé issue de JevModel Console → API keys, puis rechargez la feuille. Sélectionnez les cellules de texte d’une colonne et choisissez Jev → Classify selected rows ; le label et sa probabilité s’écrivent dans les deux colonnes suivantes. La requête suit le contrat documenté : un state (le texte de la cellule) et des questions nommées, ici un Choice dont les criteria associent des identifiants de label à de courtes définitions. Des définitions claires, avec un « other » explicite, comptent plus qu’une formulation habile. Le site fixe le modèle typesafe/jev-1.13 via OpenRouter, donc pas de champ model. JevModel est indépendant de TypeSafe AI, qui développe Jev. Un code non nul (par exemple INSUFFICIENT_TOKENS) est écrit ERROR pour ne relancer que ces lignes ; l’API n’a pas de clé d’idempotence, ne relancez donc pas les lignes déjà étiquetées.

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);
}

Ajoutez une colonne de revue et vérifiez les labels avant de les utiliser

Un tableur facilite l’évaluation : faites-la. Avant de classer toute la feuille, étiquetez à la main un échantillon aléatoire de lignes dans une autre colonne, lancez la même question et comparez avec COUNTIFS ou un tableau croisé : accord par label et labels confondus. Fixez ensuite une règle de revue à partir de cet échantillon, par exemple « probabilité sous le niveau où se concentraient les désaccords → revue », puis ajoutez une colonne comme =IF(C2<0.7,"review","ok") ; 0,7 est un exemple, pas une recommandation. Gardez le label « other » et voyez une forte part d’« other » comme un signe que la liste de labels doit évoluer, pas comme un échec du modèle. La confiance Choice décrite par TypeSafe, (p − 1/n)/(1 − 1/n), corrige selon le nombre de labels mais n’est pas non plus une précision calibrée. Revérifiez l’échantillon après tout changement de labels ou de définitions.

Jev probability, confidence and human-review thresholdsEvaluate a Jev workflowClassification des retours clients : un thème, une priorité, et pourquoi le sentiment ne suffit pas

Quelle voie choisir

Choisissez =AI() si vous avez déjà une offre éligible, que la feuille est une exploration ponctuelle et qu’une personne lira les résultats de toute façon. Choisissez le menu Apps Script → Jev si le même jeu de labels sert souvent, si vous voulez une colonne de probabilité pour décider des revues, ou si les labels doivent correspondre à ceux d’une autre automatisation (Zapier, Make, n8n, Power Automate, Pipedream ou votre app) via la même API. Choisissez CSV → Console → Batch pour obtenir des labels Jev sans coder, ou tester une question sur un petit fichier. Checklist commune : 1) définitions de labels avec un « other » explicite ; 2) échantillon étiqueté à la main ; 3) labels acceptés gardés en valeurs, pas en formules vivantes ; 4) aucune clé d’API dans les cellules ; 5) aucune précision annoncée sans mesure sur cet échantillon. Si une ligne peut porter plusieurs labels, voyez multi-label-text-classification plutôt que de forcer un seul Choice.

Classification de texte multi-label : un Choice, plusieurs questions oui/non, ou une seconde passeClassification de texte Zapier : AI by Zapier Classify vs Vertex Classify Text vs HTTP → JevCategorize Text sur Make.com : AI Toolkit vs HTTP → Jev pour labels typés et seuilsBatch text classification with the JevModel APIClassification de texte Power Automate : modèles AI Builder vs HTTP → JevClassification de texte Pipedream : action Hugging Face vs HTTP → JevNœud Text Classifier n8n : intégré vs appeler Jev depuis un workflowClassification des retours clients : un thème, une priorité, et pourquoi le sentiment ne suffit pasJevModel API: request and responseClassification de texte dans Airtable : étiqueter les enregistrements automatiquement avec une automatisation Run a script et Jev

Questions fréquentes

La fonction AI de Google Sheets peut-elle classer du texte ?

Oui. Google cite la catégorisation et l’analyse de sentiment parmi ses usages, avec des exemples comme =AI("Categorize the customer inquiry as a compliment, exchange request, or return request.", C2). Elle exige une offre Google Workspace ou Google AI éligible, renvoie du texte libre et ne s’imbrique pas dans des formules comme IF.

Pourquoi ne pas écrire une fonction personnalisée comme =JEV(A2) ?

Techniquement oui, mais une fonction personnalisée se recalcule quand les cellules référencées changent et doit finir en 30 secondes : une API facturée peut être rappelée pour des lignes déjà payées, et les grandes plages expirent. Une commande de menu s’exécute une fois et écrit des valeurs fixes.

Combien de lignes puis-je classer depuis Google Sheets avec Jev ?

Trois limites s’appliquent : votre solde de tokens JevModel (les comptes vérifiés démarrent avec 100 000 tokens offerts), la limite Apps Script de 6 minutes par exécution et le quota quotidien URL Fetch, et la capacité quotidienne du site. Chaque ligne est une requête ordinaire ; pas de remise de volume. Pour un fichier, Console → Batch traite 50 lignes par lot avant achat et 1 000 ensuite.

Les données de ma feuille sont-elles envoyées à JevModel ?

Seul ce que le script place dans state est envoyé, ici le texte de la cellule ; JevModel le transmet au modèle via OpenRouter. Retirez au préalable les colonnes inutiles, comme e-mails ou téléphones, et lisez le guide de confidentialité sur la conservation de l’historique.

JevModel est indépendant et n’est pas affilié à TypeSafe AI.