跳转到主要内容

使用 Laravel Concurrency 进行并发执行

stdio 模式的情况

虽然每一次都启动进程有些浪费,但只能用这种写法运行。由于 Concurrency 内部在做复杂的序列化,因此不返回 SessionEvent 类,而只返回 content() 的字符串。
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;

TCP 模式的情况

因为没有进程启动,所以看起来会快一些,但实际上区别不大。 在 Process 驱动下,两者都经常在 60 秒时超时。在仅限 CLI 环境的 fork 驱动下,只有一边成功。异常并不会导致全部失败。当只有 gpt-5 失败时,把它换成 gpt-5.2 后两个都成功了。也许仅仅是模型响应时间的问题。 Concurrency 作为功能是存在的,但是否实用尚不清楚。耗时的处理基本上还是使用队列。
最新信息请参考 GitHub 仓库
最后修改于 2026年7月13日