AI 年代,连 Laravel 都来凑热闹了。对,我说的就是 Laravel AI SDK,为开发者提供了一套统一的 API,用于对接 OpenAI、Anthropic、Gemini 等主流 AI 模型。总之,过去那种手写 API 请求、肉眼调优提示词的苦日子已经彻底终结了,Laravel 又升级了。
Laravel AI SDK 的功能亮点
Laravel AI SDK 其实就是为了简化AI交互流程而设计的,开发者能够像操作数据库一样操作 AI 模型。
统一的供应商接口
以前不同的 AI 平台需要编写不同的集成代码,现在就不用了,用一套一致的 PHP 语法,就可以在不同的底层模型(如 GPT-4、Claude 3.5 或 Gemini Pro)之间无缝切换。这种设计规避了供应商锁定的风险,也方便根据成本或性能需求灵活调整。
智能体架构
Agent 是这个 SDK 的逻辑单元。它将提示词指令、上下文管理、可用工具和输出格式封装在一个 PHP 类中,这样的话,复杂的业务逻辑(如销售分析、代码审查或客服支持)可以被模块化处理。
结构化输出与工具调用
SDK 支持强制模型返回符合特定模式(Schema)的 JSON 数据,对自动化流程来说是非常重要的。此外,通过定义工具,AI 能够调用本地函数,实现从数据库检索信息或执行数学运算等操作。
多模态与增强检索
除了文本生成,SDK 还涵盖了图像生成、语音转文字(STT)、文字转语音(TTS)以及向量嵌入(Embeddings)。配合 PostgreSQL 的 pgvector 扩展,开发者可以快速实现基于语义搜索的知识库系统。
写代码的时候,可以选择轻量且可扩展的 VS Code 或 Cursor。配合官方的 Laravel 扩展,这些编辑器能提供语法高亮、代码片段以及针对 Eloquent 模型和路由的智能补全。
如果追求更稳健的开发体验,PhpStorm 提供了深度的框架集成。它内置了对 Blade 模板、组件导航以及代码生成的全面支持。对于希望在浏览器中直接开发的开发者,Firebase Studio 则提供了零配置的云端环境。
部署基础环境
在本地开发 Laravel AI 应用之前,需要搭建一个可靠的 PHP 运行环境。比如,ServBay 是能一键完成 PHP 环境的部署。
- 一键安装:ServBay 整合了 Nginx、MariaDB、PostgreSQL 和 Redis。
- 多版本支持:支持 PHP 8.2 及更高版本,满足 Laravel SDK 的最低要求。
-
向量数据库支持:ServBay 提供的 PostgreSQL 方便开启 pgvector 扩展,这是实现向量搜索(RAG)的基础。
安装 ServBay 后,只需在面板中添加站点,并将根目录指向 Laravel 项目的 public 文件夹即可完成配置。
SDK 的安装与安全配置
环境就绪后,通过 Composer 引入 AI SDK:
composer require laravel/ai
接着发布配置文件并运行数据库迁移,这将创建存储对话记录所需的表:
php artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider"
php artisan migrate
在配置环境时,.env 文件的安全非常重要。Laravel 提供了环境文件加密功能,防止敏感的 API 密钥泄露:
# 加密环境文件
php artisan env:encrypt --readable
使用 --readable 选项可以保留变量名可见,同时加密其值,方便在不解密的情况下查看配置项。
构建 AI 智能体(Agents)
Laravel AI SDK 引入了 Agent 的概念。这样就不用写 Controller 里的逻辑,而是定义一个 Agent 类。比如,我们可以造一个能查数据库的客服专家。
namespace App\Ai\Agents;
use Laravel\Ai\Contracts\Agent;
use Laravel\Ai\Contracts\Conversational;
use Laravel\Ai\Contracts\HasTools;
use Laravel\Ai\Concerns\RemembersConversations;
use Laravel\Ai\Promptable;
class SupportBot implements Agent, Conversational, HasTools
{
use Promptable, RemembersConversations;
public function instructions(): string
{
return '你是一个专业的客服。请根据订单工具查询到的信息回答用户问题,语气要专业。';
}
public function tools(): iterable
{
// 赋予 Agent 手脚,让它能查数据库
return [
new \App\Ai\Tools\OrderLookup,
];
}
}
在业务代码里,我只需要一行调用。 Agent 会自己判断什么时候该去查数据库,什么时候该回话。
$bot = (new SupportBot($user->id))->forUser($user);
$response = $bot->prompt('我的订单 A1024 到哪了?');
向量搜索与数据检索
配合 ServBay 预装的数据库环境, RAG 只需要几行代码就能搞定。
我们先在模型里利用 SDK 快速生成向量:
protected static function booted()
{
static::saving(function ($article) {
// 只要内容变了,自动把文字转成向量存进数据库
$article->embedding = Str::of($article->content)->toEmbeddings();
});
}
查询时,直接用语义匹配。
比如用户搜“怎么退钱”,系统能自动找到“售后政策”的文章,即便文案里没有“退钱”这两个字。
$results = Article::query()
->whereVectorSimilarTo('embedding', $query, minSimilarity: 0.6)
->get();
成本控制与容灾
在生产环境,我们不能盲目追求最强模型。SDK 提供的属性标注能让我们精准控制成本。比如简单的分类任务用便宜模型,复杂的逻辑分析用聪明模型。
use Laravel\Ai\Attributes\UseCheapestModel;
use Laravel\Ai\Attributes\Provider;
use Laravel\Ai\Enums\Lab;
#[Provider([Lab::OpenAI, Lab::Anthropic])] // 如果 OpenAI 挂了,自动切换到 Anthropic
#[UseCheapestModel] // 自动选择最省钱的模型,比如 Haikuclass FastClassifier implements Agent
{
use Promptable;
}
这种自动降级(Failover)和成本优化,以前得写多少行代码才能实现?现在几个注解就搞定了。
自动化测试
AI 的输出是不确定的,你永远不可能知道它会出什么幺蛾子。但 SDK 提供的模拟功能(Fake)让一切变得可控。
public function test_support_bot_flow()
{
// 伪造 AI 返回,不花一分钱 API 费就能跑完所有测试用例
SupportBot::fake(['您的订单正在派送中。']);
$response = (new SupportBot(1))->prompt('订单状态?');
SupportBot::assertPrompted(fn ($prompt) => str_contains($prompt->prompt, '订单'));
$this->assertStringContainsString('派送', $response);
}
生产环境部署优化
当应用准备上线时,应通过缓存配置和路由来提升性能。Laravel 提供的 optimize 命令可以一键完成多项优化工作:
php artisan optimize
该命令会执行以下操作:
-
配置缓存:将所有配置文件合并,减少文件系统读取。
-
路由缓存:加速路由注册过程。
-
视图缓存:预编译 Blade 模板。
此外,确保在生产环境中关闭调试模式(APP_DEBUG=false),并利用内置的健康检查路径 /up 监控应用状态。
别再用老一套的方法去集成 AI,你想想你的时间多贵呀。
Laravel AI SDK 将复杂的 AI 集成逻辑转化为符合 Laravel 惯例的开发模式,开发者可以更专注于 AI 业务逻辑的实现,快速构建出具备竞争力的智能化应用。