Anthropic 发表过一篇非常受欢迎的博客,构建有效智能体,这篇研究文章描述了构建生产级 AI 系统的最实用模式。这些模式是实用的、经过验证的,并且被广泛采用。

好消息是:今天,您就可以在 Laravel 中使用极少的代码,通过 Laravel AI SDK 构建所有这些模式。

本文中的所有示例都只使用了 agent() 辅助函数,一行代码就能启动一个智能体。单凭这一点就足以展示这些模式的强大之处。但 Laravel AI SDK 的功能远不止于此。您可以引入自己专用的智能体类、附加工具、配置模型、添加中间件,并根据生产需求构建任意复杂的工作流。

通过 Composer 安装 Laravel AI SDK:composer require laravel/ai

什么是多智能体工作流?

单个 LLM 调用对于简单任务来说效果很好。但对于复杂工作,比如审查代码、生成精美的邮件或处理支持工单,您可能希望多个智能体协同工作,每个智能体专注于特定任务。

多智能体工作流让您可以做到以下几点:

  • 将任务分解为有序的步骤。
  • 并行运行独立的步骤。
  • 将输入路由给合适的专家。
  • 在循环中评估和优化输出。

五种模式(以及如何与 Laravel AI SDK 结合使用)

1. 提示词链

一个智能体的输出成为下一个智能体的输入。

可以把它想象成一条装配线。每个步骤专精于一件事,然后将结果传递给下一步。这是最简单、最常见的模式。

示例:冷邮件生成器

让我们设想一个简单的工作流:起草 → 审查质量 → 如有需要则改进。

使用 Laravel AI SDK,这三个智能体通过一个 Pipeline 进行编排。每个步骤接收完整的负载,并在其中添加内容后传递给下一步:

$result = Pipeline::send(['company' => $company, 'role' => $role, 'email' => '', 'review' => []])
    ->through([
        fn ($payload, $next) => $next([...$payload, 'email'  => $this->draftAgent($payload)]),
        fn ($payload, $next) => $next([...$payload, 'review' => $this->reviewAgent($payload)]),
        fn ($payload, $next) => $next($this->improveAgent($payload)),
    ])
    ->thenReturn();

每个管道步骤都由一个专用的智能体支持:

use function Laravel\Ai\{agent};

 // 智能体 1:起草
 private function draftAgent(array $payload): string
 {
     return agent(instructions: '专业的 B2B 文案。撰写一封简洁、个性化的冷邮件。')
        ->prompt("为 {$payload['company']} 的 {$payload['role']} 起草一封冷邮件。")
        ->text;
 }

// 智能体 2:审查(结构化输出)
private function reviewAgent(array $payload): mixed
{
    return agent(
        instructions: '冷邮件质量分析师。请严格评价。',
        schema: fn (JsonSchema $schema) => [
            'hasPersonalisation'    => $schema->boolean()->required(),
            'toneScore'             => $schema->integer()->min(1)->max(10)->required(),
            'callToActionStrength'  => $schema->integer()->min(1)->max(10)->required(),
        ],
    )->prompt($payload['email']);
}

// 智能体 3:仅在评分不足时改进
private function improveAgent(array $payload): array
{
    $review = $payload['review'];
    if ($review['hasPersonalisation'] && $review['toneScore'] >= 7 && $review['callToActionStrength'] >= 7) {
        return $payload;
    }

    return [
        ...$payload,
        'email' => agent(instructions: '专业的 B2B 文案。')
            ->prompt("重写以下内容,要求更好的个性化和更强的行动号召力:\n{$payload['email']}")
            ->text,
    ];
}

何时使用: 这适用于具有明确序列的任务:生成、验证、优化、格式化。每个步骤应专精于一项工作。

2. 路由

先对输入进行分类,然后将其发送给正确的智能体。

不是让一个智能体处理所有事情,而是一个分类器检查输入,然后选择最合适的专家。不同类型的查询得到不同的指令。不同复杂程度的查询使用不同的模型。

示例:客户支持

工作流:分类 → 选择正确的指令 → 根据复杂程度选择廉价或强大的模型。

use function Laravel\Ai\{agent};

 $classification = agent(
     instructions: '对客户支持查询进行分类。',
     schema: fn (JsonSchema $schema) => [
         'type'       => $schema->string()->required(), // general | refund | technical
         'complexity' => $schema->string()->required(), // simple | complex
     ],
 )->prompt("分类查询:{$query}");

$instructions = match ($classification['type']) {
    'refund'    => '专注于处理退款请求的客服智能体...',
    'technical' => '具备深厚产品知识的技术支持专家...',
    default     => '友好的客服智能体...',
};

$agent = match ($classification['complexity']) {
    'complex' => new AdvancedSupportAgent($instructions),
    default   => new StandardSupportAgent($instructions), // #[UseCheapestModel]
};

return $agent->prompt($query)->text;

可以将 #[UseCheapestModel] 属性添加到 StandardSupportAgent 中,以使简单查询运行得更快、更便宜。复杂查询则交给完整模型处理。分类器决定使用哪种。

何时使用: 当输入在类型或复杂程度上差异很大,并且单个提示词无法很好地处理所有情况时,此模式非常理想。

3. 并行化

同时运行独立的智能体。

当各个步骤互不依赖时,就没有必要逐一运行。Laravel 的 Concurrency::run() 相当于 PHP 版的 Promise.all()。您可以同时启动所有智能体,并在它们完成时收集结果。

示例:代码审查

工作流:三个专业智能体同时审查代码。第四个智能体综合它们的发现。

use function Laravel\Ai\{agent};

 [$security, $performance, $maintainability] = Concurrency::run([
     fn () => (new SecurityReviewAgent)->prompt($code),
     fn () => (new PerformanceReviewAgent)->prompt($code),
     fn () => (new MaintainabilityReviewAgent)->prompt($code),
 ]);

$summary = agent(instructions: '综合代码审查的技术负责人。')
    ->prompt("总结以下审查意见:\n" . json_encode([
        ['type' => 'security',        'review' => $security->text],
        ['type' => 'performance',     'review' => $performance->text],
        ['type' => 'maintainability', 'review' => $maintainability->text],
    ]))->text;

三个智能体并行审查。总结智能体只有在三者都完成后才运行,这样它就能掌握全局情况。

何时使用: 需要对同一输入进行多方面的独立分析,或者需要多个专家各自审视同一个问题时。

4. 协调者-工作者

一个智能体进行协调;工作者智能体负责执行。

协调者理解整个任务并决定需要做什么。工作者是专家——它们只处理自己特定的工作。协调者会按合理的顺序将它们作为工具自动调用。

示例:功能实现

协调者智能体收到一个功能请求,然后自动调用工作者智能体来创建、修改或删除文件。

use function Laravel\Ai\{agent};

 $response = agent(
     instructions: '你是一名资深软件架构师。分析功能请求,并使用可用的工具来实现每个所需的文件更改。',
     tools: [
         new CreateFileAgentTool,
         new ModifyFileAgentTool,
         new DeleteFileAgentTool,
     ],
 )->prompt("实现此功能:{$featureRequest}");

每个工具本身也是一个 agent() ——一个拥有自身专注指令的子智能体:

use function Laravel\Ai\{agent};

 class CreateFileAgentTool implements Tool
 {
     public function description(): Stringable|string
     {
         return '创建一个新文件,并遵循最佳实践添加相应的代码。';
     }

    public function schema(JsonSchema $schema): array
    {
        return [
            'filePath' => $schema->string()->required(),
            'purpose'  => $schema->string()->required(),
        ];
    }

    public function handle(Request $request): Stringable|string
    {
        return agent(
            instructions: '你是实现新文件、遵循最佳实践的专家。',
        )->prompt("创建 {$request['filePath']} 以支持:{$request['purpose']}")->text;
    }
}

您不需要硬编码要更改哪些文件或按什么顺序处理它们。协调者会从功能请求中弄清楚这些。

何时使用: 适用于那些所需步骤无法预先确定的复杂任务——模型需要动态规划和委派。

5. 评估器-优化器

这个模式是:生成 → 评估 → 改进,在循环中进行。

有时,一次处理是不够的。评估器-优化器模式会通过质量检查来运行输出,并持续优化,直到满足标准或达到迭代限制。

示例:内容撰写器

工作流:写一段文字 → 给它打分 → 如果未通过则重写 → 最多重复三次。

use function Laravel\Ai\{agent};

$content = agent(instructions: '你是一位文笔清晰简洁的作家。')
    ->prompt("写一段关于以下主题的简短文字:{$topic}")->text;

$iterations = 0;

while ($iterations < 3) {
    $evaluation = agent(
        instructions: '你是一名写作质量评估员。',
        schema: fn (JsonSchema $schema) => [
            'score'    => $schema->integer()->min(1)->max(10)->required(),
            'approved' => $schema->boolean()->required(),
            'issues'   => $schema->array()->items($schema->string())->required(),
        ],
    )->prompt("评价这段文字(如果评分 >= 8 则通过):{$content}");

    if ($evaluation['approved']) {
        break;
    }

    $issues = implode(', ', $evaluation['issues']);
    $content = agent(instructions: '你是一位文笔清晰简洁的作家。')
        ->prompt("重写以下内容,解决这些问题:{$issues} 原文:{$content}")->text;

    $iterations++;
}

评估器使用结构化输出来返回分数、批准标志以及具体问题的列表。仅当 approvedfalse 时,作家才重试,并且它确切地知道需要修复什么。

何时使用: 当您有明确的质检标准,并且输出可以从迭代优化中受益时:翻译、写作、代码生成。

Laravel AI SDK 简化了多智能体工作

Anthropic 的研究之所以确定这些模式,是因为它们在生产中始终有效。引人注目的是,在 Laravel 中使用 Laravel AI SDK 实现这些模式所需的代码量之少。

模式 适用场景
提示词链 步骤顺序固定
路由 输入的类型或复杂度多样
并行化 独立任务可同时运行
协调者-工作者 需要动态规划和委派
评估器-优化器 需要通过迭代来达到质量标准

从简单的开始。单个 agent() 调用就能处理大多数任务。只有当任务确实需要这些模式时,才去使用它们。当您确实需要时,您会发现它们在 Laravel 中实现起来非常简单直观。

您可以通过 Composer 安装 Laravel AI SDK。只需运行 composer require laravel/ai

要了解更多关于其他 Laravel AI 工具的信息,如 Laravel Boost 和 MCP,请查看这篇博客文章


资源速览