Commande AICOMMAND

Prend en charge l’analyse des données en langage naturel grâce à l’intégration de Analytics à un service d’IA externe.

Note

Pour utiliser AICOMMAND, vous devez installer et configurer une version compatible de Python sur l’ordinateur où la commande s’exécutera. Vous devez également installer deux bibliothèques Python : Pandas et API OpenAI Python. Pour de plus amples informations, consultez la section Configuration de Python pour être utilisé avec Analytics.

Le service d’IA externe n’est pas fourni par Diligent. Il doit être fourni par votre organisation.

Connectez-vous uniquement à un service IA externe qui a été validé par votre organisation. Veillez à respecter tous les protocoles de sécurité si vous avez l’intention de transférer des données sensibles depuis Analytics vers le service IA.

Les résultats de l’IA peuvent contenir des inexactitudes ou des erreurs. Utilisez une autre méthode pour vérifier les résultats si une précision absolue est requise.

Syntaxe

AICOMMAND {<FIELDS> field <...n>|<FIELDS> ALL} <SCRIPT "path_and_filename"> TO table_name USER_PROMPT "user_prompt_text" <PASSWORD num> MODEL "model_information" URL "ai_service_api_url" <BATCHSIZE number_of_records> <IF test> <WHILE test> <FIRST range|NEXT range> <OPEN>

Paramètres

Nom Description

FIELDS nom_champ <...n> | FIELDS ALL

Les champs ou expressions de la table Analytics source à envoyer au service IA.

Vous devez spécifier au moins un champ ou une expression.

  • FIELDS nom_champIncluez le(s) champ(s) ou les expressions spécifiés

    Séparer les noms des champs par des espaces. Les champs sont exportés dans l'ordre dans lequel vous les indiquez.

    Pour exporter un champ associé, spécifiez un nom de champ complet (nom_table.nom_champ). Par exemple : Vendor.Vendor_Name

  • FIELDS ALLIncluez tous les champs dans la table

    Les champs sont exportés dans leur ordre d’apparition dans le format de table. Les champs associés ne sont pas exportés.

Note

Limitez la quantité totale de données envoyées au service d’IA en spécifiant uniquement les champs strictement nécessaires à votre objectif d’analyse.

Incluez un champ d’identifiant unique si vous souhaitez joindre ou relier la table renvoyée par le service d’IA à la table source d’origine. Pour de plus amples informations, consultez la section Créer un champ pour l’identifiant unique.

SCRIPT "path_and_filename"

facultatif

Si vous utilisez votre propre script Python avec AICOMMAND, le chemin d’accès et le nom du fichier du script.

Si vous spécifiez un script, PASSWORD, MODEL et URL sont facultatifs. Pour de plus amples informations, consultez la section Utilisation de votre propre script Python.

TO nom_table

Emplacement vers lequel envoyer les résultats de la commande :

  • nom_tableEnregistre les résultats dans une table Analytics

    Indiquez nom_table sous forme de chaîne entre guillemets avec une extension de fichier .FIL. Par exemple : TO "Output.FIL"

    Par défaut, le fichier de données de table (.FIL) est enregistré dans le dossier contenant le projet Analytics.

    Utilisez un chemin de fichier absolu ou relatif pour enregistrer le fichier de données dans un autre dossier existant :

    • TO "C:\Output.FIL"
    • TO "Results\Output.FIL"

    Note

    La longueur des noms des tables est limitée à 64 caractères alphanumériques, sans l'extension .FIL. Le nom peut inclure le caractère de soulignement ( _ ), mais aucun autre caractère spécial ni espace. Le nom ne peut pas commencer par un chiffre.

USER_PROMPT "user_prompt_text"

Texte de l’invite à saisir dans le service d’IA.

L'invite indique au service d'IA comment traiter les données d'entrée que vous envoyez et quelle sortie vous souhaitez obtenir.

Note

Vous devez mettre user_prompt_text entre des guillemets doubles ("). Cependant, n’incluez pas de guillemets doubles dans le corps de user_prompt_textr. Les guillemets doubles dans le corps du texte de l’invite entraînent l’échec de la commande. Vous pouvez utiliser des guillemets simples () dans le texte de l’invite.

PASSWORD num

facultatif

Définition de mot de passe à utiliser.

Vous n'utilisez pas PASSWORD num pour inviter à saisir ou pour spécifier un mot de passe réel. La définition de mot de passe renvoie à un mot de passe fourni ou défini auparavant à l'aide de la commande PASSWORD, de la commande SET PASSWORD ou de la balise d'outil d'analyse PASSWORD.

num correspond au numéro de la définition de mot de passe. Par exemple, si deux mots de passe ont été fournis ou définis auparavant dans un script, ou lors de la planification d'un script d'analyse de données, PASSWORD 2 indique que le mot de passe n° 2 est utilisé.

Pour plus d'informations sur la fourniture ou définition de mots de passe, consultez les rubriques :

Note

AICOMMAND utilise la clé d’API d’IA enregistrée dans le registre local, en supposant qu’une clé ait été enregistrée. Si aucune clé n’est enregistrée ou si vous souhaitez utiliser une clé différente, vous devez utiliser PASSWORD. Pour de plus amples informations, consultez la section Paramètres de connexion pour un service IA externe.

MODÈLE "model_information"

Informations d’identification du modèle d’IA spécifique que vous souhaitez utiliser.

Par exemple :

MODEL "anthropic.claude-3-5-sonnet-20241022-v2:0"

Un service d’IA peut proposer différents modèles que vous pouvez utiliser.

Vous pouvez utiliser n’importe quels grands modèles de langage (LLM) compatible avec OpenAI, c’est-à-dire un modèle OpenAI ou un modèle qui utilise le même schéma API que les modèles OpenAI.

URL "ai_service_api_url"

URL complète de l’API du service d’IA.

Par exemple :

URL "https://api.anthropic.com/v1"
BATCHSIZE number_of_records

facultatif

Nombre d’enregistrements à inclure dans chaque lot envoyé au service IA.

Si AICOMMAND échoue, essayez de spécifier une taille de lot de 50 ou 25.

Si vous ne spécifiez pas BATCHSIZE, la taille de lot par défaut de 100 enregistrements est utilisée.

Un service d’IA limite généralement la quantité de données qu’il traite à chaque opération. Les enregistrements d’une table Analytics sont envoyés par lots à un service d’IA afin d’améliorer les chances de rester dans les limites de données. Les réponses de l’IA pour tous les lots sont rassemblées dans une seule table de sortie Analytics.

IF test

facultatif

Condition devant être remplie pour que l'enregistrement actuel soit traité. Les données envoyées au service d’IA ne contiennent que les enregistrements qui remplissent la condition.

Au moins un enregistrement de la table doit être inclus dans la condition IF. Si la condition exclut tous les enregistrements de la table, une erreur se produit et la commande ne s’exécute pas.

WHILE test

facultatif

Expression conditionnelle qui doit être vraie afin de traiter chaque enregistrement. La commande est exécutée jusqu'à ce que la condition soit évaluée comme fausse ou lorsque la fin de la table est atteinte.

Note

Si vous utilisez WHILE conjointement avec FIRST ou NEXT, le traitement des enregistrements s'arrête dès qu'une limite est atteinte.

FIRST plage | NEXT plage

facultatif

Le nombre d'enregistrements à traiter :

  • FIRSTPour commencer le traitement à partir du premier enregistrement jusqu’à ce que le nombre d’enregistrements spécifié soit atteint
  • NEXTPour commencer le traitement à partir de l’enregistrement actuellement sélectionné jusqu’à ce que le nombre d’enregistrements spécifié soit atteint

Utilisez plage pour indiquer le nombre d'enregistrements à traiter.

Si vous ignorez FIRST et NEXT, tous les enregistrements sont traités par défaut.

OUVRIR

facultatif

Ouvre la table créée par la commande après l'exécution de la commande. Valide uniquement lorsque la commande crée une table de sortie.

Exemples

Évaluation des fournisseurs à l’aide de l’IA

Vous souhaitez effectuer une vérification de base d’une table de fournisseurs afin de détecter d’éventuels fournisseurs fictifs. Vous renseignez les champs nom et adresse du fournisseur dans le service d’IA et lui demandez de classer les fournisseurs dans les catégories Commun, Rare ou Inconnu.

Tous les fournisseurs classés comme inconnus doivent faire l’objet d’une enquête supplémentaire afin de déterminer s’ils existent réellement.

OPEN Vendors
AICOMMAND FIELDS vendor_name address TO "ai_vendor_classification" USER_PROMPT "S’agit-il d’un fournisseur connu ? La valeur de sortie doit être COMMUN s’il est courant, RARE s’il est connu mais peu courant, Inconnu dans les autres cas." MODEL "anthropic.claude-3-5-sonnet-20241022-v2:0" URL "https://hackfest-bedrock-proxy.diligentoneplatform-dev.com/api/v1"

Examen des dépenses à l’aide de l’IA

Vous souhaitez examiner les transactions par carte d’achat et signaler toute dépense présentant un écart entre l’article ou le service et le prix d’achat. Vous saisissez la description de la dépense et les champs de coût dans le service d’IA et lui demandez d’effectuer une évaluation pour déterminer si la dépense est raisonnable.

OPEN PcardTransactions
AICOMMAND FIELDS Description UnitCost TO "ai_expense_cost_review" USER_PROMPT "Compte tenu de la combinaison de la description et du coût unitaire, indiquez si le coût est normal ou inhabituel." MODEL "anthropic.claude-3-5-sonnet-20241022-v2:0" URL "https://hackfest-bedrock-proxy.diligentoneplatform-dev.com/api/v1"

Analyse des sentiments dans les avis sur les hôtels à l’aide de l’IA

Vous souhaitez effectuer une analyse des sentiments et une catégorisation du champ de commentaires en texte libre dans une table contenant les avis des clients sur les hôtels. Vous demandez au service d’IA de classer les commentaires selon les six émotions humaines fondamentales.

OPEN hotel_reviews
AICOMMAND FIELDS reviews_rating reviews_text TO "ai_hotel_reviews_sentiment_analysis" USER_PROMPT "Effectuez une analyse des sentiments sur le champ reviews_text et classez les avis selon les émotions humaines fondamentales suivantes : Joie, Colère, Peur, Tristesse, Dégoût, Surprise." MODEL "anthropic.claude-3-5-sonnet-20241022-v2:0" URL "https://hackfest-bedrock-proxy.diligentoneplatform-dev.com/api/v1" BATCHSIZE 50 OPEN

Remarques

Comment fonctionne l’intégration entre Analytics et un service d’IA externe

La sélection des champs, la création d’une invite utilisateur et l’exécution d’AICOMMAND constituent le point de départ de l’intégration bidirectionnelle entre Analytics et un service d’IA externe :

  1. AnalyticsAICOMMAND extrait le ou les champs sélectionnés d’une table Analytics et les enregistre dans un fichier CSV.

  2. AnalyticsAICOMMAND met l’invite utilisateur et les informations de connexion pour l’API du service d’IA à la disposition du script Python par défaut ou d’un script Python que vous créez.

    Emplacement du script Python par défaut :

    C:\Program Files (x86)\ACL Software\ACL for Windows <version>\acl_py_util\ai_main.py

    Attention

    Ne déplacez pas le script Python par défaut et ne le modifiez en aucune façon. Le fonctionnement par défaut d’AICOMMAND dépend du fait que le script Python par défaut se trouve au bon emplacement et reste inchangé.

  3. PythonLe script Python importe le fichier CSV et le convertit en un cadre de données Pandas.

  4. PythonLe script Python envoie le cadre de données et l’invite utilisateur à l’API du service d’IA. Afin de respecter les limites de données de l’API, le script envoie le cadre de données par lots.

  5. Service d’IALe service d’IA traite le cadre de données en fonction des instructions contenues dans l’invite utilisateur.

  6. Service d’IALe service d’IA renvoie le cadre de données au script Python en y ajoutant la colonne ai_response, qui contient les résultats du traitement par l’IA.

  7. PythonLe script Python convertit le cadre de données renvoyé en une table Analytics et l’exporte vers Analytics en utilisant le nom de la table de sortie spécifiée dans AICOMMAND.

  8. AnalyticsVous pouvez ouvrir la table de sortie dans Analytics pour afficher les résultats du traitement de l’IA ou utiliser les résultats comme base pour une analyse supplémentaire des données.

Utilisation de votre propre script Python

Vous pouvez utiliser votre propre script Python avec AICOMMAND. Créez le script avec la logique que vous souhaitez pour interagir avec l’API du service d’IA. Dans AICOMMAND, utilisez le paramètre SCRIPT pour spécifier le chemin d’accès et le nom de fichier du script.

Une approche possible consiste à copier le script Python par défaut utilisé par AICOMMAND comme point de départ pour votre propre script. Le script par défaut se trouve dans le dossier d’installation Analytics. Si vous avez installé Analytics à l’emplacement par défaut, le script se trouve ici :

C:\Program Files (x86)\ACL Software\ACL for Windows <version>\acl_py_util\ai_main.py

Attention

Ne déplacez pas le script Python par défaut et ne le modifiez en aucune façon. Le fonctionnement par défaut d’AICOMMAND dépend du fait que le script Python par défaut se trouve au bon emplacement et reste inchangé.

Le script Python utilisé par AICOMMAND doit contenir les paramètres de connexion pour le service d’IA externe, qu’il s’agisse du script par défaut ou de votre propre script. Dans votre propre script, vous avez deux options :

  • Utilisez les paramètres de connexion de AnalyticsUtiliser les valeurs d’hôte, de modèle et de clé d’API d’IA spécifiées dans les paramètres AICOMMAND.

    Pour utiliser les valeurs AICOMMAND dans votre script Python, définissez trois variables ou copiez les définitions de variables du script Python par défaut.

    an_api_key = os.getenv("ACL_PY_API_KEY")
    ai_base_url = os.getenv("ACL_PY_AI_BASE_URL")
    ai_model = os.getenv("ACL_PY_AI_MODEL")
  • Utiliser votre propre méthodeUtilisez votre propre méthode pour fournir les valeurs de l’hôte, du modèle et de la clé d’API d’IA. Si vous utilisez votre propre méthode, vous n’avez pas besoin de spécifier les valeurs de connexion dans les paramètres AICOMMAND.

Créer un champ pour l’identifiant unique

Si vous souhaitez joindre la table renvoyée par le service d’IA à la table source d’origine, mais que vous ne disposez pas d’un champ pour l’identifiant unique, vous pouvez utiliser la fonction RECNO( ) pour en créer un avant d’utiliser AICOMMAND.

  1. Dans la table source, créez un champ calculé nommé record_number qui utilise l’expression suivante :

    RECNO( )

    Pour chaque enregistrement de la table, la fonction RECNO( ) ajoute le numéro d’enregistrement unique dans le champ record_number.

    Pour de plus amples informations, consultez la section DEFINE FIELD . . . Commande COMPUTED.

  2. Utilisez AICOMMAND pour traiter les données à l’aide d’un service d’IA externe.

  3. Utilisez le champ record_number comme champ clé commun pour joindre la table renvoyée par le service d’IA à la table source.

    Pour de plus amples informations, consultez la section Commande JOIN.

Séparer plusieurs composants dans le champ ai_response

Dans la table de sortie renvoyée par AICOMMAND, les valeurs du champ ai_response peuvent contenir plusieurs composants ou éléments. Par exemple, la valeur unique ci-dessous contient quatre composants : sentiment, sentiment_score, key_reasons et themes. Le composant themes contient trois valeurs individuelles.

sentiment : Positif, sentiment_score : 0,6, key_reasons : chambres propres, personnel sympathique, problèmes liés au petit-déjeuner, themes : propreté, personnel, nourriture

Pour faciliter l’analyse ultérieure, vous pouvez isoler les composants et les valeurs dans des champs calculés distincts que vous créez à l’aide des expressions calculées ci-dessous.

Pour plus d’informations générales sur la création de champs calculés, consultez la section Définition des champs calculés.

Nom du champ calculé Expression calculée Valeur obtenue
sentiment
REGEXREPLACE(ai_response, "sentiment\:\s(.*?),.*", "$1")
Positif
sentiment_score
VALUE(REGEXREPLACE(ai_response, ".*sentiment_score\:\s(.*?),.*", "$1"), 1)
0,6
key_reasons
REGEXREPLACE(ai_response, ".*key_reasons\:\s(.*?),\sthemes.*", "$1")
chambres propres, personnel sympathique, problèmes avec le petit-déjeuner
themes
REGEXREPLACE(ai_response, ".*themes\:\s(.*?)", "$1")
propreté, personnel, nourriture
theme_1
SPLIT(REGEXREPLACE(ai_response, ".*themes\:\s(.*?)", "$1"), ",", 1)
propreté
theme_2
SPLIT(REGEXREPLACE(ai_response, ".*themes\:\s(.*?)", "$1"), ",", 2)
personnel
theme_3
SPLIT(REGEXREPLACE(ai_response, ".*themes\:\s(.*?)", "$1"), ",", 3)
nourriture