Комментарии 2
Спасибо за статью!
Было бы полезно понять в статье какую задачу вы решаете.
Как я понял основная проблема, что у вас есть несколько тулзов, которые должны быть вызваны последовательно (или в порядке DAGа), и в случае стандартного агента между вызовами этих тулзов была бы вызвана LLM.
Так же из статьи не понятно преимущества разделения на Planner и Joiner, если Joiner потом всё равно перепланирует, то есть как будто совмещает обязанности Planner
Спасибо, проблем несколько
если делать 1 агента, это зачастую реализуеться через 1 промпт, агент может игнорировать и забывать какие-то инструкции, разделение помогает с этим, планер и джоинер отвечают за вызов тулзов и понимание намерений пользователя, в компоузере описано какие данные как отображать, по аналогии можно это воспринимать как фронтенд и бекенд
Если запрос пользователя требует, например, 10 вызовов тулзов, то это последовательно 10 вызовов тулзов и 10 вызовов ллм для планирования последующей тулзы, зачастую ллм просто ленится и не делает всю цепочку вызовов, планировщик позволяет сделать это за 1 запрос в ллм. Последовательность вызова тулзов зависит от задачи, некоторые можно делать параллельно, другие должны быть связаны с другими тулзами
у солвера 2 задачи, первая - редирект на планировщик если что-то пошло не так во время исполнения задачи и второе - по модели швейцарского сыра удостовериться что все условия соблюдены, солвер и планер имеют одинаковые части промпта, например, как интерпретировать запросы пользователя (последняя неделя это 7 дней включая сегодня или полностью завершенная неделя?), запреты на упоминание конкурентов, инструкции как использовать или не использовать комбинации тулзов, если планировщик проигнорировал какую-то инструкцию или не вызвал какую-то тулзу правильно, солвер должен это пресечь.
На практике затюнить солвер было самой сложной задачей поскольку он содержит больше всего контекста - определение тулзов, ответы тулзов и системный промпт, компоузер самый простой поскольку он получает только историю чата, данные от тулзов и шаблоны / интерпретации.

Почему ReAct-агенты ломаются в продакшене и чем их заменить