Узлы агрегации переменных и присвоения переменных в рабочем процессе Dify
агрегирование переменных
определить
Агрегируйте переменные из нескольких ветвей в одну переменную для единообразной настройки последующих узлов.
Узел Variable Aggregation (ранее узел Variable Assignment) - это ключевой узел рабочего процесса, который отвечает за консолидацию результатов различных ветвей, обеспечивая ссылки и доступ к результатам через одну унифицированную переменную независимо от того, какая ветвь выполняется. Это очень полезно в случае нескольких ветвей, когда переменные с одинаковой ролью в разных ветвях могут быть сопоставлены с одной выходной переменной, что позволяет избежать дублирования определений в последующих узлах.
взять
Агрегация переменных упрощает управление потоком данных, позволяя объединить несколько результатов, таких как классификация задач или условное ветвление, в один результат для использования и манипулирования узлами, расположенными ниже по ходу процесса.
Множественное агрегирование после классификации проблем
Без добавления агрегирования переменных узлы LLM и узлы прямого ответа должны быть определены повторно для ветвей классификации 1 и классификации 2 после их извлечения из разных баз знаний.
- Классификация проблем (агрегирование без переменных)
Добавление агрегации переменных позволяет объединить результаты двух узлов поиска знаний в одну переменную.
- Множественное агрегирование после классификации проблем
Множественная агрегация после условного разветвления IF/ELSE
- Множественное агрегирование после классификации проблем
Требования к форматированию
Агрегатор переменных поддерживает агрегацию данных различных типов, включая строки (String
), фигурки (Number
), документация (File
) объект (Object
) и массивы (Array
)
Агрегаторы переменных могут объединять только переменные одного типа данных. Если первая переменная, добавляемая в узел агрегации переменных, имеет формат данных переменной Если формат данных первой переменной, добавляемой в узел агрегации переменных, является String
Переменные, которые могут быть добавлены, автоматически фильтруются при последующих подключениях к String
Тип.
совокупная группировка
При включенной группировке агрегатор переменных может объединять несколько групп переменных, причем для объединения в каждой группе требуется один и тот же тип данных.
присвоение переменных
определить
Узел Variable Assignment используется для назначения переменных на записываемые переменные; поддерживаются следующие записываемые переменные:
Использование: Узел Назначение переменной позволяет назначить переменную в рабочем процессе переменной сеанса для временного хранения, на которую можно постоянно ссылаться в последующих диалогах.

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

Процесс конфигурирования:
- Установка переменных сеанса : Сначала создайте массив переменных сессии
memories
, типа array[object], используется для хранения фактов, предпочтений и истории пользователя. - Оценочная и экстрактивная память ::
- Добавьте узел условного суждения, который использует LLM для определения того, содержит ли пользовательский ввод новую информацию, которую необходимо запомнить.
- Если есть новая информация, пройдитесь по ветке и используйте узел LLM для извлечения этой информации.
- Если новой информации нет, спуститесь вниз по ветке и ответьте прямо, используя имеющуюся память.
- Вариативное задание/письмо ::
- В верхней ветви извлеченная новая информация добавляется (append) с помощью узла присвоения переменных к
memories
в массиве. - Используйте функцию escape для преобразования текстовых строк, выводимых LLM, в формат, пригодный для хранения в массиве[object].
- В верхней ветви извлеченная новая информация добавляется (append) с помощью узла присвоения переменных к
- Чтение и использование переменных ::
- В последующем узле LLM
memories
Содержимое массива преобразуется в строку и вставляется в подсказки LLM в качестве контекста. - LLM использует эту историческую информацию для создания персонализированных ответов.
- В последующем узле LLM
Код узла на рисунке выглядит следующим образом:
- Преобразование строки в объект
Копировать
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)}"
}
- Преобразование объекта в строку
Копировать
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" в следующих диалогах.

Процесс конфигурирования:
Установка переменных сеанса : Сначала установите переменную сеанса language
добавьте узел условного суждения в начале потока сеансов, чтобы судить о language
Является ли значение переменной нулевым.
Запись переменных/задание : В начале первого раунда диалога, если language
Если значение переменной равно null, узел LLM используется для извлечения языка, введенного пользователем, а затем узел присвоения переменной используется для записи типа языка в переменную сессии language
Средний.
Переменное чтение : В последующих раундах диалога language
переменная уже хранит языковые предпочтения пользователя. В последующих диалогах узел LLM отвечает предпочтительным для пользователя типом языка, ссылаясь на переменную language.
Сцена 3
Контрольный список вспомогательных средств Проверка Контрольный список - это набор переменных, которые можно использовать для записи пользовательских данных в течение сессии с помощью переменных сессии, обновления содержимого контрольного списка и проверки отсутствующих элементов в последующих диалогах.
Пример: после начала диалога LLM попросит пользователя ввести пункты Контрольного списка в диалоговое окно, как только пользователь упомянет пункты Контрольного списка, он будет обновлен и сохранен в переменной сессии. lLM будет напоминать пользователю продолжать добавлять недостающие пункты после каждого раунда диалога.

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

Установка переменных
Переменные: Выберите переменную, которой нужно присвоить значение.
Переменные настройки: Выбирает переменную для присвоения, т.е. указывает исходную переменную для преобразования.
Логика присвоения переменных на рисунке выше: учитывается языковое предпочтение, введенное пользователем на начальной странице. Start/language
Назначение переменных переменным сеанса системного уровня language
Внутри.
Укажите режим записи переменной
Тип данных целевой переменной влияет на режим записи в нее. Ниже перечислены режимы записи между различными переменными:
- Тип данных целевой переменной
String
.
- перезаписать Исходная переменная перезаписывается непосредственно в целевую переменную.
- очистить Ниже приведен список выбранных вами переменных.
- устанавливать Если вы хотите указать значение вручную, вам не нужно задавать исходную переменную.
- Тип данных целевой переменной
Number
.
- перезаписать Исходная переменная перезаписывается непосредственно в целевую переменную.
- очистить Ниже приведен список выбранных вами переменных.
- устанавливать Если вы хотите указать значение вручную, вам не нужно задавать исходную переменную.
- цифровая обработка Целевая переменная подвергается
加减乘除
буровая установка
- Тип данных целевой переменной
Object
.
- перезаписать Содержимое исходной переменной переписывается непосредственно в целевую переменную.
- очистить Ниже приведен список выбранных вами переменных.
- устанавливать Если вы хотите указать значение вручную, вам не нужно задавать исходную переменную.
- Тип данных целевой переменной
Array
.
- перезаписать Содержимое исходной переменной переписывается непосредственно в целевую переменную.
- очистить Ниже приведен список выбранных вами переменных.
- дополнительный посмертный титул добавьте новый элемент в переменную массива цели.
- удлинители Если вы хотите добавить новый массив в переменную массива цели, то есть добавить более одного элемента за раз, вы можете сделать это.
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...