В Интеллос можно использовать базу знаний, чтобы агент получал точную информацию из большого объема текстового контента. Однако во многих случаях предоставленные локальные файлы недостаточно велики, чтобы оправдать использование базы знаний. В таких случаях можно воспользоваться функцией загрузки файлов и передавать локальные файлы напрямую как контекст для чтения моделью LLM. В этом эксперименте мы построим приложение для чтения статей в качестве примера. Такой ассистент будет задавать вопросы по загруженному документу, помогая пользователям читать статьи и другие материалы, держа эти вопросы в уме.

Чему вы научитесь

  • Использованию загрузки файлов
  • Базовому использованию Chatflow
  • Навыку написания промптов
  • Использованию узла итерации
  • Использованию экстрактора документов и оператора списка

Предварительные требования

Создайте Chatflow в Интеллос. Убедитесь, что вы добавили поставщика модели и располагаете достаточной квотой.

Добавление узлов

В этом эксперименте требуется как минимум четыре типа узлов: начальный узел, узел экстрактора документов, узел LLM и узел ответа.

Начальный узел

В начальном узле необходимо добавить файловую переменную. Загрузка файлов поддерживается в Интеллос начиная с версии v0.10.0, что позволяет добавлять файлы в качестве переменной. В начальном узле добавьте файловую переменную и отметьте документ среди поддерживаемых типов файлов. Некоторые читатели могут заметить переменную sys.files среди системных переменных — это файлы или списки файлов, загруженные пользователями в диалоговом окне. Отличие от создания собственных файловых переменных в том, что эта функция требует включить загрузку файлов в разделе функций и задать типы загружаемых файлов, и при каждой новой загрузке файла в диалоге эта переменная будет перезаписана. Выбирайте подходящий способ загрузки файлов в зависимости от вашего бизнес-сценария.

Экстрактор документов

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

LLM

В этом эксперименте нужно спроектировать два узла LLM: извлечение структуры и генерация вопросов.

Извлечение структуры

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

Генерация вопросов

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

Задача 1: обработка нескольких загруженных файлов

Чтобы обрабатывать несколько загруженных файлов, нужен узел итерации. Узел итерации похож на цикл while во многих языках программирования, за исключением того, что в Интеллос нет условных ограничений, а входная переменная может быть только типа array (список). Причина в том, что Интеллос будет выполнять все содержимое списка, пока не обработает его полностью.
Поэтому необходимо изменить тип файловой переменной в начальном узле на array, то есть на список файлов.
Поэтому необходимо изменить тип файловой переменной в начальном узле на array

Задача 2: обработка отдельных файлов из списка

В Задаче 1 некоторые читатели могут заметить, что Интеллос обрабатывает все файлы, прежде чем завершить цикл, тогда как в некоторых случаях нужно работать только с частью файлов, а не со всеми. Для решения этой задачи можно обрабатывать список файлов в Интеллос с помощью узла оператора списка. Операции со списком применимы ко всем переменным типа array, а не только к спискам файлов. Например, можно ограничить анализ только файлами типа «документ» и отсортировать обрабатываемые файлы по именам. Перед узлом итерации добавьте оператор списка, настройте условие фильтрации и сортировку, затем измените вход узла итерации на вывод узла оператора списка.
Перед узлом итерации добавьте оператор списка, настройте условие фильтрации