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 CodeCursor。配合官方的 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 业务逻辑的实现,快速构建出具备竞争力的智能化应用。

      Logo

      有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

      更多推荐