解析 Laravel 的 AI 生态系统:Prism、LarAgent、Neuron AI 与 Boost
从简单的LLM调用到Laravel中的完整智能体:Prism、LarAgent、Neuron AI、AI SDK以及Boost各自的功能,并通过一个针对人力资源政策问题的RAG示例进行说明。
来源: From Calling an LLM to Building an Autonomous Agent: Mapping Laravel’s AI Ecosystem in 2026
在 Packagist 中搜索“laravel ai”,会出现令人眼花缭乱的列表。过去一年里出现了数十个相关包,每个都宣称自己是让 Laravel 实现 AI 智能体的最简单途径。这些包的名称彼此相似,README 文件也都写得很有说服力,但实际安装后才发现它们解决的却是截然不同的问题。
许多开发者因此吃了亏。有人只是想要一个简单的文本摘要功能,结果却不得不引入整个智能体框架,包括内存管理、工具调用以及多步骤协调功能,而这些功能其实根本不需要。最终得到的只是一堆冗余代码,而且设置过程所耗的时间比实现该功能本身还要长。
接下来的内容将介绍 Laravel 智能代理生态系统中的三大主要组件:Prism、LarAgent 和 Neuron AI。同时也会厘清两个经常被混淆的名称——Laravel AI SDK 和 Laravel Boost,并通过一个实际案例进行说明:一个能够解答公司内部文档相关问题的助手。
从原始 API 调用到完整生态系统
几年前,要在 Laravel 应用中加入 AI 功能,只有唯一一种方法:使用 HTTP 客户端手动向 OpenAI 的接口发送请求,然后自行解析返回的 JSON 数据。而一旦换成 Anthropic,就不得不重新编写相关代码。
现状已经有所不同。据报道,Laravel核心团队在2026年初发布了官方AI SDK,该SDK与Boost及MCP支持一同作为更完整的Laravel AI套件的一部分推出。选择越多,决策疲劳就越严重,因此建立清晰的概念十分重要:何时需要代理框架,而何时最简单的工具就足够了?
这个生态系统发展也极为迅速。本月还很流行的某个包,六个月后可能就不再受欢迎,而另一个包则可能成为社区的首选。与其记住各个工具的名称,不如了解它们各自解决的问题的类别。只要分类正确,即便下个月出现新的工具,选择起来也会很轻松。
调用LLM与使用代理
大部分困惑都源于此。许多开发者认为使用AI就等同于使用代理,但实际上两者的复杂程度有着天壤之别。
- 调用大型语言模型非常简单:输入一个提示词,得到一个回复。就好比生成产品描述或用三句话概括一篇文章。这种交互是单向的,过程中不会做出任何决策。
- 智能体则会经过多步推理。它会决定何时调用工具、何时提出进一步询问、何时从数据库中获取数据后再回复,以及何时任务完成。存在决策循环,而非单一的请求-响应周期。
如果需求属于第一种类型,使用智能体框架就如同租用一个货运集装箱来运送一周的食品杂货。虽然可行,但属于浪费精力,而这正是Prism发挥作用的地方。
Prism:与大型语言模型交互的基础层
Prism 是三者中最轻量的。它纯粹是一个抽象层。你只需编写一次代码,便可更换不同的提供方,无论是 OpenAI、Anthropic、Gemini、Mistral、Ollama 还是其他服务,而无需修改代码结构。基本的文本生成流程如下:
use Prism\Prism\Facades\Prism;
use Prism\Prism\Enums\Provider;
$response = Prism::text()
->using(Provider::Anthropic, 'claude-3-7-sonnet-latest')
->withSystemPrompt('You are an assistant who explains technical terms in plain language.')
->withPrompt('Explain what dependency injection is.')
->asText();
echo $response->text;
它的优点在于不同服务提供商之间能提供一致的接口。从 Anthropic 切换到 OpenAI 时,只需修改 using() 调用,其余部分无需改动。它还支持结构化输出、基础工具调用以及图像和文档输入功能。
不过也要注意它的局限性。Prism 并不适合管理长时间运行的状态或自动化的多步骤工作流。如果你希望拥有具备记忆能力、能在一系列决策中持续行动的“有生命感”的 AI,仅靠 Prism 是不够的,这时就需要 LarAgent 了。
LarAgent:类似 Eloquent 模型的智能体
LarAgent 采用了一种对 Laravel 开发者来说十分熟悉的设计方式:定义智能体的方式与定义 Eloquent 模型类似,拥有专门的 artisan 命令、类结构以及具有明显 Laravel 风格的配置文件。
namespace App\AiAgents;
use LarAgent\Agent;
use LarAgent\Attributes\Tool;
class SupportAgent extends Agent
{
protected $model = 'gpt-4o';
protected $history = 'in_memory';
protected $provider = 'default';
public function instructions()
{
return 'You are a support agent that helps users track their order status.';
}
#[Tool('Get order status by invoice number')]
public function getOrderStatus($invoiceNumber)
{
return Order::where('invoice', $invoiceNumber)->first()?->status ?? 'Order not found';
}
}
之后,即可为特定用户调用该智能客服,对话历史会自动保存:
use App\AiAgents\SupportAgent;
SupportAgent::forUser(auth()->user())->respond($userMessage);
将其与Prism作比较。在Prism中,工具是通过#[Tool]属性注册的,而代理会根据用户的指令自行决定何时调用该工具。这正是之前所描述的代理行为,即存在一个决策层,而非单次交互即可完成。
当代理需要与某个特定功能绑定明确的身份时,LarAgent是个不错的选择,比如客户支持、数据录入助手,或是需要同一用户反复调用且上下文必须保留的内部辅助工具。历史记录是按用户单独管理的,因此无需设计专门的架构。只需选择内存或缓存等历史记录存储方式,其余工作由LarAgent处理。对于那些需要快速上线代理功能且无需大量配置的小团队而言,这无疑是个巨大的优势。
Neuron AI:适用于多代理场景
当项目发展到需要生产级RAG功能、多个智能体协同工作,或需要详细了解每个智能体的操作步骤时,Neuron AI是一个值得考虑的选择。
它并非专为Laravel设计,而是一个纯粹的PHP智能体框架,能够无缝集成到Laravel项目中。其架构具备标准框架的特征:通过SystemPrompt对象来定义提示词的结构,RAG功能由RAG类处理,向量存储可从简单的内存存储扩展到Pinecone和Elasticsearch等外部服务,同时还配有用于监控的Inspector工具,可实时显示智能体的操作流程。以下是一个基本的智能体定义:
namespace App\Neuron;
use NeuronAI\Agent;
use NeuronAI\SystemPrompt;
use NeuronAI\Providers\AIProviderInterface;
use NeuronAI\Providers\Anthropic\Anthropic;
class DataAnalystAgent extends Agent
{
protected function provider(): AIProviderInterface
{
return new Anthropic(
key: env('ANTHROPIC_API_KEY'),
model: 'claude-3-7-sonnet-latest',
);
}
public function instructions(): string
{
return (string) new SystemPrompt(
background: ['You are a data analyst helping the marketing team understand sales trends.'],
steps: [
'Fetch sales data using the available tool.',
'Analyze the trends and patterns that emerge.',
'Communicate the insight in plain, easy-to-understand language.',
],
);
}
}
可见这与LarAgent相比要明确得多。系统提示清晰地区分了背景信息、步骤和输出结果,这是有意为之。Neuron AI适用于那些复杂性已经上升、需要明确结构来防止智能体在处理过程中偏离正轨的场景。
Laravel AI SDK与Laravel Boost:常见的混淆
许多开发者将它们视为同一事物的不同名称。实际上它们解决的是完全不同的问题,据称Laravel团队还专门发布过文章来澄清这一误解。
- Laravel AI SDK(
laravel/ai)是由核心团队推出的官方 SDK。它的功能是将 AI 功能集成到你的应用中,通过统一的 API 处理文本、结构化输出、图像、音频以及嵌入向量等内容。该 SDK 基于 Prism 构建,因此熟悉 Prism 的用户会发现过渡十分容易。此外,官方版本还提供了用于测试的模拟数据、后台任务队列以及服务提供商之间的自动故障转移功能。 - Laravel Boost则完全是另一回事。它是一个在开发环境中运行的 MCP 服务器,能够帮助 Claude Code 或 Cursor 等 AI 编程助手生成更符合 Laravel 框架规范的代码。Boost 从不涉及生产环境中的应用程序,仅作为开发时的依赖项在编码时启用,不会成为最终用户所使用的任何 AI 功能的一部分。
简单来说,AI SDK 帮助你构建 AI 功能,而 Boost 则帮助 AI 帮助你编写更优质的 Laravel 代码。二者可以并行使用,互不替代。
案例研究:回答内部文档中的问题
这是一个常见的职场需求。人力资源团队厌倦了反复回答相同的休假政策相关问题,希望有一个能够根据现有政策文档进行回复的聊天机器人。这属于典型的 RAG 应用场景,即答案来源于公司自身的文档,而非模型在训练过程中获取的信息。
该应用需要向量存储、嵌入向量以及自动检索功能,因此 Neuron AI 是非常合适的选择:
namespace App\Neuron;
use NeuronAI\Providers\AIProviderInterface;
use NeuronAI\Providers\Anthropic\Anthropic;
use NeuronAI\RAG\RAG;
use NeuronAI\RAG\Embeddings\EmbeddingsProviderInterface;
use NeuronAI\RAG\VectorStore\VectorStoreInterface;
use NeuronAI\RAG\VectorStore\MemoryVectorStore;
class HrPolicyAgent extends RAG
{
protected function provider(): AIProviderInterface
{
return new Anthropic(
key: env('ANTHROPIC_API_KEY'),
model: 'claude-3-7-sonnet-latest',
);
}
protected function vectorStore(): VectorStoreInterface
{
return new MemoryVectorStore();
}
protected function embeddings(): EmbeddingsProviderInterface
{
// your preferred embeddings provider, e.g. OpenAI or Voyage
}
}
大致流程如下:
- HR政策文件,无论是PDF格式还是纯文本,都会被分割成更小的片段,转换成嵌入向量后存储在向量数据库中。
- 当员工询问还有多少未使用的年假可以结转到下一年时,该问题也会被转换成嵌入向量。
- Neuron AI会寻找在语义上最相近的片段,而不仅仅是基于关键词匹配,然后将这些片段作为额外上下文提供给大语言模型。
- 大语言模型会依据这些真实的片段来回答,而非凭一般知识猜测。
这样得到的聊天机器人所给出的回复会参考公司的实际政策,而非可能错误的通用答案。虽然也可以使用手动工具强制搭建类似LarAgent的系统,但那样就需要自行实现检索逻辑、片段分割及相似度搜索功能。而Neuron AI则已将这些功能作为现成的组件提供出来。
示例中的 MemoryVectorStore 仅需少量配置文件即可,因为它能在会话期间将嵌入向量存储在内存中。一旦文档集规模扩大且需要持续运行,只需将 vectorStore() 的实现替换为 Pinecone 或 Elasticsearch 等真正的向量数据库,而无需修改智能体的逻辑。清晰的抽象层能让您从小规模开始逐步扩展,避免从一开始就确定最终架构。
在这类 RAG 工作中常见的错误是直接将整份文档完整导入而不进行分块处理。将冗长的人力资源政策作为连续的整体块输入会干扰相似度搜索,因为系统无法判断哪部分内容能回答问题。按主题或几段文字为单位进行分割,才能让检索结果定位到正确的部分。
该如何选择
- Prism:真正的单次请求与响应模式,适用于生成文本、摘要或描述等场景,能让您无缝切换服务提供商。
- Laravel AI SDK:由核心团队支持的官方选项,具备测试假数据、后台任务处理及服务提供商故障切换功能,尤其适合需要团队长期维护的项目。
- LarAgent:具有明确身份的智能体,同一用户可反复调用,其开发者体验类似Eloquent,且可通过简单属性定义相关工具。
- Neuron AI:此类项目已超出简单智能体的处理能力,需要强大的RAG功能、多个协同工作的智能体、精细的追踪机制或由相互依赖的步骤构成的工作流。
这里没有绝对最好的包,只有最适合你当前面临复杂度的那个。从最简单的选项开始,只有在问题确实需要时再升级。最好的代码并非最聪明的代码,而是最能解决当前问题的代码。