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

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

Это специальное сообщение, которое содержит схему (правила) и входные данные (информацию). Оно объясняет, какая информация нужна для выполнения Запроса, и превращает его в многоразовый инструмент, похожий на функцию в программировании.

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

На заметку

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

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

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

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

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

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

Взаимодействие с другими протоколами

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

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

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

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