007: Агент/Ввод
- Требуется: 001: Агент/Запрос
- Открывает возможности для: 002: Агент/Инструмент
Контекстное сообщение, содержащее schema
и данные input
. Оно определяет ожидаемые входные данные для Запроса, превращая его в многократно используемый, подобный функции компонент.
Этот документ описывает Входное сообщение — особый тип контекстного сообщения, которое предоставляет структурированный промпт для Запроса. Формально определяя данные, которые Запрос использует для формирования своего solution
, сообщение Input превращает разовый вызов в многократно используемый компонент, подобный функции. Этот паттерн — ключ к превращению простого Запроса в исполняемый Инструмент, который могут использовать агенты.
Тип сообщения Input
Сообщение Input — это особый тип контекстного сообщения, предназначенный для формального объявления данных, которые принимает Запрос. Это механизм, который фиксирует структурированные входные данные, используемые для получения определённого solution
, обеспечивая полную, воспроизводимую запись вычислительного процесса.
Сообщение Input содержит два ключевых свойства:
schema
: Объект JSON Schema, который определяет структуру, типы и ограничения данных, ожидаемыхЗапросом
.input
: Конкретный объект данных, который соответствуетschema
и представляет фактические значения, использованные для конкретного выполнения.
Определяя свои входные данные таким структурированным образом, любой Запрос может стать самоописываемым не только в части вывода (solution
и schema
), но и в части того, что ему требуется для генерации. Это основной механизм для создания воспроизводимого запроса.
Пример: использование Input для структурированного промпта
Как выглядит код
Agent.Request(
config,
schema, // Схема вывода
[
// Контекст
{
type: 'input',
input: {
userName: 'Jane',
topic: 'the weather',
},
schema: {
type: 'object',
properties: {
userName: {
type: 'string',
description: 'Автор статьи',
},
topic: {
type: 'string',
description: 'Тема, о которой нужно написать статью',
},
},
},
},
]
);
Что видит LLM
{
role: 'user',
content: {
type: 'text',
text:
`## Данные: ¶input
Входные данные ДОЛЖНЫ рассматриваться как структурированный промпт
Схема: {
"type": "object",
"properties": {
userName: {
type: "string",
description: "Автор статьи"
},
topic: {
type: "string",
description: "Тема, о которой нужно написать статью"
},
}
}
{
"userName": "Jane",
"topic": "the weather"
}`
}
}
Путь к удобству: интерфейс по умолчанию
Сообщение Input
— это больше, чем просто техническая деталь; это ключ, который открывает полноценный интерактивный опыт для любого Запроса. Поскольку Запрос определяется структурированными схемами как для ввода, так и для вывода, для него можно автоматически сгенерировать пользовательский интерфейс.
Этот интерфейс состоит из двух частей:
- Форма:
schema
в сообщении Input предоставляет чертеж для формы ввода. Система может прочитать его, чтобы мгновенно отобразить интерактивные элементы управления с метками и проверкой данных. - Результат: Основная
schema
Запроса предоставляет чертеж для вывода. После завершения Запроса егоsolution
может быть представлен в наглядном структурированном виде, а не просто как сырые данные.
Это превращает любой Запрос в интерактивную песочницу. Пользователь может экспериментировать с различными входными данными в форме и сразу видеть, как они формируют структурированный результат. Это делает создание и использование мощных инструментов доступнее, превращая абстрактные вычислительные процессы в осязаемые интерактивные приложения, которые может исследовать каждый.
Композиция с другими протоколами
Протокол Input — это специализация паттерна Data, но он также комбинируется с несколькими другими протоколами для создания сложных динамических рабочих процессов.
-
Инструмент: Сообщение Input — это ключ к превращению Запроса в многократно используемый Инструмент.
schema
из сообщения Input определяет параметры Инструмента (что ему нужно для запуска), а основнаяschema
Запроса определяет_output
Инструмента (что он производит). -
План: Сообщение Plan содержит граф Вызовов Инструментов. Input предоставляет начальные параметры, которые передаются первому Вызову Инструмента в графе, запуская весь процесс.
-
Экземплирование: При использовании с протоколом Экземплирования, сообщения Input могут предоставлять данные для запросов с несколькими экземплярами, либо как глобальную конфигурацию для всех экземпляров, либо как целевой ввод для конкретного экземпляра.
-
Переменные: Сообщение Input предоставляет начальные статические данные, которые запускают процесс. Однако Переменные — это механизм, который позволяет использовать эти данные динамически. Вызовы Инструментов используют Ссылки на переменные, чтобы считывать значения из Input, связывая начальные параметры с исполняемыми шагами Плана.
От статических вводов к динамическим связям
Протокол Input предоставляет формальный механизм для подачи структурированных данных агенту, превращая простой Запрос в многократно используемый компонент, подобный функции. Однако это определяет лишь начальную точку процесса. Для создания сложных рабочих процессов эти статические входные данные необходимо связать с инструментами, которые будут с ними работать.
Следующий документ, 008: Агент/Переменные, описывает протокол, который создаёт эти динамические связи, позволяя данным декларативно передаваться от Input к Инструментам.