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

011: Агент/Выражения

Синтаксис для объединения нескольких путей в Ссылке на переменную или Пути вывода для создания условных или параллельных потоков данных.

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

Выражения используют || (ИЛИ) для условной логики и && (И) для параллельных операций. Их можно применять двумя основными способами: для сбора входных данных для инструмента и для распределения выходных данных инструмента.

Входные выражения (Многие-к-одному)

†state.userInput

processData(data)

†state.default

При использовании во входных параметрах Вызова инструмента, выражения позволяют одному параметру получать данные из нескольких источников. Это создает поток данных «многие-к-одному» (M:1), позволяя использовать гибкие шаблоны агрегации данных, такие как резервные варианты и слияния.

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

Логика резервирования с ||

При использовании в Ссылке на переменную, || работает как резервный вариант. Выражение †state.userInput || †state.default указывает движку сначала искать значение в state.userInput. Если значение не найдено, он будет использовать значение из state.default. Это полезно для предоставления значений по умолчанию или корректной обработки необязательных входных данных.

{
  "_tool": "processData",
  "data": "†input.optionalData || †state.defaultData"
}

Параллельная зависимость с &&

При использовании в Ссылке на переменную, && действует как шлюз, гарантируя, что все указанные пути данных существуют в контексте, прежде чем продолжить выполнение. Если все пути присутствуют, выражение разрешается в значение последнего пути в последовательности. Это мощный способ обеспечить соблюдение зависимостей, гарантируя, что инструмент запустится только после того, как все необходимые ему данные станут доступны.

// Этот инструмент запустится, только если загружены и профиль пользователя, и его разрешения.
// Параметр `permissions` получит значение `†state.permissions`.
{
  "_tool": "renderDashboard",
  "permissions": "†state.userProfile && †state.permissions"
}

Выходные выражения (Один-ко-многим)

verifyUser()

†data.user.verified

†data.user.failed

При использовании в Пути вывода, выражения позволяют записывать результат одного инструмента в несколько мест назначения. Это создает поток данных «один-ко-многим» (1:M), позволяя использовать такие шаблоны, как условное ветвление и рассылка (fan-out).

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

Альтернативные пути (ветвление) с ||

Использование || в Пути вывода позволяет инструменту объявлять свои возможные результаты. Внутренняя логика инструмента затем определяет, в какой путь записать результат. Это полезно для создания условной логики, где инструмент может завершиться успешно или с ошибкой.

// Если `verifyUser` завершается успешно, результат записывается в `data.user.verified`;
// в противном случае, он записывается в `data.user.failed`
{
  "_tool": "verifyUser",
  "userId": "perfect-stranger",
  "_outputPath": "†data.user.verified || †data.user.failed"
}

Параллельные пути (рассылка) с &&

Использование && в Пути вывода указывает движку выполнить рассылку (fan-out), записывая один и тот же результат в несколько путей одновременно. Это полезно для трансляции результата в несколько частей состояния или для целей аудита.

// Одновременная запись в объекты `user` и `audit` в состоянии.
{
  "_tool": "generateSummary",
  "text": "Long body of text here...",
  "_outputPath": "†data.user.summary && †data.audit.summary"
}

От выражений к стратегиям

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

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