Partager via


Développer un flux rapide

Important

Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service, nous la déconseillons dans des charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Un flux rapide est un outil de développement conçu pour simplifier l’ensemble du cycle de développement des applications IA optimisées par des modèles LLM (Large Language Model). Le flux rapide fournit une solution complète qui simplifie le processus de prototypage, d’expérimentation, d’itération et de déploiement de vos applications IA.

Avec le flux rapide, 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 vos flux avec facilité.
  • Créer des variantes d’invite et comparer leurs performances.

Dans cet article, vous allez apprendre à créer et développer votre premier flux rapide dans Azure AI Studio.

Prérequis

  • Si vous n’avez pas encore de projet Azure AI Studio, commencez par créer un projet.
  • Le flux d’invite nécessite une session de calcul. Si vous n’avez pas de runtime, vous pouvez en créer une dans Azure AI Studio.
  • Vous avez besoin d’un modèle déployé.

Créer et développer votre flux d’invite

Vous pouvez créer un flux en clonant les exemples disponibles dans la galerie ou en créant un flux à partir de zéro. Si vous disposez déjà de fichiers de flux en local ou dans un partage de fichiers, vous pouvez également importer les fichiers pour créer un flux.

Pour créer un flux rapide à partir de la galerie dans Azure AI Studio :

  1. Connectez-vous à Azure AI Studio et sélectionnez votre projet.

  2. Dans le menu de gauche réductible, sélectionnez Flux d’invite.

  3. Sélectionnez + Créer.

  4. Dans la vignette de flux standard, sélectionnez Créer.

  5. Dans la page Créer un flux, entrez un nom de dossier, puis sélectionnez Créer.

    Capture d’écran de la sélection et de la création d’un flux standard.

  6. La page de création de flux rapide s’ouvre. Vous pouvez commencer à créer votre flux maintenant. Par défaut, vous voyez un exemple de flux. Cet exemple de flux contient des nœuds pour les outils LLM et Python.

    Capture d’écran de l’entrée et de la sortie de flux dans la page de flux d’invite de modification.

    Remarque

    L’affichage graphique uniquement à des fins de visualisation. Il présente la structure du flux que vous développez. Vous ne pouvez pas modifier directement l’affichage graphique, mais vous pouvez effectuer un zoom avant, un zoom arrière et un défilement. Vous pouvez sélectionner un nœud dans l’affichage graphique pour mettre en surbrillance et accéder au nœud dans la vue d’édition de l’outil.

  7. Si vous le souhaitez, vous pouvez ajouter d’autres outils au flux. Les options d’outil visibles sont LLM, Promptet Python. Pour afficher d’autres outils, sélectionnez + Plus d’outils.

    Capture d’écran de l’emplacement où vous trouverez d’autres outils sur la page de flux d’invite de modification.

  8. Sélectionnez une connexion et un déploiement dans l’éditeur d’outils LLM.

    Capture d’écran de la connexion et du déploiement sélectionnés dans l’outil LLM sur la page de flux d’invite de modification.

  9. Sélectionnez Exécuter pour exécuter le flux.

    Capture d’écran de l’emplacement de sélection de l’exécution sur la page de flux d’invite de modification.

  10. L’état de l’exécution du flux s’affiche comme En cours d’exécution.

    Capture d’écran du flux dans l’état en cours d’exécution sur la page de flux d’invite de modification.

  11. Une fois l’exécution de flux terminée, sélectionnez Afficher les sorties pour afficher les résultats du flux.

    Capture d’écran de l’emplacement où vous pouvez sélectionner pour afficher les résultats de flux à partir de la page de flux d’invite de modification.

  12. Vous pouvez afficher l’état de l’exécution de flux et la sortie dans la section Sorties.

    Capture d’écran des détails de sortie.

Création du flux

Chaque flux est représenté par un dossier qui contient un fichier `flow.dag.yaml``, des fichiers de code source et des dossiers système. Vous pouvez ajouter de nouveaux fichiers, modifier des fichiers existants et supprimer des fichiers. Vous pouvez également exporter les fichiers en local ou importer des fichiers depuis l’environnement local.

En plus de la modification intraligne du nœud dans l’affichage aplati, vous pouvez également activer le Mode de fichier brut et sélectionner le nom du fichier pour le modifier dans l’onglet d’ouverture du fichier.

Entrée et sortie de flux

L’entrée de flux représente les données transmises dans le flux dans son ensemble. Définissez le schéma d’entrée en spécifiant le nom et le type. Définissez la valeur d’entrée de chaque entrée pour tester le flux. Vous pouvez référencer l’entrée de flux ultérieurement dans les nœuds de flux à l’aide de la syntaxe ${input.[input name]}.

La sortie de flux représente les données produites par le flux dans son ensemble, qui résume les résultats de l’exécution du flux. Vous pouvez afficher et exporter la table de sortie une fois l’exécution du flux ou l’exécution par lots terminée. Définissez la valeur de sortie de flux en référençant la sortie de nœud unique de flux à l’aide de la syntaxe ${[node name].output} ou ${[node name].output.[field name]}.

En référençant la sortie du nœud, vous pouvez lier des nœuds ensemble. Par exemple, vous pouvez référencer la sortie du nœud LLM dans l’entrée du nœud Python, afin que le nœud Python puisse consommer la sortie du nœud LLM et, dans la vue du graphique, vous pouvez voir que les deux nœuds sont liés ensemble.

Activer le contrôle conditionnel sur le flux

Le flux rapide offre non seulement un moyen simplifié d’exécuter le flux, mais il apporte également une fonctionnalité puissante pour les développeurs, le contrôle conditionnel, qui permet aux utilisateurs de définir des conditions pour l’exécution d’un nœud dans un flux.

Fondamentalement, le contrôle conditionnel offre la possibilité d’associer chaque nœud dans un flux à une activation de la configuration. Cette configuration est essentiellement une instruction « when » qui détermine quand un nœud doit être exécuté. La puissance de cette fonctionnalité est réalisée lorsque vous avez des flux complexes où l’exécution de certaines tâches dépend du résultat des 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.

Plus précisément, vous pouvez définir l’activation de la configuration pour un nœud en sélectionnant le bouton Activer la configuration dans la carte de nœud. Vous pouvez ajouter l’instruction « when » et définir la condition. Vous pouvez définir les conditions en référençant l’entrée de flux ou la sortie de nœud. Par exemple, vous pouvez définir la condition ${input.[input name]} comme valeur spécifique ou ${[node name].output} comme valeur spécifique.

Si la condition n’est pas remplie, le nœud est ignoré. L’état du nœud s’affiche comme « Contourné ».

Tester le flux

Vous pouvez tester le flux de deux façons :

  • Exécuter un seul nœud.
    • Pour exécuter un nœud unique, sélectionnez l’icône Exécuter sur le nœud dans l’affichage aplati. Une fois l’exécution terminée, vous pouvez vérifier rapidement le résultat dans la section de sortie du nœud.
  • Exécuter l’ensemble du flux.
    • Pour exécuter l’ensemble du flux, sélectionnez le bouton Exécuter en haut à droite.

Afficher le résultat et la trace des tests (préversion)

Pour l’ensemble du flux, après avoir exécuté le flux, vous pouvez voir l’état de l’exécution dans la bannière d’exécution. Vous pouvez ensuite sélectionner Afficher la trace, afin de vérifier le résultat et observer l’exécution du flux, où vous pouvez voir l’entrée et la sortie de l’ensemble du flux et de chaque nœud, ainsi que des informations plus détaillées pour le débogage. Ceci est disponible pendant l’exécution et une fois l’exécution terminée.

Comprendre l’affichage de la trace

Le type de trace d’un flux d’invite est désigné en tant que Flux. Dans l’affichage de la trace, vous pouvez observer la séquence claire des outils utilisés pour l’orchestration de flux.

Chaque étendue de niveau 2 sous la racine du flux représente un nœud dans le flux, exécutée sous la forme d’un appel de fonction. Par conséquent, le type d’étendue est identifié en tant que Fonction. Vous pouvez voir la durée de chaque exécution de nœud dans l’arborescence d’étendues.

Dans l’arborescence d’étendues, les appels LLM sont facilement identifiables en tant qu’étendue LLM. Celles-ci fournissent des informations sur la durée de l’appel LLM et le coût de jeton associé.

En sélectionnant une étendue, vous pouvez voir les informations détaillées sur le côté droit. Cela inclut l’entrée et la sortie, le Json brut et l’exception, qui sont tous utiles pour l’observation et le débogage.

 Capture d’écran des détails de la trace.

Remarque

Dans le kit de développement logiciel (SDK) de flux d’invite, nous avons défini plusieurs types d’étendues, notamment LLM, Fonction, Incorporation, Récupération et Flux. Le système crée automatiquement des étendues avec les informations d’exécution dans des attributs et des événements désignés.

Pour en savoir plus sur les types d’étendues, consultez Étendue de trace.

Une fois l’exécution du flux terminée, pour vérifier les résultats, vous pouvez sélectionner le bouton Afficher les résultats de test pour vérifier tous les enregistrements d’exécution historiques dans une liste. Par défaut, les enregistrements d’exécution créés au cours des 7 derniers jours sont affichés. Vous pouvez sélectionner le Filtre pour modifier la condition.

Capture d’écran du résultat du test de flux.

Vous pouvez également sélectionner le Nom de l’enregistrement d’exécution pour afficher les informations détaillées dans l’affichage de la trace.

Développer un flux de conversation

Un flux de conversation est conçu pour le développement d’applications de conversation, en s’appuyant sur les fonctionnalités du flux standard et en fournissant une prise en charge améliorée des entrées et sorties de conversation et une gestion de l’historique des conversations. Avec le flux de conversation, vous pouvez facilement créer un chatbot qui gère les entrées et sorties de conversation.

Dans la page de création de flux de conversation, une étiquette « conversation » permet de distinguer ce type de flux de ceux standard et d’évaluation. Pour tester le flux de conversation, sélectionnez le bouton « Conversation » pour ouvrir une zone de conversation.

Entrées/sorties de conversation et historique des conversations

Les éléments les plus importants qui différencient un flux de conversation d’un flux standard sont les entrées et les sorties de conversation ainsi que l’historique des conversations.

  • Entrée de conversation : désigne les messages ou requêtes envoyé(e)s au chatbot par les utilisateurs. 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.
  • Historique des conversations : 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.
  • Sortie de conversation : désigne les messages générés par l’IA qui sont envoyés à l’utilisateur en réponse à ses 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, mais l’historique des conversations et l’entrée de conversation en sont des éléments obligatoires.

  • Dans la section des entrées du flux de conversation, une entrée de flux peut être marquée comme entrée de conversation. Vous pouvez ensuite remplir la valeur d’entrée de conversation en tapant dans la zone de conversation.

  • Le flux rapide peut aider l’utilisateur à gérer l’historique des conversations. Le champ chat_history de la section Entrées est réservé à la représentation de l’historique des conversations. 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. L’utilisateur ne peut pas définir manuellement la valeur de chat_history dans la section Entrées. Ces informations sont structurées sous la forme d’une liste d’entrées et de sorties :

    [
    {
        "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

La possibilité d’enregistrer ou de gérer automatiquement l’historique des conversations est une fonctionnalité de la page de création lors de l’exécution de tests dans la zone de conversation. Pour les exécutions par lots, il est nécessaire pour les utilisateurs d’inclure l’historique des conversations dans le jeu de données d’exécution par lots. Si aucun historique des conversations n’est disponible pour les tests, définissez simplement chat_history sur une liste vide [] dans le jeu de données d’exécution par lots.

Créer une invite avec l’historique des conversations

L’incorporation de l’historique des conversations dans vos invites est essentielle pour créer des réponses de chatbot contextuelles et intéressantes. Dans vos invites, vous pouvez référencer chat_history pour récupérer des interactions passées. Vous référencez ainsi les entrées et sorties précédentes pour créer des réponses contextuellement pertinentes.

Utilisez la grammaire des boucles for du langage Jinja pour afficher une liste d’entrées et de sorties depuis 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 de conversation offre un moyen interactif de tester votre flux de conversation en simulant une conversation avec votre chatbot. Pour cela, procédez comme suit :

  1. Sélectionnez le bouton « Conversation » pour ouvrir la zone de conversation.
  2. Tapez vos entrées de test dans la zone de conversation, puis appuyez sur Entrée pour les envoyer au chatbot.
  3. Examinez les réponses de ce dernier pour vous assurer qu’elles sont contextuellement appropriées et précises.
  4. Affichage de la trace en place pour observer et déboguer rapidement.

Étapes suivantes