Exemple 1 : configuration 'OpenAI Completions API (GPT-3) - Rows'
Cet exemple vous explique comment utiliser le connecteur analytique OpenAI avec la configuration 'OpenAI Completions API (GPT-3) - Rows'. Il vous guide tout au long d'exercices de base montrant comment incorporer la fonctionnalité à votre modèle de données et à vos expressions de graphique.
Les fonctionnalités de la configuration de ce connecteur sont très similaires à celles de la configuration 'OpenAI Chat Completions API (GPT-3.5, GPT-4) - Rows'. Cependant, ces deux configurations utilisent des modèles différents, qui, à leur tour, donnent des réponses différentes. De plus, en raison des différences dans les noms de paramètres entre ces deux configurations, nous vous conseillons de suivre l'exemple du didacticiel correspondant à votre configuration. Pour la configuration Chat Completions, voir Exemple 3 : configuration 'OpenAI Chat Completions API (GPT-3.5, GPT-4) - Rows'.
Vous pouvez également suivre cet exemple à l'aide du connecteur Azure OpenAI. Lors de l'utilisation de ce connecteur, vous interagissez avec les modèles via la plateforme Microsoft Azure et non via la plateforme OpenAI.
Avant de commencer
Avant de suivre cet exemple, vous devez effectuer les étapes suivantes.
-
Création d'un compte sur la plateforme OpenAI
-
Obtention d'une clé API OpenAI
-
Activation de la fonctionnalité de connexion analytique dans Qlik Cloud
-
Création de connexions avec les configurations de connecteur applicables
Utilisation du connecteur OpenAI dans votre script de chargement
Créez une nouvelle application Qlik Sense, à laquelle vous ajouterez un script de chargement pour communiquer avec la plateforme OpenAI. Les tables que vous chargez avec ce script seront accessibles dans le modèle de données de votre application.
Procédez comme suit. Pour des détails supplémentaires, voir Sélection et chargement de données depuis une connexion OpenAI.
Création de la table de données à envoyer à OpenAI
La première étape consiste à créer une table contenant la requête à envoyer à OpenAI. Les lignes de données de la requête sont connues sous le nom de "completions". Le texte de chaque élément doit être contenu sous forme de lignes dans un seul champ (colonne) de la table. Chaque ligne de cette colonne représente du texte à compléter par l'API OpenAI.
Il peut exister un deuxième champ supplémentaire pour le Champ d'association, mais il doit correspondre au nom de champ spécifié dans la configuration. Il s'agit d'un champ spécial qui ne sera pas envoyé à OpenAI, mais qui est joint aux réponses dans l'objectif de générer un modèle de données Qlik.
Dans votre application, ouvrez l'éditeur de chargement de données et collez le code suivant dans une nouvelle section de script :
SourceTable:
NoConcatenate
LOAD
RowNo() as RowId,
Text
Inline
[Text
translate from English to French: What is the time you go to work?];
Cette table contient un champ appelé Text, qui comporte une seule question à poser à OpenAI. Il est possible d'ajouter d'autres questions sous forme de nouvelles cellules individuelles sous la cellule de la question existante. Le champ RowId est le Champ d'association, qui sera utilisé dans l'étape suivante pour lier les réponses au modèle de données de l'application.
Création de l'instruction LOAD OpenAI
L'étape suivante consiste à créer une autre instruction LOAD pour communiquer avec OpenAI. La table que vous chargez avec cette instruction pointe vers les noms de la table et des champs que vous utilisez pour envoyer les données de requête. En bref, une deuxième table est chargée par le script pour fournir les réponses d'OpenAI à vos éléments de requête.
Pour générer cette partie du script, vous pouvez utiliser l'assistant Sélectionner des données pour la connexion que vous utilisez. Cela génère un modèle de script incluant les noms des propriétés que vous fournissez. Sinon, vous pouvez ajouter cette table manuellement à l'éditeur de script sans utiliser l'assistant.
Localisez la connexion que vous utilisez dans le panneau Sources de données de l'éditeur de chargement de données, puis cliquez sur . Cela ouvre l'assistant Sélectionner des données.
Lorsque vous utilisez l'assistant Sélectionner des données, vous devez fournir deux propriétés :
-
Le nom de la Table résidente. Il s'agit de la table contenant les questions envoyées à OpenAI. Dans ce cas, il s'agit de SourceTable.
-
Le nom du Champ de données. Il s'agit du champ contenant les questions envoyées à OpenAI. Dans ce cas, il s'agit de Text.
Sous Tables, cochez la case de la table appelée openai.
Lorsque vous cliquez sur Insérer le script, la nouvelle table est ajoutée au script de chargement.
À présent que l'instruction LOAD OpenAI a été ajoutée, votre script de chargement ressemble à ceci :
Vous êtes maintenant prêt à exécuter le script de chargement.
Chargement des données dans l'application
Une fois le script terminé, cliquez sur Charger les données. Cette opération réalise les communications avec OpenAI et insère les tables dans le modèle de données de votre application.
Ouvrez le visionneur de modèle de données et notez que les deux tables sont liées l'une à l'autre, comme prévu. Dans le volet Aperçu, la réponse d'OpenAI à la question posée est incluse dans la deuxième table.
Vous pouvez maintenant générer un contenu analytique via les données chargées dans l'application. Vous n'aurez besoin de faire référence à la connexion OpenAI dans aucun graphique que vous créez via ces données. Pour savoir comment utiliser la connexion OpenAI directement dans des expressions de graphique (plutôt que dans le script de chargement), consultez Utilisation du connecteur OpenAI dans des expressions de graphique.
Utilisation du connecteur OpenAI dans des expressions de graphique
Outre l'ajout de questions et de réponses OpenAI au modèle de données de votre application via le script de chargement, vous pouvez effectuer ces opérations directement dans un graphique de votre application. Cela peut être une alternative à l'utilisation de tables dans le script de chargement pour communiquer avec OpenAI.
Les données d'un seul champ font l'aller-retour entre vous et OpenAI. Dans de nombreux cas, le code utilisé pour une connexion de script de chargement peut être adapté pour être réutilisé dans un graphique, en y intégrant quelques différences notables.
Pour des détails supplémentaires, voir Utilisation de connexions OpenAI dans des expressions de visualisation.
Considérations relatives aux volumes de requêtes de données
Il est recommandé d'utiliser uniquement des connexions OpenAI dans des expressions de graphique pour une ou plusieurs lignes de données. Il n'est pas recommandé d'utiliser des expressions de graphique pour envoyer de grandes quantités de données à OpenAI.
Il est important de connaître le nombre de lignes que vous envoyez à chaque requête. Des erreurs de configuration de la connexion dans une expression de graphique peuvent produire des requêtes involontairement volumineuses (par exemple, des lignes identiques avec la même question en raison de l'utilisation inappropriée du modèle de données dans un graphique). Avant d'interagir avec une plate-forme tierce, assurez-vous de savoir comment les champs utilisés dans le calcul des expressions de graphique et leur placement dans le modèle de données affectent vos accords financiers et de facturation avec le tiers. Une utilisation supérieure de la plate-forme externe peut entraîner une augmentation des coûts encourus.
Suivez ces consignes pour modérer et limiter la taille de vos requêtes :
-
Utilisez uniquement la connexion dans une expression de graphique Texte et image. L'utilisation de la connexion OpenAI dans un objet Table est vivement déconseillée, en particulier si vous ajoutez l'expression à une table à laquelle une ou plusieurs dimensions ont déjà été ajoutées.
-
Si l'expression de graphique est liée au modèle de données de votre application, utilisez une instruction if dans l'expression pour calculer uniquement le graphique lorsqu'une seule sélection est effectuée dans l'application. Cela réduit radicalement le nombre de lignes des requêtes envoyées à OpenAI par votre graphique.
-
Si vous utilisez la connexion OpenAI pour envoyer des requêtes de grande taille, utilisez la connexion dans votre script de chargement au lieu de l'utiliser dans une expression de graphique, de sorte que les données soient préchargées dans votre modèle de données.
Exercice : Création d'une expression de graphique de base
Procédez comme suit :
-
Créez une application Qlik Sense et ouvrez une nouvelle feuille en mode d'édition avancé.
Note InformationsLa connexion analytique que vous utilisez pour l'expression de graphique doit être déjà créée dans l'espace dans lequel vous créez l'application. Vous pouvez le faire dans l'éditeur de chargement de données au sein d'une application ou depuis la page Créer du centre d'activités Analyses. Pour plus d'informations, voir Création d'une connexion OpenAI. -
Faites glisser un graphique Texte et image sur la feuille.
-
Dans le panneau des propriétés, sous Données > Mesures, ajoutez une mesure et cliquez sur pour ouvrir l'éditeur d'expression.
-
Collez l'expression suivante dans l'éditeur d'expression :
endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI Connection for Rows Completions (GPT-3)","column":"choices.text"}}', 'Translate this text from english to spanish: The sun was rising over the new tomorrow with a tinge of excitement.')
Note InformationsDans cet exemple, il est acceptable de ne pas utiliser d'instruction if, car nous envoyons uniquement une seule ligne de données et il n'existe pas de connexion à un modèle de données. Dans d'autres scénarios, utilisez une instruction if pour être sûr que le graphique soit calculé uniquement lorsqu'une seule valeur de champ est sélectionnée dans l'application. Pour des exemples, voir Exemples rapides.Note InformationsPour que ce code exact fonctionne correctement dans votre application, il faut que votre connexion OpenAI soit également configurée avec la même valeur Name que la valeur connectionname spécifiée dans l'expression. Pour les valeurs utilisées pour les besoins de ce didacticiel, voir Création des connexions. -
Cliquez sur Appliquer.
Exercice : Création d'une zone de saisie de texte via une variable
Sinon, vous pouvez remplacer la chaîne de question par le nom d'une variable que vous avez créée dans l'application, permettant ainsi la création d'une zone de saisie dans laquelle les consommateurs d'applications peuvent saisir leurs propres questions sans interagir avec des expressions.
Il est possible d'utiliser cette simple interface pour enrichir les données de votre application à l'aide d'informations contextuelles générées en temps réel.
Procédez comme suit :
-
Créez une application et ajoutez des données et des visualisations à une nouvelle feuille.
-
Cliquez sur pour créer une variable. Pour cet exercice, donnez-lui le Nom vUserQuestion. Laissez les autres paramètres vides.
-
Dans le panneau des ressources, faites glisser le graphique Entrée de variable sur la feuille. Il se trouve sous Extensions > Qlik Dashboard bundle.
-
Dans le panneau des propriétés du graphique Entrée de variable, développez Aspect > Variable.
-
Sous Nom, sélectionnez vUserQuestion.
-
Sous Afficher comme, sélectionnez Zone de saisie.
-
Dans le panneau des ressources, faites glisser un graphique Texte et image sur la feuille.
-
Dans le panneau des propriétés, sous Données > Mesures, ajoutez une mesure et cliquez sur pour ouvrir l'éditeur d'expression.
-
Collez l'expression suivante dans l'éditeur d'expression :
if(vUserQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI Connection for Rows Completions (GPT-3)","column":"choices.text"}}',vUserQuestion))
Note InformationsPour que ce code exact fonctionne correctement dans votre application, il faut que votre connexion OpenAI soit également configurée avec la même valeur Name que la valeur connectionname spécifiée dans l'expression. Pour les valeurs utilisées pour les besoins de ce didacticiel, voir Création des connexions. -
Cliquez sur Appliquer.
-
Redimensionnez ces zones de saisie et de réponse en fonction de vos besoins.
Vous devriez maintenant pouvoir quitter le mode d'édition et saisir une question dans la zone de saisie. Lorsque vous appuyez sur Entrée ou lorsque vous cliquez ailleurs sur la feuille, une réponse d'OpenAI est fournie dans la zone de réponse.
Dans cet exercice, la connexion OpenAI ne communique pas du tout avec le modèle de données de l'application. Mais il est possible de créer des applications beaucoup plus sophistiquées entièrement intégrées aux données chargées dans l'application et qui répondent aux sélections que vous effectuez dans l'application.
Pour plus d'informations sur l'utilisation de variables, voir Création d'une variable et Contrôle Variable input (Entrée de variable).
Différences entre le code du script de chargement et le code d'une expression de graphique
Dans ces expressions de graphique, nous avons adapté le code saisi dans la section précédente sur le script de chargement. La liste suivante souligne les principales différences entre la version avec script de chargement et les expressions de graphique :
-
Nous avons remplacé ScriptEval par ScriptAggrStr. Cela indique que nous envoyons une seule ligne de données et que nous attendons une seule ligne en retour. Cela est nécessaire si vous utilisez des données personnalisées telles qu'une variable ou une constante, comme dans ce cas. La mention "Str" indique que nous envoyons et que nous recevons des valeurs textuelles.
-
Nous avons ajouté une nouvelle propriété, column, d'une valeur choice.text. Elle est imbriquée dans l'objet endpoint. Cet ajout à la chaîne de configuration est nécessaire pour spécifier le champ à renvoyer du connecteur. Dans une expression de graphique, un seul champ est utilisé, et nous devons indiquer lequel.
Pour plus d'informations, consultez Syntaxe server-side extension (SSE).