4D AIKit : Sorties structurées

Traduit automatiquement de Deepl

Lorsque vous utilisez l’IA dans votre application, vous avez souvent besoin de résultats que votre code peut analyser, et pas seulement d’un texte libre. Qu’il s’agisse de générer des données pour une interface utilisateur, d’automatiser la logique métier ou d’orchestrer un raisonnement en plusieurs étapes, des réponses prévisibles et lisibles par la machine sont essentielles.

C’est pourquoi 4D 21’s 4D AIKit introduit le nouvel attribut response_format qui vous permet de définir la structure exacte de la sortie du modèle afin de garantir la cohérence, la validation et l’intégration harmonieuse dans la logique de votre application.

POURQUOI LES SORTIES STRUCTURÉES SONT IMPORTANTES

Les sorties structurées sont utiles chaque fois que vous devez analyser ou interpréter ce que produit un modèle d’IA.

Par exemple :

  • Génération de données : Créez automatiquement du contenu structuré tel que des enregistrements de produits, des entrées CRM ou des données de configuration que votre application peut utiliser immédiatement.
  • Raisonnement et planification : Vous pouvez demander au modèle de proposer des étapes suivantes ou des options de flux de travail que votre application peut afficher ou exécuter automatiquement.
  • Agents à plusieurs étapes (modèle ReAct) : Combinent le raisonnement et l’action, où l’IA suit des formats spécifiques pour guider sa prochaine action.
  • Contrôle de la chaîne de pensée (partie visible uniquement) : Capturez les étapes de raisonnement que vous décidez d’exposer aux utilisateurs à des fins de transparence ou de débogage.
  • Débogage / surveillance du raisonnement de l’IA : Renforcez la structure afin que la logique interne de l’IA puisse être enregistrée et analysée.

Voici un exemple simple de la manière dont un modèle d’IA pourrait renvoyer des données de raisonnement structurées que vous pouvez analyser instantanément dans 4D :

{
"thought": "The customer seems satisfied overall but mentioned slow delivery.",
"next_step": "offer_discount"
}

Cas d’utilisation : L’IA résume le raisonnement et suggère une prochaine action que votre code peut appliquer automatiquement.

Sorties structurées avec response_format

Lorsqu’ils interagissent avec un modèle d’IA, les développeurs ont souvent besoin de résultats dans un format spécifique, qu’il s’agisse de texte brut, d’objets JSON ou de données validées par rapport à un schéma. Avec le nouvel attribut response_format vous pouvez désormais demander au modèle de renvoyer sa réponse dans la structure exacte que vous souhaitez.

Voici un autre cas où une sortie structurée garantit des données cohérentes et validées : un résumé financier renvoyé sous forme de JSON strict :

var $client:=cs.AIKit.OpenAI.new($openAIKey)
var $chatHelper:=$ai.chat.create("You are a financial data analyst.")

// Define the expected response format for the AI
var $response_format:={type: "json_schema"; json_schema: {}}
$response_format.json_schema.name:="sales_summary"
$response_format.json_schema.schema:={type: "object"; properties: {}}
$response_format.json_schema.schema.properties.total_revenue:={type: "number"}
$response_format.json_schema.schema.properties.gross_margin:={type: "number"}
$response_format.json_schema.schema.properties.top_products:={Type: "array"; items: {Type: "String"}}
$response_format.json_schema.schema.required:=["total_revenue"; "gross_margin"; "top_products"]
$response_format.json_schema.schema.additionalProperties:=False

// Attach the JSON Schema format to the chat helper
$chatHelper.parameters.response_format:=$jsonFormat

// Compose the message to send to the AI:
var $message:="Here are the sales figures for Q3:\n"
$message+="- Product A: $120,000 in sales, 40% margin\n"
$message+="- Product B: $85,000 in sales, 35% margin\n"
$message+="- Product C: $60,000 in sales, 50% margin\n"
$message+="Please calculate the total revenue, the overall gross margin, "
$message+="and list the top 2 products by revenue."

var $result:=$chatHelper.prompt($message)
//$result.choice.message.text:="{
//    "total_revenue": 265000,
//    "gross_margin": 0,406603773,
//    "top_products": ["Product A","Product B"]
//    ]
//}"

L’IA répond avec un objet JSON validé, prêt à être utilisé dans votre base de données ou votre interface utilisateur, sans aucun post-traitement.

PAYSAGE DE LA PRISE EN CHARGE DES MODÈLES

La prise en charge des sorties structurées varie en fonction du modèle que vous utilisez :

  • OpenAI GPT-4o et GPT-4-Turbo supportent nativement response_format.

  • Les modèles locaux ou d’autres modèles en nuage (par exemple, les modèles Claude, Gemini ou Ollama) peuvent prendre en charge les sorties structurées différemment, parfois via un appel de fonction strict, parfois via l’application d’un schéma basé sur du texte.

Et n’oubliez pas : response_format n’est pas limité à JSON. Selon le modèle, d’autres formats tels que le texte brut, le XML ou des syntaxes spécifiques au domaine peuvent également être pris en charge.

Conclusion

Avec l’outil response_format de 4D AIKit, vous pouvez vous assurer que vos sorties d’IA sont exactement comme vous le souhaitez, cohérentes, fiables et prêtes à être intégrées directement dans votre interface utilisateur, votre base de données ou tout autre système. Cette fonctionnalité aide les développeurs à analyser les compléments d’IA sans effort et à intégrer l’intelligence en profondeur dans leurs applications 4D. Elle transforme l’IA d’un simple partenaire de discussion en un moteur de raisonnement puissant et structuré, permettant des fonctionnalités plus intelligentes et plus dynamiques que les utilisateurs ne l’auraient jamais imaginées.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené a rejoint l'équipe du programme 4D en novembre 2016. En tant que Product Owner, il est en charge de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation de la fonctionnalité livrée répond au besoin du client.Après avoir obtenu une licence en informatique au CNAM, Fabrice a rejoint une petite société d'édition de logiciels en tant que développeur Windev. Il a ensuite travaillé pour différentes entreprises dans les domaines de l'industrie et du commerce en tant que développeur Windev et web ainsi que conseiller technique sur les nouvelles fonctionnalités.