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

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

Это особый вид Сообщения с Данными (помеченного как kind: "input"), которое содержит «схему» (schema) и сами «входные данные» (input). Оно описывает, какую информацию ожидает получить Запрос. Это превращает разовую команду в многоразовый инструмент, похожий на функцию в программировании.

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

На заметку

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

Тип сообщения Ввод

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

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

  1. schema: Объект JSON Schema, который определяет структуру, типы и правила для данных, которые ожидает Запрос. По сути, это чертёж входных данных.
  2. input: Конкретный объект с данными, который соответствует схеме (schema) и представляет реальные значения, использованные для конкретного запуска.

Благодаря такому структурированному определению входов, любой Запрос может описывать не только свой результат (solution и его schema), но и то, что ему требуется для работы. Это ключевой механизм для создания воспроизводимых запросов.

Пример: Использование Ввода для структурированной инструкции

Как выглядит код

Agent.Request(
  config,
  schema, // Схема для результата
  [
    // Контекст
    {
      type: 'input',
      input: {
        userName: 'Женя',
        topic: 'погода',
      },
      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": "Женя",
        "topic": "погода"
      }`
  }
}

Путь к удобству: Интерфейс по умолчанию

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

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

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

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

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

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

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

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

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