Saltar al contenido principal

Ejecución paralela con Concurrency de Laravel

En modo stdio

Levantar un proceso por cada tarea es un desperdicio, pero solo funciona con esta forma. Como Concurrency serializa de forma compleja internamente, devolvemos solo la cadena de content() en lugar de la clase SessionEvent.
use Revolution\Copilot\Facades\Copilot;
use Illuminate\Support\Facades\Concurrency;

$prompt = 'Tell me something about Copilot.';

[$gpt5_response, $sonnet_response] = Concurrency::run([
    fn () => Copilot::run($prompt, config: ['model' => 'gpt-5.2'])->content(),
    fn () => Copilot::run($prompt, config: ['model' => 'claude-sonnet-4.5'])->content(),
]);

echo 'GPT-5 Response: '.$gpt5_response;
echo 'Claude Sonnet Response: '.$sonnet_response;

En modo TCP

Al no arrancar procesos parece que debería ser más rápido, pero en la práctica apenas cambia. Con el driver Process, en ambos casos suele haber timeout a los 60 segundos. Con el driver fork (exclusivo para entornos CLI), solo una tuvo éxito. No fallan todas por una excepción. Solo fallaba gpt-5, y al cambiar a gpt-5.2 funcionaron las dos. Puede que fuera simplemente un problema del tiempo de respuesta del modelo. Concurrency existe como funcionalidad, pero no está claro si es realmente utilizable. Para procesos que llevan tiempo, lo básico es usar colas.
Consulta la información más reciente en el repositorio de GitHub.
Última modificación el 13 de julio de 2026