Développer un flux d’invite
Flux d’invite est un outil de développement qui simplifie le cycle de développement d’applications d’IA avec des grands modèles de langage (LLM). Dans cet article, vous allez apprendre à créer et à développer un flux d’invite et un flux de conversation dans Azure Machine Learning studio.
Alors que la dynamique des applications d’IA basées sur des LLM s’intensifie, Flux d’invite fournit une solution complète qui simplifie le processus de prototypage, d’expérimentation, d’itération et de déploiement des applications d’IA. Avec Flux d’invite, vous pouvez :
- Orchestrer des flux exécutables avec des modèles LLM, invites et outils Python via un graphique visuel.
- Tester, déboguer et itérer facilement vos flux.
- Créer des variantes d’invite et comparer leurs performances.
Créer et développer votre flux d’invite
Pour créer un flux d’invite, sélectionnez Flux d’invite dans le volet de navigation de gauche d’Azure Machine Learning studio, puis sélectionnez Créer dans la page Flux d’invite.
Dans l’écran Créer un flux, vous pouvez créer un flux de plusieurs façons :
- En créant un flux Standard, Conversation ou Évaluation à partir d’un modèle.
- En clonant un exemple disponible dans Explorer la galerie.
- En important un flux existant à partir des fichiers locaux ou d’un partage de fichiers.
Pour créer un flux, sélectionnez Créer ou Cloner sur la carte de flux souhaitée. Dans le volet d’écran suivant, vous pouvez modifier le nom du nouveau flux si vous le souhaitez, puis sélectionner Créer ou Cloner. Le nouveau flux s’ouvre dans l’interface utilisateur de création.
Session de calcul
Avant de commencer la création, démarrez la session de calcul en sélectionnant Démarrer la session de calcul en haut de la page de création du flux. Une session de calcul est nécessaire pour l’exécution du flux. La session de calcul gère les ressources de calcul nécessaires à l’exécution de l’application, y compris une image Docker contenant tous les packages de dépendances nécessaires.
Page de création
Le démarrage de la session de calcul peut prendre quelques minutes. Pendant que la session de calcul démarre, inspectez les parties de la page de création du flux.
L’affichage Flux ou aplati situé sur le côté gauche de la page est la zone de travail principale où vous créez le flux. Dans l’affichage aplati, vous pouvez modifier les nœuds, les outils, les requêtes et les entrées, exécuter les nœuds ou tout le flux, et définir et afficher les sorties.
La section Fichiers en haut à droite affiche le dossier et la structure de fichiers du flux. Chaque flux a un dossier qui contient un fichier flow.dag.yaml, des fichiers de code source et des dossiers système. Vous pouvez ajouter, modifier, supprimer, charger ou télécharger des fichiers à des fins de test, de déploiement ou de collaboration.
L’affichage Graphique en bas à droite permet de visualiser la structure du flux. Vous pouvez soit effectuer un zoom avant ou arrière, soit utiliser la disposition automatique. Vous ne pouvez pas modifier directement cet affichage, mais vous pouvez sélectionner un nœud pour le localiser et le modifier dans l’affichage aplati.
Entrée et sortie de flux
Dans les sections Entrées et Sorties, vous pouvez afficher, ajouter/supprimer et modifier des entrées et des sorties.
L’entrée de flux représente les données transmises dans le flux dans son ensemble. Vous définissez le schéma d’entrée en spécifiant le nom et le type, et vous définissez la valeur de chaque entrée pour tester le flux. Vous pouvez référencer l’entrée de flux dans les nœuds de flux en utilisant
${input.<input name>}
.La sortie de flux correspond aux données produites par le flux dans son ensemble, offrant un résumé des résultats de l’exécution du flux. Vous pouvez définir la valeur de sortie de flux en référençant une sortie de nœud unique à l’aide de la syntaxe
${<node name>.output}
ou${<node name>.output.<field name>}
. Vous pouvez afficher et exporter la table des résultats de sortie une fois l’exécution de flux ou l’exécution par lots terminée.
Outils de flux
Dans un flux, vous pouvez utiliser différents types d’outils, comme LLM, Python, Prompt, Serp API et Sécurité du Contenu. La sélection d’un outil ajoute un nouveau nœud pour cet outil à la fin du flux. Vous devez spécifier le nom du nœud et définir les configurations nécessaires. Vous pouvez utiliser les contrôles du nœud pour modifier sa position dans le flux.
Entrées et sorties de nœud
Les outils LLM et Requête utilisent Jinja comme langage de création de modèles pour générer dynamiquement la requête. Par exemple, vous pouvez utiliser {{}}
pour encadrer votre nom d’entrée au lieu d’utiliser du texte fixe, ce qui vous permet de le remplacer à la volée.
Vous pouvez définir les Entrées et Sorties du nœud de plusieurs façons :
- Définissez directement la Valeur d’entrée.
- Référencez l’entrée de flux en utilisant
${input.<input name>}
. - Référencez la sortie du nœud en utilisant
${<node name>.output}
ou${<node name>.output.<field name>}
.
Quand vous avez terminé de composer une requête ou un script Python, sélectionnez Valider et analyser l’entrée pour que le système analyse automatiquement l’entrée du nœud en fonction du modèle de requête et de l’entrée de fonction Python.
Vous pouvez lier des nœuds en référençant la sortie du nœud. Par exemple, vous pouvez référencer la sortie du nœud LLM dans l’entrée du nœud Python pour que le nœud Python consomme la sortie du nœud LLM. Dans l’affichage Graphique, vous pouvez voir les deux nœuds liés.
Nœuds LLM
Pour un nœud Azure OpenAI LLM, vous devez sélectionner Connexion, Api et nom_déploiement, puis définir la Requête. Vous utilisez la connexion pour stocker et gérer de manière sécurisée les clés secrètes ou d’autres informations d’identification sensibles nécessaires pour interagir avec Azure OpenAI.
Si vous n’avez pas encore de connexion, créez-en une avant d’ajouter le nœud LLM et assurez-vous que la ressource Azure OpenAI dispose d’un déploiement de type conversation ou saisie semi-automatique. Pour plus d’informations, consultez Configurer une connexion et Créer une ressource et déployer un modèle à l’aide d’Azure OpenAI.
Nœuds Python
Pour utiliser l’outil Python, vous devez définir le script Python, la valeur d’entrée et d’autres configurations. Un nouveau nœud Python fournit la fonction Python réutilisable suivante qui définit les entrées et sorties.
from promptflow import tool
# The inputs section will change based on the arguments of the tool function, after you save the code
# Adding type to arguments and return value will help the system show the types properly
# Please update the function name/signature per need
@tool
def my_python_tool(input1: str) -> str:
return 'hello ' + input1
Contrôle conditionnel
Le flux d’invite offre un contrôle conditionnel qui vous permet de définir des conditions pour l’exécution de n’importe quel nœud dans un flux.
Le contrôle conditionnel offre la possibilité d’associer chaque nœud dans un flux à une configuration d’activation. Cette configuration est essentiellement une instruction when
qui détermine quand un nœud doit être exécuté. Cette fonctionnalité révèle toute sa puissance dans des flux complexes où l’exécution de certaines tâches dépend du résultat de tâches précédentes. En utilisant le contrôle conditionnel, vous pouvez configurer vos nœuds spécifiques pour qu’ils s’exécutent uniquement lorsque les conditions spécifiées sont remplies.
Définissez la configuration d’activation d’un nœud en sélectionnant le bouton Configuration d’activation dans la carte du nœud. Ajoutez une instruction When et définissez la condition. Vous pouvez définir les conditions en référençant l’entrée de flux ou une sortie de nœud. Par exemple, vous pouvez définir la condition ${input.<input name>}
ou ${<node name>.output}
comme des valeurs spécifiques. Si la condition n’est pas remplie, le nœud est ignoré et son état indique Contourné.
Tester un flux
Vous pouvez tester un flux en exécutant un seul nœud ou l’ensemble du flux.
- Pour exécuter un seul nœud, sélectionnez l’icône Exécuter sur la carte du nœud. Une fois l’exécution du nœud terminée, vous pouvez rapidement vérifier les résultats dans la section Sorties du nœud.
- Pour exécuter l’ensemble du flux, sélectionnez Exécuter en haut de la page.
Sorties de flux
Après avoir sélectionné Exécuter pour exécuter le flux, vous pouvez voir l’état de l’exécution dans la bannière en haut de la page. Sélectionnez Afficher les sorties dans la bannière supérieure ou la barre de menus supérieure pour voir des informations détaillées sur les entrées, les sorties, l’exécution du flux et l’orchestration.
Une fois l’exécution de flux terminée, vous pouvez sélectionner Afficher les sorties pour vérifier toutes les sorties historiques sur l’écran Sorties.
Sélectionnez l’onglet Trace dans l’écran Sorties pour afficher un graphique contenant des informations sur la durée et le coût du jeton associé du flux. Sélectionnez flux sous nom de nœud pour afficher des informations détaillées sur la vue d’ensemble du flux dans le volet droit.
Développez flux et sélectionnez une étape pour afficher des informations détaillées sur cette étape. Vous pouvez voir la durée de chaque exécution de nœud dans l’arborescence d’étendues. Pour plus d’informations, consultez Spécification de l’étendue de la trace.
Développer un flux de conversation
Un flux de conversation est un type spécifique de flux d’invite conçu pour le développement d’applications conversationnelles. Un flux de conversation s’appuie sur les fonctionnalités de flux standard pour fournir une prise en charge améliorée des entrées/sorties de conversation et de l’historique des conversations. En utilisant un flux de conversation, vous pouvez facilement créer un chatbot qui gère les entrées et sorties de conversation.
Pour créer un flux de conversation, dans l’écran Créer un flux, sélectionnez Créer sur la carte Flux de conversation ou sélectionnez Conversation dans Explorer la galerie et clonez l’un des flux disponibles.
Dans la page de création du flux de conversation, une étiquette Conversation permet de distinguer ce type de flux des flux standard et d’évaluation. Pour tester un flux de conversation, sélectionnez Conversation en haut de la page afin d’ouvrir une zone Conversation.
Entrée de conversation, sortie de conversation et historique des conversations
Les éléments les plus importants qui différencient un flux de conversation d’un flux standard sont l’entrée de conversation, l’historique des conversations et la sortie de conversation. L’historique des conversations et l’entrée de conversation sont obligatoires dans les flux de conversation.
L’entrée de conversation fait référence aux messages ou requêtes envoyés par les utilisateurs au chatbot. Une gestion efficace de ces entrées est essentielle à la réussite d’une conversation, car elle implique de comprendre les intentions de l’utilisateur, d’extraire les informations pertinentes et d’envoyer des réponses appropriées.
L’historique des conversations est l’enregistrement de toutes les interactions entre l’utilisateur et le chatbot, y compris les entrées utilisateur et les sorties générées par l’IA. Conserver un historique des conversations est essentiel pour assurer le suivi du contexte de conversation et garantir que l’IA peut générer des réponses contextuellement pertinentes.
La sortie de conversation fait référence aux messages générés par l’IA qui sont envoyés aux utilisateurs en réponse à leurs entrées. La génération d’une sortie de conversation contextuelle et intéressante est essentielle pour une expérience utilisateur positive.
Un flux de conversation peut avoir plusieurs entrées. Dans la section Entrées du flux de conversation, vous marquez l’une des entrées comme Entrée de conversation et vous remplissez la valeur d’entrée de conversation en entrant une question dans la zone Conversation.
Gérer l’historique des conversations
Pour vous aider à gérer l’historique des conversations, chat_history
dans la section Entrées est réservé à la représentation de l’historique des conversations. Vous ne pouvez pas modifier manuellement chat_history
.
L’historique des conversations est structuré comme une liste d’entrées et de sorties. Toutes les interactions dans la zone de conversation, y compris les entrées de conversation utilisateur, les sorties de conversation générées et les autres entrées et sorties de flux, sont automatiquement stockées dans l’historique des conversations. Le code suivant montre la structure de l’historique des conversations.
[
{
"inputs": {
"<flow input 1>": "xxxxxxxxxxxxxxx",
"<flow input 2>": "xxxxxxxxxxxxxxx",
"<flow input N>""xxxxxxxxxxxxxxx"
},
"outputs": {
"<flow output 1>": "xxxxxxxxxxxx",
"<flow output 2>": "xxxxxxxxxxxxx",
"<flow output M>": "xxxxxxxxxxxxx"
}
},
{
"inputs": {
"<flow input 1>": "xxxxxxxxxxxxxxx",
"<flow input 2>": "xxxxxxxxxxxxxxx",
"<flow input N>""xxxxxxxxxxxxxxx"
},
"outputs": {
"<flow output 1>": "xxxxxxxxxxxx",
"<flow output 2>": "xxxxxxxxxxxxx",
"<flow output M>": "xxxxxxxxxxxxx"
}
}
]
Remarque
Quand vous effectuez des tests dans la zone Conversation, vous enregistrez automatiquement l’historique des conversations. Pour les exécutions par lots, vous devez inclure l’historique des conversations dans le jeu de données d’exécutions par lots. Si aucun historique des conversations n’est disponible, définissez chat_history
sur une liste vide []
dans le jeu de données d’exécution par lots.
Pour récupérer les interactions passées, référencez chat_history
dans vos requêtes. Vous pouvez ensuite vous référer aux entrées et sorties précédentes pour créer des réponses adaptées au contexte. L’incorporation de l’historique des conversations dans vos requêtes est essentielle pour créer des réponses de chatbot contextuelles et intéressantes.
Vous pouvez utiliser la grammaire for-loop du langage Jinja pour afficher une liste d’entrées et de sorties à partir de chat_history
.
{% for item in chat_history %}
user:
{{item.inputs.question}}
assistant:
{{item.outputs.answer}}
{% endfor %}
Effectuer un test via la zone de conversation
La zone Conversation offre un moyen interactif de tester votre flux de conversation en simulant une conversation avec votre chatbot. Pour tester votre flux de conversation à l’aide de la zone Conversation :
- Sélectionnez Conversation pour ouvrir la barre latérale Conversation.
- Entrez des questions de test dans la zone de conversation en bas de l’écran pour les envoyer au chatbot.
- Examinez les réponses de ce dernier pour vous assurer qu’elles sont contextuellement appropriées et précises.
- Sélectionnez Afficher les sorties en haut de la page de création pour afficher et déboguer rapidement les entrées, les sorties et l’historique des conversations.
- Dans l’écran Sorties, sélectionnez l’onglet Trace, puis flux pour afficher des informations détaillées sur le flux dans le volet de droite. Développez flux et sélectionnez une étape pour afficher des informations détaillées sur cette étape.