Разработка потока запросов
Поток запросов — это средство разработки, упрощающее цикл разработки приложений искусственного интеллекта, которые работают на основе больших языковых моделей (LLM). В этой статье вы узнаете, как создать и разработать поток запросов и поток чата в Студия машинного обучения Azure.
По мере роста импульса для приложений ИИ на основе LLM поток запросов предоставляет комплексное решение, упрощающее процесс прототипирования, экспериментирования, итерации и развертывания приложений ИИ. С помощью потока запроса можно:
- Оркестрация исполняемых потоков с помощью LLM, запросов и инструментов Python с помощью визуализированного графа.
- Легко тестировать, отлаживать и выполнять итерацию потоков.
- Создайте варианты запроса и сравните их производительность.
Создание и разработка потока запроса
Чтобы создать поток запроса, выберите поток запроса в области навигации Студия машинного обучения Azure слева и нажмите кнопку "Создать" на странице потока запроса.
На экране создания потока можно создать поток следующим образом:
- Создание потока "Стандартный", "Чат" или "Оценка" из шаблона.
- Клонирование доступного примера из коллекции "Обзор".
- Импорт существующего потока из локальных файлов или общей папки.
Чтобы создать поток, нажмите кнопку "Создать " или "Клонировать " на нужной карте потока. На следующей панели экрана можно изменить новое имя потока, а затем нажмите кнопку "Создать" или "Клонировать". Новый поток открывается в пользовательском интерфейсе разработки.
Сеанс вычислений
Прежде чем приступить к разработке, запустите сеанс вычислений, выбрав "Запустить сеанс вычислений" в верхней части страницы разработки потока. Сеанс вычислений необходим для выполнения потока. Сеанс вычислений управляет вычислительными ресурсами, необходимыми для запуска приложения, включая образ Docker, содержащий все необходимые пакеты зависимостей.
Страница разработки
Сеанс вычислений может занять несколько минут. Во время запуска сеанса вычислений проверьте части страницы разработки потока.
Поток или плоское представление на левой части страницы — основная рабочая область, в которой вы создаете поток. В представлении с плоской можно изменять узлы, инструменты, запросы и входные данные; запуск узлов или всего потока; и определите и просмотрите выходные данные.
Файлы в правом верхнем углу отображают папку и структуру файлов потока. Каждый поток содержит папку, содержащую файл flow.dag.yaml, файлы исходного кода и системные папки. Вы можете добавлять, изменять, удалять, загружать или скачивать файлы для тестирования, развертывания или совместной работы.
Представление Graph в правом нижнем углу визуализирует структуру потока. Вы можете увеличить или уменьшить масштаб или использовать автоматический макет. Вы не можете редактировать это представление напрямую, но вы можете выбрать узел, чтобы найти и изменить его в представлении с плоской.
Входные и выходные данные потока
В разделах "Входные и выходные данные" можно просматривать, добавлять или удалять и изменять входные и выходные данные.
Входные данные потока — это данные, передаваемые в поток в целом. Вы определяете входную схему, указывая имя и тип, и задаете значение каждого входного значения для проверки потока. Вы можете ссылаться на входные данные потока в узлах потока с помощью
${input.<input name>}
.Выходные данные потока — это данные, созданные потоком в целом, которые суммируют результаты выполнения потока. Вы можете определить выходное значение потока, ссылаясь на выходные данные одного узла с помощью синтаксиса
${<node name>.output}
или${<node name>.output.<field name>}
. Вы можете просмотреть и экспортировать выходную таблицу результатов после завершения выполнения потока или пакетного выполнения.
Средства потока
В потоке можно использовать различные виды инструментов, таких как LLM, Python, Запрос, API Serp и безопасность содержимого. При выборе инструмента в конец потока добавляется новый узел для этого средства. Необходимо указать имя узла и задать необходимые конфигурации. Элементы управления узла можно использовать для изменения положения узла в потоке.
Входные и выходные данные узла
Средства LLM и Prompt используют Jinja в качестве языка шаблонов для динамического создания запроса. Например, можно заключить {{}}
входное имя вместо фиксированного текста, чтобы его можно было заменить на лету.
Входные и выходные данные узла можно задать следующим образом:
- Задайте входное значение напрямую.
- Ссылка на входные данные потока с помощью
${input.<input name>}
. - Ссылка на выходные данные узла с помощью
${<node name>.output}
или${<node name>.output.<field name>}
.
После завершения создания запроса или скрипта Python выберите "Проверить и проанализировать входные данные" для системы, чтобы автоматически проанализировать входные данные узла на основе шаблона запроса и ввода функции Python.
Вы можете связать узлы, ссылаясь на выходные данные узла. Например, можно ссылаться на выходные данные узла LLM в входных данных узла Python, чтобы узел Python потреблял выходные данные узла LLM. В представлении Graph можно увидеть два узла, связанных друг с другом.
Узлы LLM
Для узла Azure OpenAI LLM необходимо выбрать подключение, API и deployment_name и задать запрос. Вы используете подключение для безопасного хранения секретных ключей и управления другими конфиденциальными учетными данными, необходимыми для взаимодействия с Azure OpenAI.
Если у вас еще нет подключения, создайте его перед добавлением узла LLM и убедитесь, что ресурс Azure OpenAI имеет чат или развертывание завершения . Дополнительные сведения см. в статье "Настройка подключения " и создание ресурса и развертывание модели с помощью Azure OpenAI.
Узлы Python
Чтобы использовать средство Python, необходимо задать скрипт Python, входное значение и другие конфигурации. Новый узел Python предоставляет следующую функцию Python, которая определяет входные и выходные данные.
from promptflow import tool
# The inputs section will change based on the arguments of the tool function, after you save the code
# Adding type to arguments and return value will help the system show the types properly
# Please update the function name/signature per need
@tool
def my_python_tool(input1: str) -> str:
return 'hello ' + input1
Условный элемент управления
Поток запросов предлагает условный контроль, который позволяет задать условия для выполнения любого узла в потоке.
Условный элемент управления предоставляет возможность связать каждый узел в потоке с активированной конфигурацией. Эта конфигурация — это when
инструкция, которая определяет, когда должен выполняться узел. Эта функция реализуется в сложных потоках, где выполнение определенных задач зависит от результатов предыдущих задач. С помощью условного элемента управления можно настроить определенные узлы для выполнения только в том случае, если выполнены указанные условия.
Задайте конфигурацию активации для узла, нажав кнопку "Активировать конфигурацию " на карточке узла. Добавьте инструкцию "Когда" и задайте условие. Вы можете задать условия, ссылаясь на входные данные потока или выходные данные узла. Например, можно задать условие ${input.<input name>}
или ${<node name>.output}
в качестве определенных значений. Если условие не выполнено, узел пропускается, а состояние узла отображается как "Обходить".
Тестирование потока
Вы можете протестировать поток, выполнив один узел или выполнив весь поток.
- Чтобы запустить один узел, щелкните значок запуска на карточке узла. После завершения выполнения узла можно быстро проверить результаты в разделе выходных данных узла.
- Чтобы запустить весь поток, выберите "Выполнить " в верхней части страницы.
Выходные данные потока
После нажатия кнопки "Выполнить" , чтобы выполнить поток, вы увидите состояние выполнения в баннере в верхней части страницы. Выберите "Просмотреть выходные данные" в верхнем баннере или верхней строке меню, чтобы просмотреть подробные входные данные, выходные данные, выполнение потока и сведения о оркестрации.
После завершения выполнения потока можно выбрать "Просмотреть выходные данные ", чтобы проверить все исторические выходные данные на экране выходных данных.
Перейдите на вкладку "Трассировка " на экране "Выходные данные" , чтобы просмотреть граф, предоставляющий сведения о длительности и связанной стоимости маркера потока. Выберите поток под именем узла, чтобы просмотреть подробные сведения о потоке в правой области.
Разверните поток и выберите любой шаг, чтобы просмотреть подробные сведения для этого шага. Длительность выполнения каждого узла в дереве диапазонов отображается. Дополнительные сведения см. в спецификации диапазона трассировки.
Разработка потока чата
Поток чата — это определенный тип потока запросов, предназначенный для разработки беседных приложений. Поток чата основан на стандартных возможностях потока, чтобы обеспечить расширенную поддержку входных и выходных данных чата и журнала чата. С помощью потока чата можно легко создать чат-бот, который обрабатывает входные и выходные данные чата.
Чтобы создать поток чата, на экране "Создать поток" выберите "Создать" на карте потока чата или выберите "Чат" в коллекции "Изучение" и клонируйте один из доступных потоков.
На странице разработки потока чата поток чата помечается меткой чата, чтобы отличить ее от стандартных и оценочных потоков. Чтобы протестировать поток чата, выберите "Чат" в верхней части страницы, чтобы открыть поле чата для беседы.
Входные данные чата, выходные данные чата и журнал чата
Наиболее важными элементами, которые отличают поток чата от стандартного потока, являются входные данные чата, журнал чата и выходные данные чата. Входные данные журнала чата и чата требуются в потоках чата.
Входные данные чата относятся к сообщениям или запросам, отправленным пользователями чат-боту. Эффективная обработка входных данных чата имеет решающее значение для успешной беседы, так как она включает понимание намерений пользователей, извлечение соответствующей информации и активацию соответствующих ответов.
Журнал чата — это запись всех взаимодействий между пользователем и чат-ботом, включая входные данные пользователя и выходные данные, созданные ИИ. Ведение журнала чата является важным для отслеживания контекста беседы и обеспечения ИИ может создавать контекстно релевантные ответы.
Выходные данные чата ссылаются на созданные ИИ сообщения, отправляемые пользователям в ответ на их входные данные. Создание контекстно подходящих и привлекательных выходных данных чата жизненно важно для положительного взаимодействия с пользователем.
Поток чата может иметь несколько входных данных. В разделе входных данных потока чата вы пометите один из входных данных чата и заполняете входное значение чата, введя вопрос в поле чата.
Управление журналом чата
Чтобы помочь вам управлять журналом чатов, в разделе "Входные данные" 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 %}
Тестирование с помощью поля чата
Поле чата предоставляет интерактивный способ тестирования потока чата путем имитации беседы с чат-ботом. Чтобы протестировать поток чата с помощью поля чата:
- Выберите "Чат", чтобы открыть боковую панель чата.
- Введите тестовые вопросы в поле чата в нижней части экрана, чтобы отправить их в чат-бот.
- Просмотрите ответы чат-бота, чтобы убедиться, что они контекстно подходят и точны.
- Выберите "Просмотреть выходные данные " в верхней части страницы разработки, чтобы быстро просмотреть и отладить входные данные чата, выходные данные и журнал.
- На экране "Выходные данные" выберите вкладку "Трассировка", а затем выберите поток, чтобы просмотреть подробные сведения о потоке в правой области. Разверните поток и выберите любой шаг, чтобы просмотреть подробные сведения для этого шага.