Tous les produits
Search
Centre de documentation

Platform For AI:Référence des nœuds de workflow

Dernière mise à jour :Sep 11, 2026

LangStudio propose des nœuds de workflow prédéfinis pour le contrôle du flux, les LLM, les agents, la récupération de données, l'analyse de documents, la reconnaissance vocale et les scripts Python.

Contrôle du flux

Start

Remarque

Un application flow ne peut comporter qu'un seul nœud Start.

Le nœud Start marque le début de l'exécution et déclare les paramètres d'entrée du application flow.

  • Pour les flux conversationnels, le système fournit deux champs par défaut : l'historique des conversations et l'entrée utilisateur. Ajoutez des variables personnalisées selon vos besoins. Pour accepter les fichiers téléchargés par l'utilisateur, définissez une variable d'entrée avec le type de fichier. Pour plus de détails, consultez Entrée et sortie de type fichier.

    image

  • Lorsque vous exécutez le application flow, configurez les paramètres d'entrée pour la session en cours dans le panneau de conversation.

    image

Conditional branch

Ce nœud implémente la logique if-else pour le contrôle du flux. Il évalue les conditions et dirige l'exécution vers la première branch correspondante. Si aucune condition n'est true, la else branch s'exécute. Associez ce nœud au nœud Variable aggregate pour fusionner les résultats provenant de différentes branches.

  • Configuration

    image

  • Input

    Lorsque vous configurez les conditions de branche, tenez compte des points suivants :

    • Chaque branche représente un chemin d'exécution. La dernière branche est la else branch, qui s'exécute lorsqu'aucune autre condition ne correspond et qui ne peut pas être modifiée.

    • Chaque branche peut contenir plusieurs conditions, combinables à l'aide de la logique ET/OU.

    • Vérifiez les sorties des nœuds en amont, les opérateurs (tels que =, ≠, is empty et does not include), ainsi que les valeurs, afin de garantir des conditions précises et valides.

  • Output

    Ce nœud ne produit aucune sortie.

  • Exemple d'utilisation

    Lorsque vous connectez le nœud Conditional branch à des nœuds en aval, chaque branche dispose d'un port de connexion correspondant. Si une condition de branche est remplie, le système exécute les nœuds en aval de cette branche et ignore les autres branches. Utilisez un nœud Variable aggregate pour collecter les résultats d'exécution de la branche active.

    image

Variable aggregate

Ce nœud fusionne les résultats de sortie de différentes branches en variables unifiées. Lorsqu'un nœud Conditional branch ou Intent recognition s'exécute, une seule branche est activée. Ce nœud permet aux nœuds en aval de référencer une seule variable agrégée, quelle que soit la branche exécutée, évitant ainsi une logique redondante.

  • Configuration

    image.png

  • Input

    Lorsque vous configurez les groupes de variables, tenez compte des points suivants :

    • Les nœuds en amont sont généralement plusieurs branches d'exécution générées par un nœud Conditional branch ou Intent recognition.

    • Les variables au sein d'un même groupe doivent être du même type. La première valeur non vide devient la sortie pour ce groupe.

    • Étant donné qu'une seule branche en amont s'exécute, chaque groupe aura au maximum une valeur non vide. Le nœud Variable aggregate extrait cette valeur pour une utilisation par les nœuds en aval.

    • Si chaque branche possède plusieurs sorties à collecter, vous pouvez ajouter plusieurs groupes pour extraire chaque valeur de sortie correspondante.

  • Output

    Les variables de sortie du nœud dépendent des groupes configurés. S'il existe plusieurs groupes, le nœud génère une paire clé-valeur pour chaque groupe, où la clé est le nom du groupe et la valeur est la première variable non vide de ce groupe.

  • Exemple d'utilisation

    Consultez le cas d'utilisation du nœud Conditional branch.

Loop

Le nœud Loop exécute des tâches répétitives où chaque itération dépend du résultat précédent. La boucle se poursuit jusqu'à ce qu'une exit condition soit remplie ou que le maximum iteration count soit atteint. À l'intérieur du nœud Loop, configurez un sous-flux que le système exécute de manière répétée en fonction de la loop variable.

  • Configuration

    image

  • Input

    • Variables de boucle : transfèrent les données entre les itérations. Leurs valeurs finales restent disponibles pour les nœuds en aval une fois la boucle terminée. Configurez plusieurs variables de boucle dont les valeurs peuvent être saisies manuellement ou sélectionnées parmi les sorties des nœuds en amont.

    • Condition de sortie de boucle : vous pouvez configurer une condition de sortie basée sur les variables de boucle. La boucle se termine lorsqu'une variable de boucle spécifiée remplit la condition prédéfinie.

    • Nombre maximal d'itérations : limite le nombre maximal d'exécutions de la boucle pour éviter les boucles infinies.

  • Output

    La sortie du nœud correspond à la valeur des variables de boucle après la dernière itération. Les variables de boucle ne peuvent être mises à jour que par un nœud Variable Assigner. Sans ce nœud, la sortie de la boucle restera identique à son entrée initiale, quel que soit le nombre d'itérations.

  • Nœuds associés

    Les nœuds liés à la boucle ne peuvent être utilisés qu'à l'intérieur d'une boucle. Ajoutez les nœuds associés suivants en cliquant sur l'icône + à droite d'un nœud dans la boucle :

    • Break Loop

      Quitte immédiatement la boucle. Ce nœud est généralement précédé d'un nœud Conditional branch.

    • Variable Assigner

      Attribue la sortie des nœuds au sein de la boucle aux variables de boucle, faisant ainsi avancer l'état de la boucle.

    image

Direct output

Le nœud Direct output configure le contenu de réponse directe à l'aide d'un modèle de sortie. Il prend en charge le référencement des sorties des nœuds en amont avec la syntaxe {{node.variable}} et la diffusion en continu (streaming).

Exemple : ajoutez un nœud Direct output avant un nœud LLM pour envoyer un message initial à l'utilisateur, tel que « Thinking... », pendant le traitement de la tâche principale.

image

image

Batch processing

Le nœud Batch processing traite les données de liste en parallèle. Il applique le même sous-flux à chaque élément de la liste, ce qui améliore considérablement l'efficacité. Pour les tâches itératives où chaque étape dépend de la précédente, utilisez plutôt le nœud Loop.

Input

  • Liste d'entrée : la liste des données à traiter. Le nœud envoie chaque élément au sous-flux pour exécution en tant qu'élément indépendant.

  • Champ de sortie : sélectionnez une variable de sortie d'un nœud au sein du sous-flux pour servir de résultat pour la tâche de chaque élément.

  • Nombre de traitements parallèles : facultatif. Contrôle le nombre de tâches exécutées simultanément. La valeur par défaut est 4, avec une plage valide de 1 à 10.

Output

result : une liste contenant les résultats de sortie de toutes les tâches par lot, dans le même ordre que la liste d'entrée. Elle agrège les valeurs de sortie réelles du « Champ de sortie » spécifié dans l'entrée.

Related nodes

Batch Start

Le nœud Batch Start est le point d'entrée du sous-flux de traitement par lot. Il fournit les variables de sortie suivantes pour référence par les nœuds suivants dans le sous-flux :

  • item : l'élément de données en cours de traitement, correspondant à un élément de la liste d'entrée.

  • index : l'index de l'élément de données actuel dans la liste d'entrée (à partir de 0).

Batch Break

Le nœud Batch Break est utilisé pour interrompre prématurément le traitement de l'élément de données actuel lorsqu'une condition spécifique est remplie.

Remarque : le nœud Batch Break termine uniquement l'itération actuelle et n'affecte pas le traitement des autres éléments de données.

Exemple d'utilisation

Analyse de documents par lot et traitement intelligent

Scénario : une entreprise doit analyser plusieurs fichiers documentaires par lots, appeler un LLM pour le traitement du contenu sur les documents analysés avec succès et ignorer automatiquement ceux dont l'analyse a échoué.

Configuration du nœud Batch processing :

Paramètre

Valeur

Description

Liste d'entrée

Start / files

Référencez la sortie de la liste de fichiers du nœud Start en amont.

Champ de sortie

LLM / output

Sélectionnez le champ de sortie du nœud LLM comme sortie pour le nœud Batch processing.

Nombre de traitements parallèles

4

Traitez 4 fichiers simultanément.

image.png

Exemple de sortie :

{
  "result": [
    "This document is the user manual for product XX, which includes product feature introductions, installation steps...",
    "This is a software service procurement contract with a term of 12 months...",
    null,
    "Value-added tax ordinary invoice, dated January 15, 2026..."
  ]
}

Remarque : une valeur null dans la sortie indique que l'analyse du fichier a échoué et que le nœud Batch Break a ignoré le traitement ultérieur.

Notes

  1. Ordre des résultats garanti : l'ordre de la liste de sortie est cohérent avec l'ordre de la liste d'entrée.

  2. Flexibilité du sous-flux : au sein du sous-flux, différents éléments de données peuvent déclencher différents chemins d'exécution.

  3. Gestion des valeurs nulles : si le flux d'exécution d'un élément se termine prématurément ou si sa sortie est vide, la position correspondante dans la liste de sortie sera nulle.

End

Le nœud End marque la fin d'un application flow et définit ses paramètres de sortie. Un application flow ne peut comporter qu'un seul nœud End.

  • Configuration des paramètres de sortie

    La sortie du application flow peut référencer les sorties de n'importe quel nœud en amont. Par exemple, dans l'échantillon ci-dessous, la sortie 'answer' du application flow utilise la sortie du nœud LLM, tandis que 'search_results' utilise la sortie du nœud de recherche.

    image

    Remarque
    • Un flux conversationnel possède un champ de sortie 'Chat' par défaut, qui sert de sortie conversationnelle du application flow.

    • Un application flow doit inclure des nœuds Start et End. Seuls les nœuds connectés entre eux sont exécutés ; les nœuds isolés sont ignorés.

Fonctionnalités IA

LLM

Le nœud LLM est un composant central d'un application flow qui appelle un large language model pour des tâches de langage naturel telles que la génération de texte, la réponse aux questions et le traitement d'entrées complexes. Il offre des options de configuration pour ajuster les paramètres du modèle, gérer l'historique des conversations et personnaliser les invites.

  • Cas d'utilisation

    • Génération de texte : générez du contenu textuel basé sur des sujets et des mots-clés.

    • Classification de contenu : classez automatiquement les types d'e-mails (par exemple, demande, plainte ou spam).

    • Traduction de texte : traduisez du texte dans une langue spécifiée.

    • RAG : répondez aux questions des utilisateurs en combinant les connaissances récupérées avec le raisonnement du modèle.

  • Configuration

    image

  • Input

    • Paramètres du modèle : prend en charge les modèles déployés depuis ModelGallery, les services de modèles déployés personnalisés et les modèles de fournisseurs tels que Dashscope et DeepSeek. Pour des performances optimales, choisissez un modèle hautement performant. Configurez les paramètres de modèle suivants :

      • Temperature : une valeur généralement comprise entre 0 et 1 qui contrôle l'aléatoire de la sortie. Les valeurs proches de 0 produisent des sorties plus déterministes, tandis que les valeurs proches de 1 produisent des résultats plus diversifiés.

      • Top P : seuil d'échantillonnage par noyau. Le modèle échantillonne à partir du plus petit ensemble de jetons dont la probabilité cumulative dépasse le seuil P, influençant la diversité de la sortie.

      • Top K : limite les jetons candidats aux K jetons les plus probables. Cela réduit l'aléatoire et rend la sortie plus ciblée, contraignant la créativité plus directement que Top P.

      • Presence penalty : réduit la répétition des mêmes entités ou informations. Pénalise les jetons déjà présents dans le texte généré. Des valeurs plus élevées réduisent la répétition de manière plus agressive.

      • Frequency penalty : pénalise les jetons en fonction de leur fréquence dans le texte généré, réduisant les mots ou phrases trop fréquents. Des valeurs plus élevées encouragent une plus grande diversité lexicale.

      • Max tokens : longueur maximale de sortie (en jetons) par exécution. Des valeurs plus faibles peuvent tronquer la sortie, tandis que des valeurs plus élevées permettent des réponses plus longues.

      • Seed : lorsqu'il est spécifié, le modèle tente un échantillonnage déterministe. Les demandes répétées avec le même seed et les mêmes paramètres devraient produire le même résultat, mais le déterminisme complet n'est pas garanti. Reportez-vous au paramètre de réponse system_fingerprint pour surveiller les changements.

      • Stop sequences : jusqu'à quatre séquences qui indiquent au modèle d'arrêter la génération de sortie supplémentaire. Lorsque le modèle rencontre l'une de ces séquences, il arrête la génération de jetons. Le texte renvoyé n'inclut pas la séquence d'arrêt.

    • Historique des conversations : si activé, l'historique de chat du application flow est automatiquement inséré dans l'invite.

    • Variables d'entrée : les variables peuvent référencer les sorties de tous les nœuds précédents.

    • Prompt : une invite contient le contenu personnalisé pour le System (SYSTEM), l'User (USER) ou l'Assistant (ASSISTANT). L'invite est un modèle Jinja2 où vous pouvez référencer les variables d'entrée en utilisant des doubles accolades {{}}.

  • Output

    Le nœud utilise par défaut une sortie String, mais prend en charge JSON. Le type JSON prend en charge les variables de sortie personnalisées, et le modèle génère la sortie en fonction des noms de variables.

  • Cas d'utilisation

Intent recognition

Le nœud Intent recognition est principalement destiné au contrôle du flux. Il utilise un large language model pour analyser l'intention de l'utilisateur et dirige l'exécution vers la branche correspondante en fonction du résultat. Il prend en charge la configuration multi-intentions et l'historique des conversations.

  • Configuration

    image.png

  • Input

    • Entrée utilisateur : sélectionnez l'entrée utilisateur à utiliser pour la reconnaissance d'intention.

    • Configuration multi-intentions : configurez les intentions selon vos besoins, en veillant à ce que la description de chaque intention soit claire et qu'il n'y ait aucun chevauchement sémantique entre les différentes intentions. La dernière intention est par défaut « Other », qui est associée lorsqu'aucune autre intention ne s'applique et ne peut pas être modifiée.

    • Paramètres du modèle : configurez le large language model pour la reconnaissance d'intention. Pour de meilleures performances, choisissez un modèle plus performant, tel que qwen-max.

    • Historique des conversations : lorsqu'il est activé, le large language model insère automatiquement l'historique de chat du application flow dans l'invite lors du raisonnement.

    • Invite supplémentaire : ce contenu est ajouté à l'invite système pour aider le modèle à effectuer la reconnaissance d'intention avec plus de précision.

  • Output

    Ce nœud ne produit aucune sortie.

  • Exemple d'utilisation

    Lors de la connexion du nœud Intent recognition à des nœuds en aval, chaque branche d'intention dispose d'un port de connexion correspondant sur le nœud. Lorsqu'une intention est reconnue, les nœuds en aval connectés à cette branche sont exécutés, tandis que les nœuds des autres branches sont ignorés. Vous pouvez ensuite utiliser un nœud Variable aggregate pour collecter les résultats d'exécution de chaque branche.

    image.png

Agent

Le nœud Agent permet à un large language model (LLM) de planifier, de sélectionner des outils et d'agir de manière autonome. Il prend en charge les stratégies de raisonnement et les capacités d'utilisation d'outils. En intégrant des stratégies telles que FunctionCalling et ReAct, il permet au LLM d'appeler de manière autonome des outils conformes au Model Context Protocol (MCP) au moment de l'exécution pour réaliser un raisonnement en plusieurs étapes.

Node parameters

  • Stratégie de l'agent : sélectionnez la stratégie de raisonnement de l'agent souhaitée. Actuellement, les stratégies FunctionCalling et ReAct sont prises en charge.

    FunctionCalling

    Cette fonctionnalité permet l'interaction entre un Large Language Model (LLM) et des outils externes basés sur la définition structurée tool call (au format JSON) de l'API OpenAI Chat. Le LLM analyse les instructions en langage naturel de l'utilisateur pour identifier automatiquement l'intention, sélectionner l'outil approprié et extraire les paramètres. Le système appelle ensuite l'outil correspondant et renvoie le résultat au modèle pour effectuer un raisonnement supplémentaire et générer la réponse finale.

    Cas d'utilisation et avantages :

    • Appels structurés, forte compatibilité : utilise des données structurées pour définir clairement les noms des outils et les paramètres d'appel, ce qui le rend compatible avec tous les modèles prenant en charge l'appel d'outils.

    • Performances stables : adapté aux tâches ayant des objectifs clairs et des étapes bien définies, telles que la vérification de la météo, la recherche d'informations ou l'interrogation de données.

    ReAct

    ReAct (Reasoning + Acting) est une stratégie de raisonnement flexible qui utilise des invites pour guider un modèle à générer explicitement des Thoughts et des Actions, créant ainsi une boucle fermée pour le raisonnement en plusieurs étapes et les appels d'outils. Cette stratégie utilise généralement le langage naturel pour décrire le processus d'appel. Elle déclenche l'exécution de l'outil backend en produisant du texte tel que « Action=xxx, Action Input=xxx » et injecte les résultats dans la chaîne de raisonnement du modèle. Cette méthode ne nécessite pas d'API-level tool_calls, ce qui la rend adaptée à des modèles et frameworks plus généraux.

    Cas d'utilisation et avantages :

    • Capacité de raisonnement améliorée : guide le modèle pour qu'il réfléchisse étape par étape, chaque étape exprimant explicitement la logique de raisonnement.

    • Stratégie transparente : idéale pour les applications d'agent nécessitant un débogage et une interprétabilité forts.

    • Aucun support d'appel d'outil requis : peut être utilisée même avec des modèles qui ne prennent pas en charge la sortie structurée.

  • Paramètres du modèle : la stratégie FunctionCalling nécessite un modèle qui prend nativement en charge l'appel d'outils. La stratégie ReAct n'a pas cette limitation, mais nous recommandons de choisir un modèle doté de fortes capacités de raisonnement.

  • Historique des conversations : l'activation de l'historique des conversations fournit à l'agent une mémoire contextuelle. Le système inclut automatiquement les messages de conversation passés dans l'invite, permettant à l'agent de comprendre et de référencer les parties précédentes de la conversation. Par exemple, un agent avec l'historique des conversations activé peut résoudre les pronoms (tels que « il » ou « cela ») sans que l'utilisateur ait besoin de répéter les informations.

  • Planification des tâches : lorsqu'elle est activée, le système ajoute automatiquement l'outil intégré write_todos aux outils disponibles de l'agent. Pour les questions utilisateur complexes, l'agent appelle automatiquement l'outil write_todos pour planifier la tâche et l'exécuter étape par étape, en mettant à jour dynamiquement le plan en fonction des dernières informations.

  • Outils MCP et outils : prend en charge la configuration des outils MCP et non-MCP. Pour plus d'informations, consultez Configurer les outils pour un Agent.

  • Configuration de l'invite

    • Variables d'entrée : lorsque vous souhaitez référencer une variable d'un nœud en amont d'un application flow dans une invite, vous devez définir une variable d'entrée correspondante dans le nœud actuel et définir sa valeur comme référence à la variable du nœud en amont. Ensuite, dans la section Prompt ci-dessous, vous pouvez utiliser la syntaxe de modèle Jinja2, indiquée par des doubles accolades ({{}}), pour référencer ces variables d'entrée définies et permettre le transfert dynamique de données.

    • System prompt : utilisé pour spécifier les objectifs et le contexte de la tâche de l'agent, fournissant au modèle les informations nécessaires pour guider la génération de sa réponse. Ceci est facultatif pour la stratégie ReAct.

    • User prompt : reçoit l'entrée ou la requête de l'utilisateur, qui sert de base à la génération de la réponse du modèle.

  • Nombre de boucles : définit le nombre maximal de cycles d'exécution pour l'agent, allant de 1 à 99. L'agent répète la tâche pour générer une réponse jusqu'à ce que l'une des conditions suivantes soit remplie :

    • Le LLM détermine qu'il a rassemblé suffisamment d'informations en appelant des outils pour générer un résultat complet.

    • Le nombre maximal de boucles défini est atteint.

    La définition d'un nombre de boucles raisonnable permet d'équilibrer l'exhaustivité de la réponse avec l'efficacité d'exécution. Si la planification des tâches est activée, nous recommandons d'utiliser le nombre maximal de boucles par défaut pour garantir que le modèle puisse exécuter pleinement toutes les étapes comme prévu.

  • Variables de sortie :

    • intermediate_steps : une chaîne contenant les étapes intermédiaires de l'exécution de l'agent.

    • text : une chaîne contenant la sortie finale de l'agent.

Traces and logs

Après avoir cliqué sur Run dans le coin supérieur droit de la page du application flow, vous pouvez afficher la trace ou le journal sous le résultat d'exécution dans la boîte de dialogue qui apparaît.

  • Afficher la sortie intermédiaire : cliquez sur l'icône d'état d'exécution dans le coin supérieur droit du nœud Agent dans le workflow. Dans le tiroir ci-dessous, trouvez intermediate_steps dans la sortie pour afficher le processus de raisonnement de l'agent.

  • Afficher la trace : affichez les informations de trace de l'exécution actuelle pour comprendre l'entrée et la sortie de l'agent pour chaque requête de modèle (y compris les appels d'outils et les paramètres de requête), les coûts en jetons et la consommation de temps.

  • Afficher le journal : si un application flow rencontre une erreur, vous pouvez afficher le journal d'exécution actuel pour obtenir plus de détails sur le processus d'exécution du nœud.

De plus, vous pouvez cliquer sur l'icône à droite du bouton Run dans le coin supérieur droit de la page du application flow pour afficher l'historique d'exécution. Sélectionnez un enregistrement d'exécution spécifique pour afficher sa trace ou son journal.

Document parsing

Prend en charge l'utilisation de l'analyseur de documents intelligent intégré au système et des services d'analyse de documents de la plateforme ouverte AI Search.

  • Analyseur intégré : extrait le contenu structuré et les métadonnées des documents, prenant en charge divers formats de documents courants, y compris PDF, DOCX, PPTX, TXT, HTML, CSV, XLSX, XLS, JSONL et MD.

  • Plateforme ouverte AI Search : réalise une analyse structurée de documents de haute précision, prenant en charge l'extraction d'informations de hiérarchie logique telles que les titres et les paragraphes, ainsi que du contenu tel que le texte, les tableaux et les images. Cela améliore l'efficacité et la précision de l'extraction de documents. Vous devez d'abord configurer une connexion de service de modèle de plateforme ouverte AI Search. Les formats de fichiers pris en charge incluent PDF, DOCX, PPTX, TXT et HTML.

Cet outil prend en charge les scénarios RAG, de résumé et de questions-réponses. L'interface de configuration est la suivante : image.png

  • Fichier documentaire : le fichier documentaire à analyser. Sélectionnez un champ de type fichier d'un nœud en amont.

  • Paramètres du modèle : (facultatif) sélectionnez une connexion de service de modèle de plateforme ouverte AI Search créée sur LangStudio. Si elle n'est pas configurée, le système utilise par défaut la méthode d'analyse de base intégrée.

  • Sortie :

    • file_id : l'identifiant unique du fichier d'entrée.

    • content : le contenu textuel structuré analysé, incluant des informations hiérarchiques telles que les titres et les paragraphes.

    • status : le statut de l'analyse, qui peut être SUCCESS ou FAIL.

    • metadata : les métadonnées du document et les détails de l'analyse.

      • file_name : le nom du fichier.

      • file_type : le type du fichier.

      • source_uri : l'URI d'origine du fichier.

      • download_url : l'URL téléchargeable du fichier.

      • analysis_method : la méthode d'analyse utilisée. « opensearch » indique une analyse structurée utilisant la plateforme ouverte AI Search, tandis que « builtin » indique l'utilisation de la méthode d'analyse de base intégrée.

Exemple d'utilisation en aval : dans les nœuds en aval, référencez les champs de résultat du nœud d'analyse de documents selon vos besoins. Pour utiliser les résultats de l'analyse de documents dans un nœud LLM, vous pouvez inclure le contenu analysé dans l'invite utilisateur comme indiqué ci-dessous :

image.png

Speech recognition

Utilisez le nœud Speech recognition pour convertir des fichiers audio ou vidéo en texte. Il prend en charge plusieurs formats audio et la reconnaissance linguistique.

Input

  • Paramètres du modèle : configurez le modèle de reconnaissance vocale. Le service de reconnaissance vocale fourni par Alibaba Cloud Model Studio est actuellement pris en charge. Nous recommandons d'utiliser paraformer-v2 pour de meilleures performances de reconnaissance et une prise en charge multilingue.

  • Fichier audio/vidéo : sélectionnez le fichier audio ou vidéo à reconnaître. Pour les formats pris en charge, consultez Entrée et sortie de type fichier.

  • Langue de reconnaissance : spécifie la langue pour la reconnaissance audio. Les langues prises en charge sont le chinois, l'anglais, le japonais, le cantonais, le coréen, l'allemand, le français, le russe ou la détection automatique. Remarque : cette fonctionnalité est prise en charge uniquement par le modèle paraformer-v2. Les autres modèles utilisent la détection automatique de la langue par défaut.

Output

  • file_id : l'identifiant unique du fichier d'entrée.

  • status : le statut de la reconnaissance. Les valeurs possibles sont SUCCESS ou FAIL.

  • content : le contenu textuel transcrit.

  • segments : une liste d'informations sur les fragments de phrase, incluant les horodatages, les fragments de texte et d'autres détails.

  • metadata : les métadonnées du fichier, incluant :

    • file_name : le nom du fichier.

    • file_type : le type du fichier.

    • source_uri : l'URI du fichier.

    • download_url : l'URL de téléchargement du fichier.

Récupération de données

Pour configurer les nœuds suivants, consultez la rubrique Nœud de récupération de données :

  • Récupération depuis la base de connaissances

  • Alibaba Cloud IQS - recherche web

  • SerpAPI - recherche générique

  • Requête HTTP

Traitement des données

Développement Python (Python)

Les flux d'application prennent en charge des nœuds avec du code Python personnalisé pour le traitement complexe des données. Ces nœuds gèrent les entrées et sorties en streaming. La page de configuration se présente comme suit :

image

Il vous suffit de saisir le code Python. Les entrées et sorties sont analysées automatiquement à partir du code. Veuillez noter les points suivants :

  • La fonction d'entrée doit être décorée avec @tool pour être chargée en tant que nœud.

    Remarque

    Pour activer l'entrée en streaming pour un nœud Python, vous devez configurer @tool(properties={"streaming_pass_through": True}). Sinon, les entrées du nœud Python, par exemple celles provenant d'un LLM, seront constituées du texte de sortie complet au lieu d'un flux.

  • La fonction prend en charge les types d'entrée/sortie suivants : int, float, bool, str, dict, TypedDict, dataclass (sortie uniquement), list et File.

  • Les paramètres de la fonction d'entrée sont analysés dynamiquement en tant qu'entrées du nœud. La sortie est placée dans un dictionnaire output et peut être référencée par d'autres nœuds.

    Important

    L'analyse automatique des paramètres d'entrée et de sortie d'un nœud Python dépend de l'environnement d'exécution. Si l'environnement d'exécution n'est pas lancé, vous ne pouvez pas configurer les informations d'entrée et de sortie du nœud.

  • Si votre code Python nécessite des dépendances, sélectionnez Install Dependencies dans le coin supérieur droit du canevas et saisissez les packages requis. Le fichier requirements.txt est enregistré avec le flux d'application. Les dépendances sont installées lorsque vous lancez l'environnement d'exécution ou déployez le service.

    image

    image

Cas d'utilisation 1 : Saisissez le code suivant dans la zone de code. Le code est mappé aux entrées et sorties du nœud :

from langstudio.core import tool
from dataclasses import dataclass

@dataclass
class Result:
    output1: str
    output2: int

@tool
def invoke(foo: str, bar: int) -> Result:    
    return Result(
        output1="hello" + foo,
        output2=bar + 10
    )

image

Cas d'utilisation 2 : Entrée et sortie en streaming. Utilisez un nœud Python pour tronquer un flux de texte provenant d'un nœud LLM ou agent qui inclut des processus de réflexion. En ignorant le contenu situé dans la section <think>\n\n</think>, vous obtenez un flux de texte final correspondant au résultat. Voici un exemple :

import re
from typing import Iterator
from langstudio.core import tool

@tool(properties={"streaming_pass_through": True})
def strip_think(
    stream: Iterator[str],
) -> Iterator[str]:  # The input is a streaming string iterator, and the output is a filtered streaming string iterator.
    # Match the <think>\n...\n</think> structure and capture the text after the closing tag.
    pattern = re.compile(r"<think>\n[\s\S]*\n</think>(.*)")
    in_thinking = True  # Flag to indicate if the current position is inside a <think> block.
    think_buf = ""      # Buffer to store unprocessed content.

    for chunk in stream:
        if in_thinking:
            think_buf += chunk
            m = pattern.search(think_buf)  # Check if the buffer contains a complete thought block.
            if m:
                in_thinking = False
                result_part = m.groups()[0]
                if result_part:
                    yield result_part  # If the result text exists, yield it immediately.
        else:
            yield chunk  # After exiting the thought block, directly yield all subsequent chunks.

Transformation de modèle

L'outil de transformation de modèle utilise la syntaxe de modèle Jinja2 pour permettre un formatage flexible du texte et une transformation des données.

Input

Le mode de transformation prend en charge le mode Jinja2 et le mode de référence de nœud.

  • Mode Jinja2 : Utilise la syntaxe complète du modèle Jinja2 pour personnaliser le format de sortie. Ce mode convient aux sorties structurées complexes, à la logique conditionnelle et au rendu de boucles.

    • Variables de modèle : Définissez les variables utilisées dans le modèle.

      Important

      Les noms de variables ne peuvent pas correspondre aux noms de méthodes intégrées de Python, tels que items, keys ou values. Utilisez des noms de champs spécifiques, tels que item_list ou product_list.

    • Contenu du modèle : Une chaîne de modèle écrite en syntaxe Jinja2. Elle prend en charge la syntaxe complète, y compris la substitution de variables {{ variable }}, les boucles {% for %}, les instructions conditionnelles {% if %} et les filtres {{ value | filter }}.

      Important

      Toutes les variables référencées dans le modèle doivent être définies dans la liste des variables. Sinon, une erreur se produira.

  • Mode de référence de nœud : Référence directement la sortie des nœuds en amont et la concatène automatiquement en une chaîne. Ce mode convient aux scénarios simples de combinaison de texte.

    • Contenu du modèle : Sélectionnez les champs de sortie des nœuds en amont. Le système les concatène automatiquement dans l'ordre.

Output

output : Le résultat textuel après le rendu du modèle. Remarque : La longueur du contenu du modèle d'entrée et de sortie est limitée à 100 000 caractères. Tout contenu dépassant cette limite sera tronqué.

Usage examples

Exemple 1 : Générer un e-mail de confirmation de commande

Configuration des variables :

Nom de la variable

Valeur de la variable

customer_name

"John Doe"

order_id

"ORD-2025-001"

products

[{"name": "Laptop", "price": 8999}, {"name": "Wireless Mouse", "price": 199}]

total

9198

Contenu du modèle :

Dear {{ customer_name }}:

Your order {{ order_id }} has been confirmed. The details are as follows:

{% for product in products %}
- {{ product.name }}: ¥{{ product.price }}
{% endfor %}

Total: ¥{{ total }}

Thank you for your purchase!

Résultat de sortie :

Dear John Doe:

Your order ORD-2025-001 has been confirmed. The details are as follows:

- Laptop: ¥8999
- Wireless Mouse: ¥199

Total: ¥9198

Thank you for your purchase!

Exemple 2 : Formater les résultats de récupération de la base de connaissances

Configuration des variables :

Nom de la variable

Valeur de la variable

chunks

[{"title": "Product Introduction", "content": "This is a detailed introduction to the product...", "score": 0.95}]

Contenu du modèle :

{% for chunk in chunks %}
### Relevance: {{ "%.2f" % chunk.score }}
#### {{ chunk.title }}
{{ chunk.content }}
---
{% endfor %}

Résultat de sortie :

### Relevance: 0.95
#### Product Introduction
This is a detailed introduction to the product...
---

Opérations sur les listes

L'outil Opérations sur les listes vous permet d'effectuer un filtrage et un tri flexibles sur divers types de données de liste pour un traitement et une sélection granulaires des données.

Input

  • Liste d'entrée : Les données de liste à traiter. Il prend en charge tout sous-type, tel que les chaînes, les nombres, les booléens, les objets fichier et les dictionnaires.

  • Opérations : Une séquence d'opérations chaînées qui sont exécutées dans l'ordre. Il prend en charge deux types d'opérations : le filtrage et le tri.

    • Opération de filtrage (filter) : L'opération de filtrage fournit dynamiquement différentes méthodes de filtrage en fonction du type de la liste d'entrée. Remarque : Toutes les opérations de filtrage sont sensibles à la casse.

      Clé de filtre

      Description

      Portée

      Index

      Filtre en fonction de la position de l'élément dans la liste.

      S'applique à tous les types de liste.

      Valeur de l'élément

      Filtre en fonction de la valeur de l'élément lui-même.

      S'applique à tous les types de liste.

      Attribut personnalisé

      Filtre en fonction d'un attribut personnalisé.

      S'applique uniquement aux listes de dictionnaires.

      Attribut de fichier

      Filtre en fonction des attributs d'un fichier.

      S'applique uniquement aux listes de fichiers.

      Attributs disponibles :

      • file_id : L'ID du fichier.

      • file_name : Le nom du fichier.

      • file_type : Le type MIME du fichier.

      • source_uri : L'URI du fichier.

      • download_url : L'URL de téléchargement du fichier.

      • category : La catégorie du fichier. Valeurs valides : document, image, audio et video.

      • extension : L'extension du fichier, telle que .jpg.

    • Opération de tri (sort) : L'opération de tri fournit différentes méthodes de tri en fonction du type de la liste d'entrée.

      Clé de tri

      Description

      Portée

      Valeur de l'élément

      Trie en fonction de la valeur de l'élément lui-même.

      S'applique uniquement aux listes de chaînes, de nombres ou de booléens.

      Attribut personnalisé

      Trie en fonction d'un attribut personnalisé.

      S'applique uniquement aux listes de dictionnaires.

      Attribut de fichier

      Trie en fonction des attributs d'un fichier.

      S'applique uniquement aux listes de fichiers. Les attributs disponibles sont les mêmes que pour l'opération de filtrage.

Output

  • result : Le résultat de la liste traitée.

  • first_item : Le premier élément de la liste de résultats. Si la liste est vide, la valeur est None.

  • last_item : Le dernier élément de la liste de résultats. Si la liste est vide, la valeur est None.

Usage examples

Exemple 1 : Classification de fichiers - Filtrer les fichiers image, trier par longueur du nom de fichier et prendre les 3 premiers

Scénario : Un utilisateur télécharge une liste mixte de divers types de fichiers. Vous devez filtrer les fichiers image, les trier par longueur du nom de fichier et ne conserver que les 3 premiers pour le traitement ultérieur de reconnaissance d'image.

Configuration des opérations :

Operation 1 - Filter (by file category):
  Filter key: item.category
  Filter operator: equals
  Filter value: image

Operation 2 - Sort (by file name length):
  Sort key: item.file_name
  Sort direction: asc

Operation 3 - Filter (take top 3):
  Filter key: index
  Filter operator: less than
  Filter value: 3

image.png

Exemple 2 : Analyse de données - Filtrer les utilisateurs ayant un score élevé et obtenir les 5 premiers

Scénario : À partir d'une liste de notes d'utilisateurs, filtrez les utilisateurs ayant un score supérieur ou égal à 80, triez-les par score décroissant et prenez les 5 premiers.

Liste d'entrée :

[
  {"name": "Zhang San", "score": 95, "department": "Tech Dept"},
  {"name": "Li Si", "score": 72, "department": "Marketing Dept"},
  {"name": "Wang Wu", "score": 88, "department": "Tech Dept"},
  {"name": "Zhao Liu", "score": 91, "department": "Product Dept"},
  {"name": "Qian Qi", "score": 65, "department": "Marketing Dept"},
  {"name": "Sun Ba", "score": 98, "department": "Tech Dept"}
]

Configuration des opérations :

Operation 1 - Filter (high-scoring users):
  Filter key: item.score
  Filter operator: greater than or equal to
  Filter value: 80

Operation 2 - Sort (by score descending):
  Sort key: item.score
  Sort direction: desc

Operation 3 - Filter (take top 5):
  Filter key: index
  Filter operator: less than
  Filter value: 5

image.png

Résultat de sortie :

[
  {"name": "Sun Ba", "score": 98, "department": "Tech Dept"},
  {"name": "Zhang San", "score": 95, "department": "Tech Dept"},
  {"name": "Zhao Liu", "score": 91, "department": "Product Dept"},
  {"name": "Wang Wu", "score": 88, "department": "Tech Dept"}
]

Remarques :

  • Si l'entrée de l'outil référence une variable de sortie de type list personnalisée dans un nœud Python, définissez un type d'élément clair pour la liste dans le nœud Python, tel que list[str]. Cela garantit une correspondance plus précise des opérateurs dans le nœud Opérations sur les listes.