Nœuds d'agrégation et d'affectation de variables dans le flux de travail Dify
agrégation de variables
définir
Agréger les variables de plusieurs branches en une seule variable pour une configuration uniforme des nœuds en aval.
Le nœud d'agrégation de variables (anciennement nœud d'affectation de variables) est un nœud clé du flux de travail qui est chargé de consolider les sorties de différentes branches, en veillant à ce que les résultats soient référencés et accessibles par le biais d'une seule variable unifiée, quelle que soit la branche exécutée. Ceci est très utile dans le cas de branches multiples, où les variables ayant le même rôle dans différentes branches peuvent être mappées à une seule variable de sortie, évitant ainsi les définitions en double dans les nœuds en aval.
prendre
L'agrégation de variables simplifie la gestion du flux de données en permettant d'agréger plusieurs résultats, tels que la classification des problèmes ou le branchement conditionnel, en un seul résultat utilisable et manipulable par les nœuds situés en aval du processus.
Agrégation multiple après classification des problèmes
Sans ajout d'agrégation de variables, les nœuds LLM et de réponse directe en aval doivent être définis à plusieurs reprises pour les branches de la classification 1 et de la classification 2 après qu'elles ont été extraites de différentes bases de connaissances.
- Classification des problèmes (agrégation sans variables)
L'ajout de l'agrégation de variables vous permet d'agréger les résultats de deux nœuds de recherche de connaissances en une seule variable.
- Agrégation multiple après classification des problèmes
Agrégation multiple après le branchement conditionnel IF/ELSE
- Agrégation multiple après classification des problèmes
Exigences de formatage
L'agrégateur de variables prend en charge l'agrégation de plusieurs types de données, y compris les chaînes de caractères (String
), les chiffres (Number
), la documentation (File
) objet (Object
) et les tableaux (Array
)
Les agrégateurs de variables ne peuvent agréger que des variables du même type de données. Si la première variable à ajouter au nœud d'agrégation de variables est au format de données variable Si le format de données de la première variable ajoutée au nœud d'agrégation de variables est String
La variable qui peut être ajoutée est automatiquement filtrée pour les connexions ultérieures à l'application String
Type.
regroupement d'agrégats
Lorsque le regroupement d'agrégats est activé, l'agrégateur de variables peut agréger plusieurs groupes de variables, le même type de données étant requis pour l'agrégation au sein de chaque groupe.
l'affectation des variables
définir
Le nœud d'affectation de variable est utilisé pour effectuer des affectations de variables aux variables inscriptibles, et les variables inscriptibles suivantes sont prises en charge :
Utilisation : Le nœud d'assignation de variable vous permet d'assigner une variable dans un flux de travail à une variable de session pour un stockage temporaire et peut être continuellement référencé dans les dialogues suivants.

Exemples de scénarios
Vous pouvez définir le processus de dialogue duContexte, fichiers téléchargés dans la boîte de dialogue, préférences saisies par l'utilisateuretc., sont inscrites dans les variables de session via le nœud d'affectation de variables et utilisées comme informations de référence pour les dialogues suivants.
Scène 1
Détermine automatiquement l'extraction et le stockage des informations dans le dialogue Le LLM peut enregistrer les informations importantes saisies par l'utilisateur au cours de la session via un ensemble de variables de session et permettre au LLM de personnaliser les réponses dans les conversations ultérieures sur la base des informations historiques stockées dans les variables de session.
Exemple : après avoir entamé un dialogue, le LLM détermine automatiquement si l'entrée de l'utilisateur contient des faits, des préférences ou des antécédents qui doivent être mémorisés. Si c'est le cas, le LLM extrait et stocke ces informations avant de les utiliser comme contexte pour la réponse. S'il n'y a pas de nouvelles informations à stocker, le LLM répondra directement à la question en utilisant sa propre connaissance de la mémoire.

Processus de configuration :
- Définition des variables de session Les variables de session sont d'abord définies dans un tableau.
memories
de type tableau[objet], est utilisé pour stocker les faits, les préférences et l'historique de l'utilisateur. - Mémoire de jugement et mémoire d'extraction : :
- Ajouter un nœud de jugement conditionnel qui utilise le LLM pour déterminer si l'entrée de l'utilisateur contient de nouvelles informations qui doivent être mémorisées.
- S'il y a de nouvelles informations, remontez la branche et utilisez le nœud LLM pour extraire ces informations.
- S'il n'y a pas de nouvelles informations, descendez dans la branche et répondez directement en utilisant la mémoire existante.
- Travail variable/écriture : :
- Dans la branche supérieure, les nouvelles informations extraites sont ajoutées (append) à l'aide du nœud d'affectation de variable à l'élément
memories
dans le tableau. - Utilisez la fonction escape pour convertir les chaînes de texte produites par LLM dans un format adapté au stockage dans le tableau [object].
- Dans la branche supérieure, les nouvelles informations extraites sont ajoutées (append) à l'aide du nœud d'affectation de variable à l'élément
- Lecture et utilisation des variables : :
- Dans les nœuds LLM suivants, le
memories
Le contenu du tableau est converti en chaîne de caractères et inséré dans les invites de LLM en tant que contexte. - LLM utilise ces informations historiques pour générer des réponses personnalisées.
- Dans les nœuds LLM suivants, le
Le code du nœud de la figure est le suivant :
- Convertir une chaîne de caractères en un objet
Copie
import json
defmain(arg1:str) ->object:
try:
# Parse the input JSON string
input_data = json.loads(arg1)
# Extract the memory object
memory = input_data.get("memory", {})
# Construct the return object
result ={
"facts": memory.get("facts", []),
"preferences": memory.get("preferences", []),
"memories": memory.get("memories", [])
}
return{
"mem": result
}
except json.JSONDecodeError:
return{
"result":"Error: Invalid JSON string"
}
exceptExceptionas e:
return{
"result":f"Error: {str(e)}"
}
- Échapper à l'objet pour le transformer en chaîne de caractères
Copie
import json
defmain(arg1:list) ->str:
try:
# Assume arg1[0] is the dictionary we need to process
context = arg1[0]if arg1 else{}
# Construct the memory object
memory ={"memory": context}
# Convert the object to a JSON string
json_str = json.dumps(memory, ensure_ascii=False, indent=2)
# Wrap the JSON string in <answer> tags
result =f"<answer>{json_str}</answer>"
return{
"result": result
}
exceptExceptionas e:
return{
"result":f"<answer>Error: {str(e)}</answer>"
}
Scène 2
Enregistrer les préférences initiales de l'utilisateur qui se souvient de la préférence linguistique indiquée par l'utilisateur au cours de la session et répond systématiquement dans ce type de langue lors des dialogues ultérieurs.
Exemple : L'utilisateur entame un dialogue avant que le language
Si "chinois" est spécifié dans la zone de saisie, la langue sera inscrite dans la variable de session et le LLM se référera aux informations contenues dans la variable de session lorsqu'il répondra dans les dialogues suivants, et continuera à répondre en "chinois" dans les dialogues suivants.

Processus de configuration :
Définition des variables de session Les données de la session sont les suivantes : Premièrement, une variable de session est définie language
Dans ce cas, ajouter un nœud de jugement conditionnel au début du flux de la session pour juger de l'efficacité de la session. language
Si la valeur de la variable est nulle.
Écriture/affectation de la variable Au début du premier cycle de dialogue, si language
Si la valeur de la variable est nulle, le nœud LLM est utilisé pour extraire la langue saisie par l'utilisateur, puis le nœud d'affectation de variable est utilisé pour écrire le type de langue dans la variable de session. language
Au milieu.
Lecture variable Dans les cycles ultérieurs du dialogue language
contient déjà la préférence linguistique de l'utilisateur. Dans les dialogues suivants, le nœud LLM répond avec le type de langue préféré de l'utilisateur en se référant à la variable langue.
Scène 3
Liste de contrôle des auxiliaires Contrôle La liste de contrôle est un ensemble de variables qui peuvent être utilisées pour enregistrer les entrées de l'utilisateur au cours d'une session via des variables de session, mettre à jour le contenu de la liste de contrôle et vérifier les éléments manquants dans les dialogues suivants.
Exemple : après avoir entamé un dialogue, LLM demandera à l'utilisateur d'entrer les éléments de la liste de contrôle dans la boîte de dialogue. Une fois que l'utilisateur aura mentionné les éléments de la liste de contrôle, celle-ci sera mise à jour et stockée dans la variable de session. lLM rappellera à l'utilisateur qu'il doit continuer à ajouter les éléments manquants après chaque tour de dialogue.

Processus de configuration :
- Définition des variables de session : Définissez d'abord une variable de session
ai_checklist
la variable est référencée dans le MLD comme le contexte à examiner. - Travail variable/écriture : À chaque tour de dialogue, vérifiez dans le nœud LLM les éléments suivants
ai_checklist
et la compare aux données fournies par l'utilisateur. Si l'utilisateur fournit de nouvelles informations, la liste de contrôle est mise à jour et le résultat est enregistré dans le fichierai_checklist
A l'intérieur. - Variable lue : Chaque tour de dialogue se lit comme suit
ai_cheklist
dans la liste de contrôle et compare les données saisies par l'utilisateur jusqu'à ce que toutes les listes de contrôle soient complètes.
Affectation de nœuds à l'aide de variables
Cliquez sur le côté droit du nœud +
Non, sélectionnez "Affectation des variables" qui configure les variables qui doivent être assignées à la variable source. Le nœud d'affectation des variables permet d'affecter des valeurs à plusieurs variables en même temps.

Définition des variables
Variables : Sélectionne la variable à laquelle une valeur doit être attribuée.
Variables de réglage : Sélectionne la variable à affecter, c'est-à-dire spécifie la variable source à convertir.
La logique d'affectation des variables dans la figure ci-dessus : la préférence linguistique indiquée par l'utilisateur dans la page initiale est prise en compte. Start/language
Assignation de variables aux variables de session au niveau du système language
A l'intérieur.
Spécifier le mode d'écriture de la variable
Le type de données de la variable cible affecte le mode d'écriture de la variable. Les modes d'écriture entre différentes variables sont décrits ci-dessous :
- Le type de données de la variable cible est
String
.
- écraser La variable source est remplacée directement par la variable cible.
- clair Voici la liste des variables que vous avez sélectionnées.
- mettre en place Si vous souhaitez spécifier une valeur manuellement, vous ne devez pas définir la variable source.
- Le type de données de la variable cible est
Number
.
- écraser La variable source est remplacée directement par la variable cible.
- clair Voici la liste des variables que vous avez sélectionnées.
- mettre en place Si vous souhaitez spécifier une valeur manuellement, vous ne devez pas définir la variable source.
- traitement numérique La variable cible est soumise à une
加减乘除
gréement
- Le type de données de la variable cible est
Object
.
- écraser Le contenu de la variable source est écrasé directement dans la variable cible.
- clair Voici la liste des variables que vous avez sélectionnées.
- mettre en place Si vous souhaitez spécifier une valeur manuellement, vous ne devez pas définir la variable source.
- Le type de données de la variable cible est
Array
.
- écraser Le contenu de la variable source est écrasé directement dans la variable cible.
- clair Voici la liste des variables que vous avez sélectionnées.
- un titre posthume supplémentaire ajoute un nouvel élément à la variable tableau de la cible
- extensions Si vous souhaitez ajouter un nouveau tableau à la variable tableau de la cible, c'est-à-dire ajouter plus d'un élément à la fois, vous pouvez le faire.
© déclaration de droits d'auteur
Article copyright Cercle de partage de l'IA Tous, prière de ne pas reproduire sans autorisation.
Articles connexes
Pas de commentaires...