Урок 04

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() для параллельности
  • Агенты не зависят друг от друга
  • Суммирующий агент после всех
  • Быстрее последовательного