Узлы агрегации переменных и присвоения переменных в рабочем процессе Dify

агрегирование переменных

определить

Агрегируйте переменные из нескольких ветвей в одну переменную для единообразной настройки последующих узлов.

Узел Variable Aggregation (ранее узел Variable Assignment) - это ключевой узел рабочего процесса, который отвечает за консолидацию результатов различных ветвей, обеспечивая ссылки и доступ к результатам через одну унифицированную переменную независимо от того, какая ветвь выполняется. Это очень полезно в случае нескольких ветвей, когда переменные с одинаковой ролью в разных ветвях могут быть сопоставлены с одной выходной переменной, что позволяет избежать дублирования определений в последующих узлах.

взять

Агрегация переменных упрощает управление потоком данных, позволяя объединить несколько результатов, таких как классификация задач или условное ветвление, в один результат для использования и манипулирования узлами, расположенными ниже по ходу процесса.

Множественное агрегирование после классификации проблем

Без добавления агрегирования переменных узлы LLM и узлы прямого ответа должны быть определены повторно для ветвей классификации 1 и классификации 2 после их извлечения из разных баз знаний.

Dify工作流中的变量聚合和变量赋值节点
Классификация проблем (агрегирование без переменных)

 

Добавление агрегации переменных позволяет объединить результаты двух узлов поиска знаний в одну переменную.

Dify工作流中的变量聚合和变量赋值节点
Множественное агрегирование после классификации проблем

 

Множественная агрегация после условного разветвления IF/ELSE

Dify工作流中的变量聚合和变量赋值节点
Множественное агрегирование после классификации проблем

 

Требования к форматированию

Агрегатор переменных поддерживает агрегацию данных различных типов, включая строки (String), фигурки (Number), документация (File) объект (Object) и массивы (Array)

Агрегаторы переменных могут объединять только переменные одного типа данных. Если первая переменная, добавляемая в узел агрегации переменных, имеет формат данных переменной Если формат данных первой переменной, добавляемой в узел агрегации переменных, является StringПеременные, которые могут быть добавлены, автоматически фильтруются при последующих подключениях к String Тип.

совокупная группировка

При включенной группировке агрегатор переменных может объединять несколько групп переменных, причем для объединения в каждой группе требуется один и тот же тип данных.

 

присвоение переменных

определить

Узел Variable Assignment используется для назначения переменных на записываемые переменные; поддерживаются следующие записываемые переменные:

Использование: Узел Назначение переменной позволяет назначить переменную в рабочем процессе переменной сеанса для временного хранения, на которую можно постоянно ссылаться в последующих диалогах.

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

Примерные сценарии

Вы можете установить диалоговый процессКонтекст, файлы, загруженные в диалоговое окно, предпочтения, введенные пользователеми т.д. записываются в переменные сессии через узел присвоения переменных и используются в качестве справочной информации для последующих диалогов.

Сцена 1

Автоматически определяет извлечение и хранение информации в диалоге LLM может записывать важную информацию, введенную пользователем в течение сеанса, с помощью массива переменных сеанса и персонализировать ответы в последующих разговорах на основе исторической информации, хранящейся в переменных сеанса.

Пример: начав диалог, LLM автоматически определяет, содержит ли пользовательский ввод факты, предпочтения или историю, которые необходимо запомнить. Если да, LLM извлекает и сохраняет эту информацию, а затем использует ее в качестве контекста для ответа. Если новая информация не сохраняется, LLM отвечает на вопрос напрямую, используя свои собственные знания из памяти.

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

Процесс конфигурирования:

  1. Установка переменных сеанса : Сначала создайте массив переменных сессии memories, типа array[object], используется для хранения фактов, предпочтений и истории пользователя.
  2. Оценочная и экстрактивная память ::
    • Добавьте узел условного суждения, который использует LLM для определения того, содержит ли пользовательский ввод новую информацию, которую необходимо запомнить.
    • Если есть новая информация, пройдитесь по ветке и используйте узел LLM для извлечения этой информации.
    • Если новой информации нет, спуститесь вниз по ветке и ответьте прямо, используя имеющуюся память.
  3. Вариативное задание/письмо ::
    • В верхней ветви извлеченная новая информация добавляется (append) с помощью узла присвоения переменных к memories в массиве.
    • Используйте функцию escape для преобразования текстовых строк, выводимых LLM, в формат, пригодный для хранения в массиве[object].
  4. Чтение и использование переменных ::
    • В последующем узле LLM memories Содержимое массива преобразуется в строку и вставляется в подсказки LLM в качестве контекста.
    • LLM использует эту историческую информацию для создания персонализированных ответов.

Код узла на рисунке выглядит следующим образом:

  1. Преобразование строки в объект

Копировать

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. Преобразование объекта в строку

Копировать

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

Сцена 2

Запишите информацию о первоначальных предпочтениях пользователя , который запоминает языковые предпочтения, введенные пользователем в рамках сессии, и последовательно отвечает на этом языке в последующих диалогах.

Пример: пользователь начинает диалог до того, как language Если в поле ввода указано "Chinese", язык будет записан в переменную сессии, и LLM будет ссылаться на информацию в переменной сессии при ответе в следующих диалогах, и продолжит отвечать на "Chinese" в следующих диалогах.

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

Процесс конфигурирования:

Установка переменных сеанса : Сначала установите переменную сеанса languageдобавьте узел условного суждения в начале потока сеансов, чтобы судить о language Является ли значение переменной нулевым.

Запись переменных/задание : В начале первого раунда диалога, если language Если значение переменной равно null, узел LLM используется для извлечения языка, введенного пользователем, а затем узел присвоения переменной используется для записи типа языка в переменную сессии language Средний.

Переменное чтение : В последующих раундах диалога language переменная уже хранит языковые предпочтения пользователя. В последующих диалогах узел LLM отвечает предпочтительным для пользователя типом языка, ссылаясь на переменную language.

Сцена 3

Контрольный список вспомогательных средств Проверка Контрольный список - это набор переменных, которые можно использовать для записи пользовательских данных в течение сессии с помощью переменных сессии, обновления содержимого контрольного списка и проверки отсутствующих элементов в последующих диалогах.

Пример: после начала диалога LLM попросит пользователя ввести пункты Контрольного списка в диалоговое окно, как только пользователь упомянет пункты Контрольного списка, он будет обновлен и сохранен в переменной сессии. lLM будет напоминать пользователю продолжать добавлять недостающие пункты после каждого раунда диалога.

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

Процесс конфигурирования:

  • Установка переменных сеанса: Сначала установите переменную сессии ai_checklistПеременная ссылается на LLM как на контекст, который необходимо исследовать.
  • Переменное задание/письмо: На каждом раунде диалога в узле LLM проверяйте ai_checklist и сравните его с данными пользователя, если пользователь предоставит новую информацию, то обновите контрольный список и запишите результат в файл ai_checklist Внутри.
  • Переменное чтение: В каждом раунде диалога читается ai_cheklist значения и сравнивайте вводимые пользователем данные до тех пор, пока все контрольные списки не будут завершены.

Назначение узлов с помощью переменных

Нажмите на правую сторону узла  Нет, выберите "Назначение переменных" узел, в котором настраиваются переменные, которые должны быть присвоены исходной переменной. Узел Variable Assignment поддерживает присвоение значений нескольким переменным одновременно.

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

Установка переменных

Переменные: Выберите переменную, которой нужно присвоить значение.

Переменные настройки: Выбирает переменную для присвоения, т.е. указывает исходную переменную для преобразования.

Логика присвоения переменных на рисунке выше: учитывается языковое предпочтение, введенное пользователем на начальной странице. Start/language Назначение переменных переменным сеанса системного уровня language Внутри.

Укажите режим записи переменной

Тип данных целевой переменной влияет на режим записи в нее. Ниже перечислены режимы записи между различными переменными:

  1. Тип данных целевой переменной String.
  • перезаписать Исходная переменная перезаписывается непосредственно в целевую переменную.
  • очистить Ниже приведен список выбранных вами переменных.
  • устанавливать Если вы хотите указать значение вручную, вам не нужно задавать исходную переменную.
  1. Тип данных целевой переменной Number.
  • перезаписать Исходная переменная перезаписывается непосредственно в целевую переменную.
  • очистить Ниже приведен список выбранных вами переменных.
  • устанавливать Если вы хотите указать значение вручную, вам не нужно задавать исходную переменную.
  • цифровая обработка Целевая переменная подвергается加减乘除буровая установка
  1. Тип данных целевой переменной Object.
  • перезаписать Содержимое исходной переменной переписывается непосредственно в целевую переменную.
  • очистить Ниже приведен список выбранных вами переменных.
  • устанавливать Если вы хотите указать значение вручную, вам не нужно задавать исходную переменную.
  1. Тип данных целевой переменной Array.
  • перезаписать Содержимое исходной переменной переписывается непосредственно в целевую переменную.
  • очистить Ниже приведен список выбранных вами переменных.
  • дополнительный посмертный титул добавьте новый элемент в переменную массива цели.
  • удлинители Если вы хотите добавить новый массив в переменную массива цели, то есть добавить более одного элемента за раз, вы можете сделать это.
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...