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++;
}
评估器使用结构化输出来返回分数、批准标志以及具体问题的列表。仅当 approved 为 false 时,作家才重试,并且它确切地知道需要修复什么。
✅ 何时使用: 当您有明确的质检标准,并且输出可以从迭代优化中受益时:翻译、写作、代码生成。
Laravel AI SDK 简化了多智能体工作
Anthropic 的研究之所以确定这些模式,是因为它们在生产中始终有效。引人注目的是,在 Laravel 中使用 Laravel AI SDK 实现这些模式所需的代码量之少。
| 模式 | 适用场景 |
|---|---|
| 提示词链 | 步骤顺序固定 |
| 路由 | 输入的类型或复杂度多样 |
| 并行化 | 独立任务可同时运行 |
| 协调者-工作者 | 需要动态规划和委派 |
| 评估器-优化器 | 需要通过迭代来达到质量标准 |
从简单的开始。单个 agent() 调用就能处理大多数任务。只有当任务确实需要这些模式时,才去使用它们。当您确实需要时,您会发现它们在 Laravel 中实现起来非常简单直观。
您可以通过 Composer 安装 Laravel AI SDK。只需运行 composer require laravel/ai。
要了解更多关于其他 Laravel AI 工具的信息,如 Laravel Boost 和 MCP,请查看这篇博客文章。