Акты Становления

007: Агент/Ввод

Контекстное сообщение, содержащее schema и данные input. Оно определяет ожидаемые входные данные для Запроса, превращая его в многократно используемый, подобный функции компонент.

Этот документ описывает Входное сообщение — особый тип контекстного сообщения, которое предоставляет структурированный промпт для Запроса. Формально определяя данные, которые Запрос использует для формирования своего solution, сообщение Input превращает разовый вызов в многократно используемый компонент, подобный функции. Этот паттерн — ключ к превращению простого Запроса в исполняемый Инструмент, который могут использовать агенты.

На заметку

Сохранённый, воспроизводимый Запрос — это то, что система называет Идеей. Когда к его контексту добавляется сообщение Input, он становится исполняемым Идеатором

Тип сообщения Input

Сообщение Input — это особый тип контекстного сообщения, предназначенный для формального объявления данных, которые принимает Запрос. Это механизм, который фиксирует структурированные входные данные, используемые для получения определённого solution, обеспечивая полную, воспроизводимую запись вычислительного процесса.

Сообщение Input содержит два ключевых свойства:

  1. schema: Объект JSON Schema, который определяет структуру, типы и ограничения данных, ожидаемых Запросом.
  2. 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 — это больше, чем просто техническая деталь; это ключ, который открывает полноценный интерактивный опыт для любого Запроса. Поскольку Запрос определяется структурированными схемами как для ввода, так и для вывода, для него можно автоматически сгенерировать пользовательский интерфейс.

Этот интерфейс состоит из двух частей:

  1. Форма: schema в сообщении Input предоставляет чертеж для формы ввода. Система может прочитать его, чтобы мгновенно отобразить интерактивные элементы управления с метками и проверкой данных.
  2. Результат: Основная schema Запроса предоставляет чертеж для вывода. После завершения Запроса его solution может быть представлен в наглядном структурированном виде, а не просто как сырые данные.

Это превращает любой Запрос в интерактивную песочницу. Пользователь может экспериментировать с различными входными данными в форме и сразу видеть, как они формируют структурированный результат. Это делает создание и использование мощных инструментов доступнее, превращая абстрактные вычислительные процессы в осязаемые интерактивные приложения, которые может исследовать каждый.

Композиция с другими протоколами

Протокол Input — это специализация паттерна Data, но он также комбинируется с несколькими другими протоколами для создания сложных динамических рабочих процессов.

От статических вводов к динамическим связям

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

Следующий документ, 008: Агент/Переменные, описывает протокол, который создаёт эти динамические связи, позволяя данным декларативно передаваться от Input к Инструментам.