Структурированный вывод
Во многих случаях использования, таких как чат-боты, от моделей ожидается ответ в естественном языке. Однако есть ситуации, когда ответы в естественной речи не идеально подходят. Например, если нужно взять вывод модели, передать его в качестве тела HTTP-запроса или сохранить в базу данных, важно, чтобы результат соответствовал заранее определенной схеме. Это приводит к концепции структурированного вывода, когда модели направляют генерировать ответы в конкретном, структурированном формате. В этом учебном пособии мы рассмотрим, как получить структурированный вывод от LLM и передать его в качестве тела HTTP-запроса.
Предварительные условия
Для HTTP-запросов мы будем использовать тот же сервер управления событиями.
Вот руководство по созданию структурированного потока в формате, соответствующем вашей документации "Агент как инструмент", с пошаговыми разъяснениями и запасными изображениями.
Обзор
- Получение пользовательского ввода через начальный узел.
- Использование LLM для генерации структурированного JSON-массива.
- Проход по каждому элементу массива.
- Отправка каждого элемента на внешний endpoint через HTTP.
Шаг 1: Настройка начального узла
Добавьте начальный узел на вашу схему.
Основные параметры ввода:
- Тип ввода::
chatInput(по умолчанию): Поток начинается с сообщения чата от пользователя..formInput: Поток начинается с формы (если нужно собрать структурированные данные от пользователя).
- Эфемерная память:
- (Опционально) Если включена, история чата не сохраняется между запусками..
- Состояние потока:
- (Опционально) Предзаполнение переменных состояния.
- Пример:
[ { "key": "answers", "value": "" } ]
- Сохранение состояния:
- (Опционально) При включении состояние сохраняется в течение сессии.
Шаг 2: Генерация структурированного вывода с помощью LLM
Добавьте узел LLM и соедините его с начальным узлом.
Цель: использовать языковую модель для анализа ввода и создания структурированного JSON-массива.
Ключевые параметры:
- JSON Структурированный вывод:
- Ключ:
answers - Тип:
JSON Array - JSON Schema:
{ "name": { "type": "string", "required": true, "description": "Name of the event" }, "date": { "type": "string", "required": true, "description": "Date of the event" }, "location": { "type": "string", "required": true, "description": "Location of the event" } } - Описание: "answer to user query"
- Ключ:
- Обновление состояния потока:
- Обновляет переменные состояния с созданным JSON-выводом.
- Пример:
[ { "key": "answers", "value": "{{ output.answers }}" } ]
Шаг 3: Цикл по массиву JSON
Добавьте узел итерации и соедините его с выводом узла LLM.
Цель: пройтись по каждому элементу сгенерированного JSON-массива.
Ключевые параметры:
- Входной массив:
- Установите на значение переменной answers из сохраненного состояния:
{{ $flow.state.answers }}- Это обеспечит перебор каждого события в массиве answers.
Шаг 4: Отправка каждого элемента через HTTP
Внутри цикла добавьте HTTP-узел.
Цель: для каждого элемента массива отправлять POST-запрос на указанный эндпоинт, например, http://localhost:5566/events.
Ключевые параметры:
- Метод:
- POST (по умолчанию для этой задачи).
- URL:
- Эндпоинт для отправки данных.
- Headers(Заголовки):
- (Опционально) любые необходимые HTTP-заголовки (например, авторизация).
- Параметры запроса:
- (Опционально) любые дополнительные параметры.
- Тип тела:
json(по умолчанию): Отправляет тело как JSON.
- Тело:
- Данные для отправки в теле запроса.
- Установить текущий элемент в цикле:
{{ $iteration }}
- Тип ответа:
json(по умолчанию): Ожидается ответ в формате JSON.
Примеры взаимодействий
Ввод пользователя:
create 2 events:
1. JS Conference on next Sat in Netherlands
2. GenAI meetup, Sept 19, in Dublin
Поток:
- Начальный узел получает входные данные.
- Узел LLM генерирует JSON-массив событий.
- Узел цикла проходит по каждому событию.
- Узел HTTP создает каждое событие через API.
Полная структура потока
Лучшие практики
Рекомендации по проектированию:
- Четкая схема вывода:: определите ожидаемую структуру вывода LLM, чтобы обеспечить надежную последующую обработку.
Распространенные варианты использования:
- Обработка событий: Сбор и отправка данных о событиях в календарь или систему управления событиями..
- Массовый ввод данных: Создание и отправка нескольких записей в базу данных или API.
- Автоматические уведомления: Отправляйте персонализированные сообщения или оповещения для каждого элемента в списке.
Агент SQL
Этот учебник проведет вас по созданию интеллектуального SQL-агента, который умеет взаимодействовать с базой данных, генерировать SQL-запросы, проверять их, выполнять и самостоятельно исправлять ошибки при необходимости.
Руководитель и рабочие
Шаблон «Супервизор-работник» — это мощная модель рабочего процесса, в которой агент-супервайзер координирует работу нескольких специализированных агентов-исполнителей для выполнения сложных задач. Этот шаблон обеспечивает более эффективное делегирование задач, специализированную экспертизу и итеративное совершенствование решений.

