Background, Dynamic Subagents

У сабагентов есть и другое классное применение - они могут работать параллельно с основным диалогом. Т.е. основной агент поставил задачу, сабагент ее принял, а диалог пошел дальше. Когда задача завершится - сабагент сам принесет результат и подложит его в основной контекст.

Что-то вроде такого:

| assistant | | | user | | | // кладем результат в контекст | | subagent result | assistant | | | tool result | | assistant | tool call | | user | tool result | | | tool call | | | tool result | | // отпускаем основной контекст | | subagent called | tool call | | // делегируем задачу | | subagent call | user | | user | | | subagent tools | memory tools | | claw prompt | subagent prompt |

В комбинации с тем, что LLM может вызывать сразу несколько инструментов - один запрос может стартануть сразу несколько параллельных подзадач, которые быстро сожрут все ваши токены.

Стоит упомянуть, что тут существует 2 паттерна: 1. сабагент сам приносит результат по готовности 2. сабагент отдает TaskId, а основной агент спрашивает о готовности по этому ID

Какой вариант использовать - зависит от задачи. Поиграйтесь

Ну и последнее, о чем хочется сказать - динамические сабагенты. Это когда модель сама понимает, что вот эту задачу нужно делегировать кому-то, сама генерирует этого "кого-то" и отправляет делать задачу.

Как вы понимаете, это тоже инструмент. В AG2 у нас для этого есть специальный формат спеки, которую мы умеем превращать в агента. Т.е. инструмент имеет 2 аргумента:

  • JSON с описанием желаемого агента
  • Промпт, с которым его запустить

Таким образом, основной агент превращается в волшебника, который умеет самостоятельно спавнить произвольных сабагентов. Rocket science, не иначе

#Agents #Subagents