Skip to main content
Voir en Markdown

Champs IA

Sept types de champs calculent leur valeur avec un LLM à partir d'un ou plusieurs sourceFields. Tous partagent les propriétés de base des champs et un ensemble commun de contrôles IA.

Type Produit
ai-generate Texte généré en forme libre à partir d'un modèle d'invite.
ai-summary Un résumé des champs sources.
ai-categorize Une catégorie unique choisie dans une liste prédéfinie.
ai-extract Données structurées conformes à un JSON Schema.
ai-sentiment Analyse de sentiment du texte source.
ai-tag Plusieurs étiquettes choisies dans une liste d'autorisation.
ai-translate Une traduction d'un champ source vers une langue cible.

Propriétés IA communes

La plupart des champs IA acceptent ces propriétés partagées (en plus de leurs propriétés spécifiques au type) :

Propriété Description
sourceFields Requis. Noms des champs utilisés comme contexte d'entrée. Au moins un (exactement un pour ai-translate).
prompt Invite personnalisée pour guider l'IA. ai-generate utilise un modèle {{fieldName}} ; les autres se rabattent sur une valeur par défaut sensée lorsqu'omise.
systemPrompt Invite système définissant la persona et le contexte de l'IA.
model Remplacement du modèle IA (par ex. gpt-4o, claude-sonnet). Chaîne non vide.
temperature Créativité de la sortie, de 0 à 1.

Comment une valeur se résout, et comment le savoir

Un champ IA se résout en deux temps. Une valeur déterministe est calculée localement et stockée aussitôt, si bien que l'enregistrement n'est jamais laissé vide ; un affinage en arrière-plan la remplace ensuite par la réponse du modèle.

Lorsque l'affinage n'aboutit jamais, la valeur calculée localement demeure. C'est un contenu plausible et bien formé, qui se lit exactement comme un résultat de modèle : à elle seule, une valeur ne dit donc rien du niveau qui l'a produite. C'est pourquoi chaque valeur IA porte un statut d'affinage, et pourquoi la grille et le panneau d'enregistrement signalent les deux états qui ne sont pas stabilisés :

Statut Affichage
refined Rien. Le modèle a répondu ; la valeur se suffit à elle-même.
skipped Rien. Quelqu'un a modifié la valeur à la main et l'affinage a renoncé à l'écraser.
pending Un marqueur atténué, libellé Refining — l'affinage est encore en cours.
failed Un marqueur ! rouge, libellé Not refined, qui explique que la valeur affichée est le repli calculé localement, cite la raison enregistrée du fournisseur et indique l'étape suivante : modifier la valeur pour la définir soi-même.

Une valeur stabilisée reste délibérément non signalée. Signaler chaque valeur apprendrait à ignorer le marqueur, et une valeur modifiée à la main appartient déjà à la personne qui la lit : elle n'appelle aucun avertissement.

Modifier à la main une valeur non affinée est la sortie prévue : la modification est conservée et aucun affinage ultérieur ne l'écrase.

Toute écriture fournissant une valeur explicite pour la colonne enregistre skipped et efface la raison consignée : le marqueur disparaît avec elle. Une écriture qui ne touche pas à la colonne laisse son statut intact. Le champ conserve un statut skipped plutôt que de perdre son entrée, si bien qu'une valeur écrite à la main reste distinguable d'une valeur jamais calculée.

computeOn détermine le moment où un champ est recalculé — ai-generate, ai-summary et ai-sentiment acceptent create (par défaut), update ou both ; les quatre autres calculent toujours à la création — mais cela n'a ici aucune incidence. Une modification manuelle est respectée quel que soit le réglage.

Lire le statut via l'API

Les enregistrements d'une table comportant des champs IA portent un bloc _aiCompute à côté de fields, indexé par nom de champ :

app.json
{
  "id": "42",
  "fields": { "summary": "Coastal ecosystems face accelerating change." },
  "_aiCompute": {
    "summary": { "status": "failed", "error": "provider unavailable" }
  }
}

status vaut pending, refined, failed ou skipped ; error n'est présent que pour failed. Le bloc est entièrement omis pour une table ne déclarant aucun champ IA, ainsi que pour un enregistrement sans statut : il n'est jamais envoyé sous forme d'objet vide, si bien qu'une table sans IA ne coûte rien à lire.

ai-generate

Génère du texte en forme libre à partir d'un modèle d'invite.

Propriété Description
prompt Modèle d'invite avec substitution de variables {{fieldName}}. (Recommandé pour les champs generate.)
app.yaml
- id: 1
  name: marketing_copy
  type: ai-generate
  sourceFields: [product_name, features]
  prompt: 'Write a compelling 2-paragraph marketing description for {{product_name}}. Key features: {{features}}.'

ai-summary

Résume les champs sources. Utilise une invite « Summarize the following » par défaut lorsque prompt est omis.

app.yaml
- { id: 2, name: ticket_summary, type: ai-summary, sourceFields: [body, thread] }

ai-categorize

Classe la source dans exactement l'une d'une liste fixe de catégories.

Propriété Description
categories Requis. Catégories prédéfinies parmi lesquelles l'IA doit choisir. Minimum 2, sans doublons.
app.yaml
- {
    id: 3,
    name: ticket_category,
    type: ai-categorize,
    sourceFields: [subject, body],
    categories: [billing, technical, account, general],
  }

ai-extract

Extrait des données structurées décrites par un JSON Schema. Prend en charge les objets et tableaux imbriqués.

Propriété Description
schema Requis. Objet JSON Schema décrivant la structure des données extraites.
app.yaml
- id: 4
  name: invoice_data
  type: ai-extract
  sourceFields: [raw_text]
  schema:
    type: object
    properties:
      vendor_name: { type: string, description: Name of the vendor }
      total_amount: { type: number, description: Total amount due }

ai-sentiment

Analyse le sentiment du texte source. prompt peut ajuster la focalisation (par ex. urgence, satisfaction).

app.yaml
- { id: 5, name: review_sentiment, type: ai-sentiment, sourceFields: [review_text] }

ai-tag

Attribue plusieurs étiquettes à partir d'une liste d'autorisation prédéfinie.

Propriété Description
tags Requis. Étiquettes autorisées que l'IA peut attribuer. Minimum 2, sans doublons.
maxTags Nombre maximal d'étiquettes à attribuer (entier positif). Aucune limite lorsqu'omis.
app.yaml
- {
    id: 6,
    name: article_tags,
    type: ai-tag,
    sourceFields: [title, body],
    tags: [technology, business, science, health, politics],
    maxTags: 3,
  }

ai-translate

Traduit un champ source vers une langue cible.

Propriété Description
sourceFields Requis. Exactement un nom de champ.
targetLanguage Requis. Code de langue ISO 639-1, éventuellement suffixé par une région (par ex. fr, es, ja, zh-CN).
prompt Invite personnalisée pour contrôler le ton, le registre et le style de la traduction.
app.yaml
- {
    id: 7,
    name: description_fr,
    type: ai-translate,
    sourceFields: [description],
    targetLanguage: fr,
  }

Dernière mise à jour 11 août 2026

Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta. Les contributions et corrections sont les bienvenues.

Construit avec Sovrium