Parallelization: параллельные агенты
Независимые шаги выполняются одновременно.
Пример: код-ревью
use Illuminate\Support\Facades\Concurrency;
[$security, $performance, $maintainability] = Concurrency::run([
fn () => (new SecurityReviewAgent)->prompt($code),
fn () => (new PerformanceReviewAgent)->prompt($code),
fn () => (new MaintainabilityReviewAgent)->prompt($code),
]);
$summary = agent(instructions: 'Technical lead synthesising code reviews.')
->prompt("Summarise:\n" . json_encode([
['type' => 'security', 'review' => $security->text],
['type' => 'performance', 'review' => $performance->text],
['type' => 'maintainability', 'review' => $maintainability->text],
]))->text;
Три агента работают параллельно. Четвёртый ждёт всех и суммирует.
Concurrency::run()
Аналог Promise.all() в PHP.
$results = Concurrency::run([
fn () => $agent1->prompt($input),
fn () => $agent2->prompt($input),
fn () => $agent3->prompt($input),
]);
Когда использовать
- Несколько независимых анализов
- Разные специалисты на одном входе
- Ускорение за счёт параллельности
Итоги
Concurrency::run()для параллельности- Агенты не зависят друг от друга
- Суммирующий агент после всех
- Быстрее последовательного