Разработка потока запроса
Внимание
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Поток запросов — это средство разработки, предназначенное для оптимизации всего цикла разработки приложений искусственного интеллекта на основе больших языковых моделей (LLM). Поток запросов предоставляет комплексное решение, которое упрощает процесс создания прототипов, экспериментов, итераций и развертывания приложений ИИ.
С помощью потока запроса вы можете:
- Оркестрация исполняемых потоков с помощью LLM, запросов и инструментов Python с помощью визуализированного графа.
- Тестирование, отладка и итерацию потоков с легкостью.
- Создайте варианты запроса и сравните их производительность.
В этой статье вы узнаете, как создать и разработать первый поток запросов на портале Azure AI Foundry.
Необходимые компоненты
- Если у вас еще нет проекта Azure AI Foundry, сначала создайте проект.
- Поток запросов требует сеанса вычислений. Если у вас нет среды выполнения, ее можно создать на портале Azure AI Foundry.
- Вам нужна развернутая модель.
Создание и разработка потока запроса
Вы можете создать поток, клонируя примеры, доступные в коллекции, или создав поток с нуля. Если у вас уже есть файлы потока в локальной или общей папке, можно также импортировать файлы для создания потока.
Чтобы создать поток запроса из коллекции на портале Azure AI Foundry:
Войдите в Azure AI Foundry и выберите проект.
В раскрывающемся меню слева выберите поток запроса.
Выберите + Создать.
На плитке "Стандартный " выберите "Создать".
На странице "Создание нового потока" введите имя папки и нажмите кнопку "Создать".
Откроется страница разработки потока запроса. Выберите "Пуск вычислительного сеанса", чтобы запустить вычислительный сеанс для потока.
Теперь вы можете начать разработку потока. По умолчанию отображается пример потока. В этом примере потока есть узлы для средств LLM и Python.
Примечание.
Представление графа только для визуализации. В нем показана структура потока, которую вы разрабатываете. Невозможно изменить представление графа напрямую, но вы можете увеличить масштаб, увеличить масштаб и прокрутить его. Вы можете выбрать узел в представлении графа, чтобы выделить и перейти к узлу в режиме редактирования средства.
При необходимости в поток можно добавить дополнительные средства. Видимые параметры инструментов: LLM, Prompt и Python. Чтобы просмотреть дополнительные инструменты, нажмите кнопку +Другие инструменты.
Выберите подключение и развертывание в редакторе инструментов LLM.
В разделе "Входные данные" добавьте значение для раздела. Например, "атомы".
Выберите "Выполнить" , чтобы запустить поток.
Состояние выполнения потока отображается как запущенное.
После завершения выполнения потока выберите "Просмотреть выходные данные ", чтобы просмотреть результаты потока.
Состояние выполнения потока и выходные данные можно просмотреть в разделе "Выходные данные".
Создание потока
Каждый поток представлен папкой, содержащей файл flow.dag.yaml', файлы исходного кода и системные папки. Вы можете добавлять новые файлы, изменять существующие файлы и удалять файлы. Вы также можете экспортировать файлы в локальный или импортировать файлы из локального сайта.
Помимо встроенного редактирования узла в представлении по умолчанию, вы также можете включить переключатель режима необработанного файла и выбрать имя файла, чтобы изменить файл на вкладке открытия файла.
Входные и выходные данные потока
Входные данные потока — это данные, передаваемые в поток в целом. Определите входную схему, указав имя и тип. Задайте входное значение каждого входного значения для проверки потока. Вы можете ссылаться на входные данные потока позже в узлах потока с помощью ${input.[input name]}
синтаксиса.
Выходные данные потока — это данные, созданные потоком в целом, которые суммируют результаты выполнения потока. Вы можете просматривать и экспортировать выходную таблицу после завершения выполнения потока или пакетного выполнения. Определите выходное значение потока, ссылаясь на выходные данные одного узла потока с помощью синтаксиса ${[node name].output}
или ${[node name].output.[field name]}
.
Связывание узлов вместе
Ссылаясь на выходные данные узла, можно связать узлы вместе. Например, можно ссылаться на выходные данные узла LLM в входных данных узла Python, поэтому узел Python может использовать выходные данные узла LLM, а в представлении графа можно увидеть, что два узла связаны вместе.
Включение условного элемента управления в поток
Поток запросов предлагает не только упрощенный способ выполнения потока, но и обеспечивает мощный компонент для разработчиков — условный контроль, который позволяет пользователям задавать условия для выполнения любого узла в потоке.
В основном условный элемент управления предоставляет возможность связывания каждого узла в потоке с активированной конфигурацией. Эта конфигурация, по сути, является оператором "когда" определяет, когда должен выполняться узел. Эта функция реализуется при наличии сложных потоков, в которых выполнение определенных задач зависит от результатов предыдущих задач. С помощью условного элемента управления можно настроить определенные узлы для выполнения только в том случае, если выполнены указанные условия.
В частности, можно задать конфигурацию активации для узла, нажав кнопку "Активировать конфигурацию " на карточке узла. Вы можете добавить оператор "when" и задать условие.
Вы можете задать условия, ссылаясь на входные данные потока или выходные данные узла. Например, можно задать условие ${input.[input name]}
в качестве определенного значения или ${[node name].output}
в качестве конкретного значения.
Если условие не выполнено, узел пропускается. Состояние узла отображается как "Обходить".
Проверка потока
Вы можете протестировать поток двумя способами:
Запустите один узел.
- Чтобы запустить один узел, выберите значок запуска на узле в представлении по умолчанию. После завершения выполнения можно быстро проверить результат в разделе выходных данных узла.
Запустите весь поток.
- Чтобы запустить весь поток, нажмите кнопку "Выполнить" в правом верхнем углу.
Просмотр результатов теста и трассировки (предварительная версия)
Для всего выполнения потока после выполнения потока можно увидеть состояние выполнения в баннере запуска. Затем можно выбрать трассировку представления для просмотра трассировки для проверки результата и наблюдения за выполнением потока, где можно просмотреть входные и выходные данные всего потока и каждого узла, а также более подробные сведения об отладке. Он доступен во время выполнения и после завершения выполнения.
Общие сведения о представлении трассировки
Перейдите на вкладку "Трассировка " на экране "Выходные данные", чтобы просмотреть граф, предоставляющий сведения о длительности и связанной стоимости маркера потока. Выберите поток под именем узла, чтобы просмотреть подробные сведения о потоке в правой области.
Примечание.
В пакете SDK потока запросов мы определили несколько типов диапазонов, включая LLM, Function, Embedding, Retrieval и Flow. Система автоматически создает диапазоны с информацией о выполнении в указанных атрибутах и событиях.
Дополнительные сведения о типах диапазонов см. в разделе "Диапазон трассировки".
После завершения выполнения потока для проверки результатов можно выбрать кнопку "Просмотреть результаты теста", чтобы проверить все записи выполнения журнала в списке. По умолчанию отображаются записи выполнения, созданные за последние 7 дней. Чтобы изменить условие, можно выбрать фильтр .
Вы также можете выбрать имя записи выполнения, чтобы просмотреть подробные сведения в представлении трассировки.
Разработка потока чата
Поток чата предназначен для разработки беседных приложений, опираясь на возможности стандартного потока и обеспечивая расширенную поддержку входных и выходных данных чата и управления журналом чата. С помощью потока чата можно легко создать чат-бот, который обрабатывает входные и выходные данные чата.
На странице разработки потока чата поток чата помечен меткой "чат", чтобы отличить его от стандартного потока и потока оценки. Чтобы проверить поток чата, нажмите кнопку "Чат", чтобы активировать поле чата для беседы.
Журнал входных и выходных данных чата
Наиболее важными элементами, которые отличают поток чата от стандартного потока, являются входные данные чата, журнал чата и выходные данные чата.
- Входные данные чата: входные данные чата ссылаются на сообщения или запросы, отправленные пользователями в чат-бот. Эффективная обработка входных данных чата имеет решающее значение для успешной беседы, так как она включает понимание намерений пользователей, извлечение соответствующей информации и активацию соответствующих ответов.
- Журнал чата: журнал чата — это запись всех взаимодействий между пользователем и чат-ботом, включая входные данные пользователя и созданные ИИ выходные данные. Ведение журнала чата является важным для отслеживания контекста беседы и обеспечения ИИ может создавать контекстно релевантные ответы.
- Выходные данные чата: выходные данные чата ссылаются на созданные ИИ сообщения, отправляемые пользователю в ответ на их входные данные. Создание контекстно подходящих и привлекательных выходных данных чата жизненно важно для положительного взаимодействия с пользователем.
Поток чата может иметь несколько входных данных, журнал чата и входные данные чата необходимы в потоке чата.
В разделе входных данных потока чата входные данные потока можно пометить как входные данные чата. Затем вы можете заполнить входное значение чата, введя в поле чата.
Поток запросов может помочь пользователю управлять журналом чата. В
chat_history
разделе "Входные данные" зарезервировано для представления журнала чата. Все взаимодействия в поле чата, включая входные данные чата пользователя, созданные выходные данные чата, а также другие входные и выходные данные потока, автоматически хранятся в журнале чата. Пользователь не может вручную задать значениеchat_history
в разделе "Входные данные". Он структурирован как список входных и выходных данных:[ { "inputs": { "<flow input 1>": "xxxxxxxxxxxxxxx", "<flow input 2>": "xxxxxxxxxxxxxxx", "<flow input N>""xxxxxxxxxxxxxxx" }, "outputs": { "<flow output 1>": "xxxxxxxxxxxx", "<flow output 2>": "xxxxxxxxxxxxx", "<flow output M>": "xxxxxxxxxxxxx" } }, { "inputs": { "<flow input 1>": "xxxxxxxxxxxxxxx", "<flow input 2>": "xxxxxxxxxxxxxxx", "<flow input N>""xxxxxxxxxxxxxxx" }, "outputs": { "<flow output 1>": "xxxxxxxxxxxx", "<flow output 2>": "xxxxxxxxxxxxx", "<flow output M>": "xxxxxxxxxxxxx" } } ]
Примечание.
Возможность автоматического сохранения или управления журналом чата — это функция на странице разработки при проведении тестов в поле чата. Для пакетных запусков пользователям необходимо включить журнал чата в набор данных пакетного запуска. Если журнал чата недоступен для тестирования, просто задайте для chat_history пустой список []
в наборе данных пакетного запуска.
Запрос на создание с журналом чата
Включение журнала чата в запросы является важным для создания контекстно-зависимого и привлекательного ответа чат-бота. В запросах можно ссылаться на chat_history
прошлые взаимодействия. Это позволяет ссылаться на предыдущие входные и выходные данные для создания контекстно релевантных ответов.
Используйте грамматику для цикла языка Jinja для отображения списка входных и выходных данных.chat_history
{% for item in chat_history %}
user:
{{item.inputs.question}}
assistant:
{{item.outputs.answer}}
{% endfor %}
Тестирование с помощью поля чата
Поле чата предоставляет интерактивный способ тестирования потока чата путем имитации беседы с чат-ботом. Чтобы протестировать поток чата с помощью поля чата, выполните следующие действия.
- Нажмите кнопку "Чат", чтобы открыть поле чата.
- Введите входные данные теста в поле чата и нажмите клавишу ВВОД, чтобы отправить их в чат-бот.
- Просмотрите ответы чат-бота, чтобы убедиться, что они контекстно подходят и точны.
- Просмотрите трассировку на месте для быстрого наблюдения и отладки.