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.

Dify工作流中的变量聚合和变量赋值节点
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.

Dify工作流中的变量聚合和变量赋值节点
Agrégation multiple après classification des problèmes

 

Agrégation multiple après le branchement conditionnel IF/ELSE

Dify工作流中的变量聚合和变量赋值节点
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 StringLa 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.

Dify工作流中的变量聚合和变量赋值节点

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.

Dify工作流中的变量聚合和变量赋值节点

Processus de configuration :

  1. Définition des variables de session Les variables de session sont d'abord définies dans un tableau. memoriesde type tableau[objet], est utilisé pour stocker les faits, les préférences et l'historique de l'utilisateur.
  2. 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.
  3. 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].
  4. 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.

Le code du nœud de la figure est le suivant :

  1. 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)}"
}
  1. É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.

Dify工作流中的变量聚合和变量赋值节点

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 languageDans 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.

Dify工作流中的变量聚合和变量赋值节点

Processus de configuration :

  • Définition des variables de session : Définissez d'abord une variable de session ai_checklistla 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 fichier ai_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.

Dify工作流中的变量聚合和变量赋值节点

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 :

  1. 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.
  1. 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
  1. 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.
  1. 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

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...