Agregación de variables y nodos de asignación de variables en el flujo de trabajo de Dify

agregación de variables

defina

Agregue variables de múltiples ramas en una sola variable para una configuración uniforme de los nodos descendentes.

El nodo de Agregación de Variables (antes nodo de Asignación de Variables) es un nodo clave en el flujo de trabajo que se encarga de consolidar las salidas de diferentes ramas, asegurando que los resultados se referencian y se accede a ellos a través de una única variable unificada independientemente de la rama que se ejecute. Esto es muy útil en el caso de múltiples ramas, donde variables con el mismo rol en diferentes ramas pueden ser mapeadas a una única variable de salida, evitando definiciones duplicadas en nodos aguas abajo.

toma

La agregación de variables simplifica la gestión del flujo de datos al permitir que varias salidas, como la clasificación de problemas o la bifurcación condicional, se agreguen en una única salida para su uso y manipulación por los nodos posteriores del proceso.

Agregación múltiple tras la clasificación del problema

Sin añadir la agregación de variables, los nodos LLM descendentes y de respuesta directa deben definirse repetidamente para las ramas de clasificación 1 y clasificación 2 después de que se hayan recuperado de diferentes bases de conocimiento.

Dify工作流中的变量聚合和变量赋值节点
Clasificación de problemas (agregación sin variables)

 

La agregación de variables permite agregar la salida de dos nodos de recuperación de conocimientos en una sola variable.

Dify工作流中的变量聚合和变量赋值节点
Agregación múltiple tras la clasificación del problema

 

Agregación múltiple tras bifurcación condicional IF/ELSE

Dify工作流中的变量聚合和变量赋值节点
Agregación múltiple tras la clasificación del problema

 

Requisitos de formato

El agregador de variables admite la agregación de múltiples tipos de datos, incluidas las cadenas (String), cifras (Number), la documentación (File) objeto (Object) y matrices (Array)

Los agregadores de variables sólo pueden agregar variables del mismo tipo de datos. Si la primera variable que se añade al nodo de agregación de variables está en el formato de datos de la variable Si el formato de datos de la primera variable añadida a una variable dentro de un nodo de agregación de variables es StringLa variable que se puede añadir se filtra automáticamente para las conexiones posteriores al String Tipo.

agrupación de agregados

Con la agrupación agregada activada, el agregador de variables puede agregar múltiples grupos de variables, con el mismo tipo de datos requerido para la agregación dentro de cada grupo.

 

asignación variable

defina

El nodo Asignación de variables se utiliza para realizar asignaciones de variables a variables con permisos de escritura, y se admiten las siguientes variables con permisos de escritura:

Uso: El nodo Asignación de variables permite asignar una variable dentro de un flujo de trabajo a una variable de sesión para su almacenamiento temporal y que pueda ser referenciada continuamente en diálogos posteriores.

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

Ejemplos de escenarios

Puede establecer el proceso de diálogo delContexto, archivos cargados en el cuadro de diálogo, preferencias introducidas por el usuarioetc., se escriben en las variables de sesión a través del nodo de asignación de variables y se utilizan como información de referencia para los diálogos posteriores.

Escena 1

Determina automáticamente la extracción y el almacenamiento de información en el diálogo El LLM puede registrar información importante introducida por el usuario dentro de la sesión a través de un conjunto de variables de sesión y hacer que el LLM personalice las respuestas en conversaciones posteriores basándose en la información histórica almacenada en las variables de sesión.

Ejemplo: Tras iniciar un diálogo, LLM determina automáticamente si la entrada del usuario contiene datos, preferencias o historial que sea necesario recordar. En caso afirmativo, LLM extrae y almacena esta información antes de utilizarla como contexto para la respuesta. Si no hay nueva información que almacenar, LLM responderá a la pregunta directamente utilizando su propio conocimiento de memoria relevante.

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

Proceso de configuración:

  1. Establecer variables de sesión En primer lugar, configure una matriz de variables de sesión memoriesde tipo array[object], se utiliza para almacenar los datos, preferencias e historial del usuario.
  2. Memoria juiciosa y extractiva ::
    • Añade un nodo de juicio condicional que utiliza LLM para determinar si la entrada del usuario contiene nueva información que necesita ser recordada.
    • Si hay información nueva, sube por la rama y utiliza el nodo LLM para extraer esa información.
    • Si no hay información nueva, baje por la rama y responda directamente utilizando la memoria existente.
  3. Asignación/escritura variable ::
    • En la rama superior, la nueva información extraída se añade (append) mediante el nodo de asignación de variables a la rama memories en la matriz.
    • Utilice la función escape para convertir las cadenas de texto emitidas por LLM a un formato adecuado para su almacenamiento en array[object].
  4. Lectura y uso de variables ::
    • En el nodo LLM posterior, el memories El contenido del array se convierte en una cadena y se inserta en los Prompts de LLM como contexto.
    • LLM utiliza esta información histórica para generar respuestas personalizadas.

El código del nodo de la figura es el siguiente:

  1. Escape de una cadena a un objeto

Copia

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. Escapar objeto a cadena

Copia

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>"
}

Escena 2

Registrar la información de preferencia inicial del usuario que recuerda la preferencia de idioma introducida por el usuario en la sesión y responde sistemáticamente en ese tipo de idioma en los diálogos posteriores.

Ejemplo: El usuario inicia un diálogo antes de que language Si se especifica "Chino" en la casilla de entrada, el idioma se escribirá en la variable de sesión, y el LLM se referirá a la información de la variable de sesión cuando responda en los siguientes diálogos, y continuará respondiendo en "Chino" en los siguientes diálogos.

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

Proceso de configuración:

Establecer variables de sesión En primer lugar, establece una variable de sesión languageañada un nodo de juicio condicional al principio del flujo de la sesión para juzgar el language Si el valor de la variable es nulo.

Escritura/asignación de variables : Al comienzo de la primera ronda de diálogo, si language Si el valor de la variable es nulo, se utiliza el nodo LLM para extraer el idioma introducido por el usuario y, a continuación, se utiliza el nodo de asignación de variables para escribir el tipo de idioma en la variable de sesión language Medio.

Lectura variable : En las siguientes rondas del diálogo language ya almacena la preferencia de idioma del usuario. En diálogos posteriores, el nodo LLM responde con el tipo de idioma preferido por el usuario haciendo referencia a la variable de idioma.

Escena 3

Lista de comprobación auxiliar Comprobación La lista de comprobación es un conjunto de variables que pueden utilizarse para registrar las entradas del usuario dentro de una sesión mediante variables de sesión, actualizar el contenido de la lista de comprobación y comprobar si faltan elementos en diálogos posteriores.

Ejemplo: Después de iniciar un diálogo, LLM pedirá al usuario que introduzca los elementos de la Lista de Comprobación en el cuadro de diálogo, una vez que el usuario mencione los elementos de la Lista de Comprobación, ésta se actualizará y se almacenará en la variable de sesión. lLM recordará al usuario que siga añadiendo los elementos que faltan después de cada ronda de diálogo.

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

Proceso de configuración:

  • Establecimiento de variables de sesión: En primer lugar, establezca una variable de sesión ai_checklistse hace referencia a la variable dentro del LLM como contexto a examinar.
  • Asignación/escritura variable: En cada ronda de diálogo, comprueba dentro del nodo LLM el ai_checklist y compararla con la entrada del usuario, si el usuario proporciona nueva información, actualiza la Lista de Comprobación y escribe la salida en el nodo de asignación de variables del ai_checklist Dentro.
  • Variables a leer: Leer cada ronda de diálogo ai_cheklist valores de la lista de comprobación y compara la entrada del usuario hasta completar todas las listas de comprobación.

Asignación de nodos mediante variables

Haga clic a la derecha del nodo  No., seleccione "Asignación de variables" que configura las variables que deben asignarse a la variable de origen. El nodo Asignación de variables permite asignar valores a múltiples variables al mismo tiempo.

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

Variables de ajuste

Variables: Selecciona la variable a la que hay que asignar un valor.

Variables de ajuste: Selecciona la variable que se va a asignar, es decir, especifica la variable fuente que se va a convertir.

La lógica de asignación de variables en la figura anterior: se tiene en cuenta la preferencia de idioma rellenada por el usuario en la página inicial. Start/language Asignación de variables a variables de sesión a nivel de sistema language Dentro.

Especifica el modo de escritura de la variable

El tipo de datos de la variable de destino afectará al modo de escritura de la variable. A continuación se indican los modos de escritura entre distintas variables:

  1. El tipo de datos de la variable de destino es String.
  • sobrescribir La variable de origen se sobrescribe directamente en la variable de destino.
  • borrar A continuación se enumeran las variables seleccionadas.
  • establecer Si desea especificar un valor manualmente, no es necesario establecer la variable de origen.
  1. El tipo de datos de la variable de destino es Number.
  • sobrescribir La variable de origen se sobrescribe directamente en la variable de destino.
  • borrar A continuación se enumeran las variables seleccionadas.
  • establecer Si desea especificar un valor manualmente, no es necesario establecer la variable de origen.
  • procesamiento digital La variable objetivo se somete a un加减乘除plataforma
  1. El tipo de datos de la variable de destino es Object.
  • sobrescribir El contenido de la variable de origen se sobrescribe directamente en la variable de destino.
  • borrar A continuación se enumeran las variables seleccionadas.
  • establecer Si desea especificar un valor manualmente, no es necesario establecer la variable de origen.
  1. El tipo de datos de la variable de destino es Array.
  • sobrescribir El contenido de la variable de origen se sobrescribe directamente en la variable de destino.
  • borrar A continuación se enumeran las variables seleccionadas.
  • un título póstumo adicional añade un nuevo elemento a la variable de matriz del objetivo
  • extensiones Si quieres añadir un nuevo array a la variable array del objetivo, es decir, añadir más de un elemento a la vez, puedes hacerlo.
© declaración de copyright

Puestos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...