Laravel 创建了三个 AI 包:Laravel AI SDKLaravel BoostLaravel MCP。每一个解决不同的问题,如果你想弄清楚需要哪一个(或者是否需要全部三个),我们将在本文中为你解析。

一句话总结:

  • AI SDK 帮助你为应用构建 AI 功能。
  • Boost 帮助 AI 智能体为你编写更好的 Laravel 代码。
  • MCP 帮助外部 AI 工具与你的应用交互。

它们可以协同工作,但彼此不可替代。阅读完整的 AI SDK 文档Boost 文档MCP 文档 以了解更多内容。

这三个包共同解决的问题

AI 现在已是开发者构建和发布软件的一部分。然而,相关工具一直是零散的。开发者们自己编写围绕 OpenAI API 的封装,手动处理特定提供商的细微差别,并寄希望于他们的编码智能体能生成符合 Laravel 习惯用法的代码,而非通用 PHP。

Laravel 的 CEO Taylor OtwellAI SDK 的现场演示中这样描述其动机:

“在这一点上,它已成为开发者工作流中如此重要的一部分。感觉我们需要某种第一方意见来与 AI 提供商交互。就像我们对发送邮件或队列任务有自己的见解一样。”
“在目前这个阶段,它已经是开发流程中非常重要的一部分。感觉我们需要从内部获得一些关于与人工智能供应商进行交互的意见。就像我们对于发送电子邮件或队列任务有自己的看法一样。”

这三个包各自解决了这个问题的某一层面:一个用于构建 AI 功能,一个用于用 AI 编写代码,一个用于将你的应用暴露给 AI 客户端。

什么是 Laravel AI SDK?

Laravel AI SDK 是一个统一的 PHP 包,用于向你的 Laravel 应用添加 AI 能力。通过以下命令安装:

composer require laravel/ai

它为你提供了一个单一的 API 来处理文本生成、图像生成、音频、转录、嵌入等功能,支持 OpenAI、Anthropic、Google Gemini、Groq 和 xAI 等多个提供商。你可以在 config/ai.php 中配置一次默认提供商,SDK 会将请求路由到正确的端点,无需每次都指定模型字符串。

其核心概念是智能体。你可以通过 Artisan 命令生成一个:

php artisan make:agent SalesCoach

这会创建一个类,你可以在其中定义系统指令、工具、输出模式和对话上下文。你可以在应用的任何地方重用这个类:控制器内部、队列任务中、事件监听器里。逻辑只存在于一个地方。

class SalesCoach implements Agent
{
    use Promptable;

    public function instructions(): string
    {
        return '你是一位销售教练,分析通话记录并提供可操作的反馈。';
    }
}

调用智能体只需一行代码:

$response = (new SalesCoach)->prompt('分析这段销售通话记录...');

使用 AI SDK 可以构建什么

AI SDK 涵盖了你在生产级 Laravel 应用中可能需要的每一项主要 AI 能力:

  • 文本生成和结构化输出。 提示智能体返回自由格式的文本或符合定义模式的 JSON。当你需要解析响应并将其存入数据库时,结构化输出非常有用。
  • 流式传输。 使用 stream 方法通过服务器发送事件将响应推送到你的前端。Livewire 和 Inertia 都有钩子来消费流。
  • 后台处理。 调用 queue 而不是 prompt,将生成任务推送到 Laravel 队列任务中,然后在回调中处理结果。这可以防止用户等待缓慢的 AI 响应。
  • 图像生成。 使用 OpenAI、Gemini 或 xAI 根据文本提示生成图像。一行代码即可将生成的图像直接存储到任何 Laravel 文件系统磁盘。
  • 音频生成和转录。 使用 OpenAI 或 ElevenLabs 从文本生成语音。转录音频文件,支持说话人分离和时间戳分段。
  • 嵌入和语义搜索。 使用 Str::of('...')->toEmbeddings() 从文本生成向量嵌入,并将其存储在支持 pgvector 的 Postgres 数据库中。使用内置的 SimilaritySearch 工具让智能体查询这些嵌入。
  • 文件和向量存储。 将 PDF 和文档上传到 OpenAI 或 Gemini,以便在对话中进行语义文件搜索。
  • 自动故障转移。 传递一个提供商数组,如果你的主要提供商遇到速率限制或不可用,SDK 将回退到下一个。

Taylor 描述了为什么即使 AI 智能体在编写代码,SDK 的 API 设计仍然很重要:

“我认为重要的是,LLM 在那些易于解析和理解的事物上仍然表现良好。那些倾向于约定和结构的框架与 LLM 配合得很好。这些项目有着非常传统的结构,比如,有一个 models 目录,有一个 controllers 目录。这是非常容易发现的。”

这种可预测性使得开发者和 AI 都更容易阅读和理解 Laravel 项目中的 AI 代码。

何时使用 AI SDK

当你向应用添加 AI 功能时,请使用 Laravel AI SDK。如果你希望用户在你的产品内部与 AI 交互,无论是文本摘要、图像生成、语义搜索、语音转录还是聊天界面,AI SDK 都是合适的工具。

Laravel Nightwatch 使用 AI SDK 来总结生产环境中的异常。当错误发生时,用户点击一个按钮,就能获得 AI 生成的摘要,说明发生了什么、原因是什么以及接下来该检查什么。这是一个直接的文本生成任务:智能体读取异常数据并返回结构化响应。

一个更数据密集的例子是潜在客户资格认定。一个 LeadExtractor 智能体可以读取包含联系表单提交记录的 CSV,过滤垃圾信息,识别高价值潜在客户,并返回带有评分和提取需求的结构化 JSON。随后,将嵌入向量与每个合格潜在客户一起存储,使得后续的语义搜索成为可能:

$response = (new LeadExtractor)->prompt(
    "从这份 CSV 中提取并认定潜在客户:{$csv}"
);

foreach ($response['leads'] as $lead) {
    if ($lead['is_qualified']) {
        Lead::create([
            'name' => $lead['name'],
            'email' => $lead['email'],
            'embedding' => Str::of($lead['qualification_reason'])->toEmbeddings(),
        ]);
    }
}

什么是 Laravel Boost?

Laravel Boost 是一个开发者工具,而非应用功能。它默认包含在新的 Laravel 项目中,也可以作为开发依赖添加到现有的兼容应用中。

composer require laravel/boost --dev
php artisan boost:install

Boost 为像 Claude Code 和 Cursor 这样的 AI 编码智能体提供了两样编写优秀 Laravel 代码所需的东西:关于你项目的上下文和关于 Laravel 生态系统的知识。它通过两种机制提供这些:AI 指南和智能体技能。

AI 指南

指南是组合式的指令文件,在编码会话开始时预先加载。它们告诉智能体遵循 Laravel 约定,为已安装的软件包版本使用正确的 API,并在适当的时候编写测试。Boost 附带了针对 Laravel 框架、Livewire、Inertia、Pest、Tailwind CSS、Flux UI 等的指南。如果你维护一个第三方包,你可以将自己的指南与包一起发布,这样 Boost 会自动获取它们。

智能体技能

技能是一种较新的、更具针对性的方法。指南是宽泛的且预先加载,而技能则是聚焦的知识模块,智能体在处理特定任务时会按需激活。

Boost 会根据在你的 composer.json 中检测到的内容自动安装技能。如果你的项目包含 livewire/livewire,则会安装 livewire-development 技能。你也可以为你自己应用的领域逻辑编写自定义技能:

.ai/skills/creating-invoices/SKILL.md

Laravel 技能目录 是一个开放的、由社区构建的可复用技能集合。通过一条命令即可安装任何技能:

php artisan boost:add-skill <owner/repo>

文档 API

Boost 将智能体连接到一个托管的文档 API,该 API 包含超过 17,000 份带版本控制的 Laravel 生态系统文档,并通过语义搜索进行索引。该 API 涵盖 Laravel 框架、Livewire、Inertia、Filament、Nova、Pest 等,并根据你项目使用的主要版本进行过滤。

Taylor 解释了这一举措所填补的空缺之处:

“我们明天可能会在 Laravel 中发布一个新功能,因为我们每周二都会发布。LLM 根本不知道这个功能存在,因为它们是在旧数据上训练的。但 Boost 实际上允许我们为它们提供最新信息。它们总能访问到最新的文档。”

何时使用 Boost

当你使用 AI 编码智能体编写 Laravel 代码时,请使用 Laravel Boost。Boost 能让 Claude Code、Cursor 和类似工具生成更准确、更符合习惯用法、版本更合适的 Laravel 代码。它是一个开发者生产力工具。你的最终用户永远不会与它交互。

在实践中,当你让 Claude Code 构建一个 Livewire 组件时,livewire-development 技能会加载该领域的特定模式和约定。当你转而编写测试时,pest-testing 技能会接管。每个技能只在相关时加载,因此智能体在每一步都拥有聚焦的、最新的上下文。结果是更少的幻觉方法和更少清理代码差异的时间。

什么是 Laravel MCP?

Laravel MCP 是一个用于在你的 Laravel 应用内部构建模型上下文协议服务器的库。通过以下命令安装:

composer require laravel/mcp
php artisan vendor:publish --tag=ai-routes

MCP 是一个开放标准,允许像 ChatGPT、Claude 和 Cursor 这样的 AI 客户端以结构化方式与外部服务交互。当你将一个 MCP 服务器构建到你的应用中时,你就是在为 AI 工具提供一种直接调用你应用功能的方式。

Boost 本身也是构建在 Laravel MCP 之上的。Boost 向你的编码智能体暴露的每个工具,比如 Tinker 和 Schema,都是使用这个相同的库定义的 MCP 工具。

你可以通过以下命令生成一个 MCP 服务器:

php artisan make:mcp-server InvoiceServer

MCP 支持三种原语

  • 工具暴露可调用的功能。AI 智能体可以调用一个工具在你的应用中执行操作,比如创建发票、查询数据或触发工作流。任何你能编码的东西都可以成为一个工具。
  • 资源暴露内容。AI 客户端可以读取资源并将其用作上下文:文档、数据库记录、配置文件。
  • 提示提供可复用的提示模板。用户可以从服务器选择一个提示(如“审查我的代码”),这样他们就不必每次都输入。

MCP 服务器可以通过网络访问(通过 HTTP)或本地运行(作为 Artisan 命令)。Web 服务器支持通过 Laravel Passport 进行 OAuth 认证,以及通过 Laravel Sanctum 进行令牌认证。

何时使用 Laravel MCP

使用 Laravel MCP 来将你的应用暴露给外部 AI 客户端。如果你希望 ChatGPT 能在你的应用中创建发票,或者 Claude 能搜索你的知识库,或者 Cursor 能查询你的 API,你就需要构建一个 MCP 服务器。你的产品变成了一个 AI 集成,而无需用户离开他们选择的 AI 聊天界面。

例如,一个发票应用可以通过 MCP 服务器暴露一个 CreateInvoice 工具。用户在 ChatGPT 中说“为 Acme Corp 创建一张 2,400 美元的发票”,然后该工具使用 Laravel 的验证来验证输入,创建记录,并返回结构化响应。用户从未离开他们的聊天界面。

这三个包如何协同工作

这些工具并非彼此替代。它们在不同层面运作:

使用者 作用
Laravel AI SDK 你的应用 添加你的用户会与之交互的 AI 功能
Laravel Boost 你,开发者 帮助 AI 智能体编写更好的 Laravel 代码
Laravel MCP 外部 AI 客户端 将你的应用暴露给像 ChatGPT 和 Claude 这样的工具

一个生产级的 Laravel 应用可能会同时使用这三个。AI SDK 驱动应用内部的 AI 驱动搜索功能。Boost 帮助团队使用 Claude Code 更快地构建该功能。一个 MCP 服务器让用户可以直接在 ChatGPT 内部查询相同的搜索。

Boost 和 MCP 之间的关系很好地说明了它们是如何分层的。Boost 在内部使用 Laravel MCP 将其开发工具暴露给编码智能体。如果你构建自己的内部开发工具,你也可以做同样的事情。

关于工具和上下文的说明

AI SDK 支持自定义工具,Laravel MCP 也支持。它们相关但服务于不同目的。

AI SDK 中的工具让你的智能体能够在生成过程中调用外部功能:搜索网络、查询向量存储、运行计算。这些在你的 Laravel 应用的用户交互期间在服务器端运行。

Laravel MCP 中的工具则将你的应用功能暴露给外部 AI 客户端。它们是 AI 工具从外部调用你应用的入口点。

Taylor 指出了在使用 AI SDK 的工具时的一个实际考虑:一次暴露太多工具可能会导致上下文膨胀。

“你可能不应该向 LLM 暴露 50、60、70 个工具,因为你会遇到所谓的上下文膨胀。你还必须发送所有工具的定义、它们的作用,而且必须在每条消息中都发送这些。所以如果你有太多工具,你可能会消耗大量的 token 和上下文。”

AI SDK 中的智能体类设计在这方面有所帮助。由于工具是按智能体定义的,你可以限定每个智能体可以访问的内容。一个客户支持智能体获得搜索工具。一个潜在客户资格认定智能体则一个都没有。这保持了 token 使用的可预测性。

开始 AI 驱动的 Laravel 开发

根据你的需要独立安装这三个包:

# 为你的应用添加 AI 功能
composer require laravel/ai

# 改进 AI 辅助开发(作为开发依赖安装)
composer require laravel/boost --dev
php artisan boost:install

# 将你的应用暴露给外部 AI 客户端
composer require laravel/mcp
php artisan vendor:publish --tag=ai-routes

如果你刚开始,先安装 Laravel Boost。它会立即提升你编辑器中 AI 生成的 Laravel 代码的质量。然后,当你开始为应用构建 AI 功能时,再添加 Laravel AI SDK。

这三个包构成了 Laravel 完整的 AI 层:一个用于构建,一个用于开发,一个用于集成。一起使用时,它们形成了一个闭环:用 Boost 更快地编写代码,用 AI SDK 发布 AI 功能,用 MCP 触达用户已经所在的任何地方。

我们必须交付。阅读 Laravel AI 文档 并开始更快地构建吧。

常见问题解答

我需要所有三个包吗?

不一定。大多数在应用中构建 AI 功能的 Laravel 开发者可能既想要 Boost(用于开发),也想要 AI SDK(用于功能)。Laravel MCP 仅在你想将应用暴露给外部 AI 客户端时才需要。

Laravel AI SDK 是 Prism 的替代品吗?

是的,AI SDK 取代了在应用中直接使用 Prism 的需求。Taylor 描述了它们的关系:“我有点把 Prism 和 AI SDK 的关系看作查询构建器Eloquent 的关系。Prism 拥有那种流畅的接口。AI SDK 是建立在它之上的一个抽象层,包含智能体类、测试等等。”

我可以使用本地模型而不是 OpenAI 或 Anthropic 吗?

可以。AI SDK 支持 Ollama 用于本地模型推理。你也可以使用 OpenRouter 通过单个 API 密钥访问多个提供商。在 config/ai.php 中为任何兼容 OpenAI 的端点配置基础 URL 覆盖即可。

AI SDK 如何与 Laravel 的队列系统集成?

不是调用 prompt(),而是调用 queue()。SDK 会在你的 Laravel 队列上创建一个后台任务。你可以传递任务完成或失败时的回调。这对于长时间运行的任务(如音频转录或大型文档分析)很有用,因为你不希望阻塞 HTTP 请求。

Laravel Boost 会影响我的生产应用吗?

不会。Boost 作为开发依赖安装,并在你的开发机器上作为本地 MCP 服务器运行。Boost 中的任何内容都不会影响你的生产构建。

Laravel MCP 支持哪些认证方式?

Laravel MCP 支持通过 Laravel Passport 进行 OAuth 2.1 认证(推荐,以实现与 MCP 客户端的最大兼容性),以及通过 Laravel Sanctum 进行基于令牌的认证。你也可以编写自定义的认证中间件。

AI SDK 中的工具可以打包和分享吗?

可以。工具和智能体是普通的 PHP 类,可以作为 Composer 包分发。如果你构建了一个可复用的工具,你可以发布它供其他 Laravel 开发者使用。


资源速览