找回密码
 立即注册
首页 业界区 业界 Laravel AI SDK 正式发布

Laravel AI SDK 正式发布

祖柔惠 2026-2-6 14:10:05
Laravel AI SDK 正式发布

Laravel AI SDK 今天正式发布了。这个由 Taylor Otwell 开发数月的官方包,为 Laravel 应用提供了一套统一的 AI 交互接口,覆盖文本对话、图像生成、语音合成、语音转录、向量嵌入等场景,支持 OpenAI、Anthropic、Gemini、Groq、xAI 等主流服务商。
安装方式和其他 Laravel 官方包一样简单:
  1. composer require laravel/ai
复制代码
Agent:核心交互单元

SDK 的核心概念是 Agent。每个 Agent 是一个 PHP 类,封装了系统指令、对话上下文、工具和输出格式。可以把它理解为一个专用助手——销售教练、文档分析器、客服机器人——配置一次,随处调用。
通过 Artisan 命令创建:
  1. php artisan make:agent SalesCoach
复制代码
生成的类实现 Agent 接口,定义 instructions() 方法提供系统提示词,然后调用 prompt() 发起对话:
  1. $response = SalesCoach::make(user: $user)
  2.     ->prompt('分析这段销售录音...');
  3. return (string) $response;
复制代码
prompt() 方法支持在调用时切换服务商和模型:
  1. $response = (new SalesCoach)->prompt(
  2.     '分析这段销售录音...',
  3.     provider: 'anthropic',
  4.     model: 'claude-haiku-4-5-20251001',
  5.     timeout: 120,
  6. );
复制代码
如果不想创建专门的类,也可以用匿名 Agent 快速调用:
  1. use function Laravel\Ai\{agent};
  2. $response = agent(
  3.     instructions: 'You are an expert at software development.',
  4. )->prompt('Tell me about Laravel');
复制代码
结构化输出

Agent 可以返回结构化数据,而不仅仅是纯文本。实现 HasStructuredOutput 接口,定义 schema() 方法即可:
  1. public function schema(JsonSchema $schema): array
  2. {
  3.     return [
  4.         'feedback' => $schema->string()->required(),
  5.         'score' => $schema->integer()->min(1)->max(10)->required(),
  6.     ];
  7. }
复制代码
调用后直接当数组用:
  1. $response = (new SalesCoach)->prompt('分析这段录音...');
  2. return $response['score']; // 8
复制代码
对话记忆

Agent 支持自动持久化对话历史。使用 RemembersConversations trait 后,SDK 会自动将对话存入数据库,后续可以通过 continue() 方法继续之前的对话:
  1. // 开始新对话
  2. $response = (new SalesCoach)->forUser($user)->prompt('你好!');
  3. $conversationId = $response->conversationId;
  4. // 继续对话
  5. $response = (new SalesCoach)
  6.     ->continue($conversationId, as: $user)
  7.     ->prompt('接着刚才的话题...');
复制代码
工具系统

Agent 可以使用工具来扩展能力。通过 make:tool 命令创建工具类,定义输入 schema 和 handle() 方法:
  1. class RandomNumberGenerator implements Tool
  2. {
  3.     public function description(): string
  4.     {
  5.         return '生成加密安全的随机数。';
  6.     }
  7.     public function handle(Request $request): string
  8.     {
  9.         return (string) random_int($request['min'], $request['max']);
  10.     }
  11.     public function schema(JsonSchema $schema): array
  12.     {
  13.         return [
  14.             'min' => $schema->integer()->min(0)->required(),
  15.             'max' => $schema->integer()->required(),
  16.         ];
  17.     }
  18. }
复制代码
SDK 还内置了几个服务商级别的工具:

  • WebSearch — 让 Agent 搜索网页,支持 Anthropic、OpenAI、Gemini
  • WebFetch — 让 Agent 抓取网页内容,支持 Anthropic、Gemini
  • FileSearch — 在向量存储中搜索文件,支持 OpenAI、Gemini
  • SimilaritySearch — 基于 Eloquent 模型的向量相似度搜索,用于 RAG 场景
流式响应与广播

对于需要实时输出的场景,Agent 支持流式响应。返回值可以直接作为路由响应,自动发送 SSE:
  1. Route::get('/coach', function () {
  2.     return (new SalesCoach)->stream('分析这段录音...');
  3. });
复制代码
流式事件还可以通过 Laravel Broadcasting 广播到前端频道,或者使用 Vercel AI SDK 协议与前端框架对接:
  1. return (new SalesCoach)
  2.     ->stream('分析这段录音...')
  3.     ->usingVercelDataProtocol();
复制代码
队列处理

耗时的 AI 请求可以推入队列在后台处理:
  1. (new SalesCoach)
  2.     ->queue($request->input('transcript'))
  3.     ->then(function (AgentResponse $response) {
  4.         // 处理响应...
  5.     })
  6.     ->catch(function (Throwable $e) {
  7.         // 处理异常...
  8.     });
复制代码
图像生成

Image 类提供了简洁的图像生成接口,支持 OpenAI、Gemini 和 xAI:
  1. use Laravel\Ai\Image;
  2. $image = Image::of('厨房台面上的甜甜圈')
  3.     ->quality('high')
  4.     ->landscape()
  5.     ->generate();
  6. $path = $image->store();
复制代码
支持附加参考图像进行风格迁移,也可以推入队列异步生成。
音频与转录

语音合成(TTS)和语音转录(STT)同样被纳入 SDK:
  1. use Laravel\Ai\Audio;
  2. use Laravel\Ai\Transcription;
  3. // 文字转语音
  4. $audio = Audio::of('I love coding with Laravel.')
  5.     ->female()
  6.     ->instructions('用海盗的语气说')
  7.     ->generate();
  8. // 语音转文字
  9. $transcript = Transcription::fromStorage('audio.mp3')
  10.     ->diarize() // 按说话人分段
  11.     ->generate();
复制代码
TTS 支持 OpenAI 和 ElevenLabs,STT 同样支持这两个服务商。
Embeddings 与向量搜索

生成向量嵌入变得非常直观。Laravel 的 Stringable 类新增了 toEmbeddings() 方法:
  1. $embeddings = Str::of('Napa Valley has great wine.')->toEmbeddings();
复制代码
配合 PostgreSQL 的 pgvector 扩展,可以在数据库中直接进行向量相似度查询:
  1. $documents = Document::query()
  2.     ->whereVectorSimilarTo('embedding', '纳帕谷最好的酒庄')
  3.     ->limit(10)
  4.     ->get();
复制代码
传入字符串时,Laravel 会自动生成嵌入向量再进行查询,不需要手动处理。Embedding 还支持缓存,避免重复调用 API。
Reranking

Reranking 可以对搜索结果按语义相关性重新排序,支持 Cohere 和 Jina:
  1. $posts = Post::all()->rerank('body', 'Laravel 教程');
复制代码
这个功能直接以 Collection 宏的形式提供,可以对 Eloquent 集合按指定字段做语义重排。
文件与向量存储

SDK 提供了文件管理和向量存储的完整方案。文件可以上传到服务商存储后反复引用,向量存储则用于 RAG 场景下的文件检索:
  1. use Laravel\Ai\Files\Document;
  2. use Laravel\Ai\Stores;
  3. // 上传文件
  4. $stored = Document::fromPath('/path/to/report.pdf')->put();
  5. // 创建向量存储并添加文件
  6. $store = Stores::create('知识库');
  7. $store->add($stored);
复制代码
Failover

调用时传入服务商数组,SDK 会在主服务商不可用时自动切换到备用服务商:
  1. $response = (new SalesCoach)->prompt(
  2.     '分析这段录音...',
  3.     provider: ['openai', 'anthropic'],
  4. );
复制代码
Agent 配置

Agent 支持通过 PHP Attribute 配置参数,包括最大步数、最大 token 数、温度、超时时间等:
  1. #[MaxSteps(10)]
  2. #[MaxTokens(4096)]
  3. #[Provider('anthropic')]
  4. #[Temperature(0.7)]
  5. #[Timeout(120)]
  6. class SalesCoach implements Agent
  7. {
  8.     use Promptable;
  9. }
复制代码
UseCheapestModel 和 UseSmartestModel 两个 Attribute 可以自动选择服务商最便宜或最强的模型,不需要记具体的模型名。
中间件

Agent 支持中间件机制,可以在请求发送前后插入自定义逻辑,比如日志记录:
  1. class LogPrompts
  2. {
  3.     public function handle(AgentPrompt $prompt, Closure $next)
  4.     {
  5.         Log::info('Prompting agent', ['prompt' => $prompt->prompt]);
  6.         return $next($prompt)->then(function (AgentResponse $response) {
  7.             Log::info('Agent responded', ['text' => $response->text]);
  8.         });
  9.     }
  10. }
复制代码
测试支持

SDK 为每个功能都提供了 fake() 方法和断言 API,测试时不需要真实调用 AI 服务商:
  1. SalesCoach::fake(['第一条响应', '第二条响应']);
  2. // 执行业务逻辑...
  3. SalesCoach::assertPrompted('分析这段...');
  4. SalesCoach::assertNeverPrompted();
复制代码
图像、音频、转录、Embeddings、Reranking、文件操作、向量存储都有对应的 fake 和断言方法。
服务商支持一览

功能支持的服务商文本对话OpenAI、Anthropic、Gemini、Groq、xAI图像生成OpenAI、Gemini、xAI语音合成OpenAI、ElevenLabs语音转录OpenAI、ElevenLabs向量嵌入OpenAI、Gemini、Cohere、Jina重排序Cohere、Jina文件管理OpenAI、Anthropic、Gemini小结

Laravel AI SDK 把 AI 集成做成了 Laravel 开发者熟悉的样子:Artisan 命令生成类、接口约束行为、trait 复用逻辑、队列异步处理、fake 方法写测试。如果你的 Laravel 项目需要接入 AI 能力,这个包值得尝试。


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册