地球人都知道,大多数LLM依赖于 Python。但都2026年了,你以为只有 Python 能处理大语言模型,那就太甜了。PHP 社区已经沉淀出一套成熟的 AI Agent 开发生态。开发者完全可以在原生的 PHP 环境中,完成从底层 API 调度到高层多智能体协同的全部工作。

本文将深入剖析当前 PHP AI 生态的具体层级,解析主流框架的底层逻辑,并提供贴近实际业务的集成示例。

PHP有什么AI

基础通信层:大语言模型接口与多端适配

业务系统接入大模型的第一步是建立稳定的通信链路。这一层的工具剥离了复杂的业务逻辑,专注于请求的构建、发送与响应解析。

OpenAI PHP 的底层控制逻辑

OpenAI PHP

在处理高度定制化的 AI 需求时,开发者往往需要对请求参数进行微调。OpenAI PHP 是官方支持的社区驱动版 SDK,它没有做过度的抽象,完整映射了 OpenAI 的 RESTful API。其设计思路是让开发者能够精准控制温度(Temperature)、惩罚机制(Frequency Penalty)以及流式输出(Streaming)。

安装依赖

composer require openai-php/client

在实际的客服质检业务中,通常需要较低的温度值以保证输出的稳定性。以下代码展示了如何利用该 SDK 发送带有严格参数控制的请求

use OpenAI\Client;

$client = OpenAI::client($_ENV['OPENAI_API_KEY']);

$response = $client->chat()->create([
    'model' => 'gpt-4o',
    'temperature' => 0.2,
    'max_tokens' => 500,
    'messages' => [
        ['role' => 'system', 'content' => '担任严格的合规审查员,仅输出合规或违规,并附带简短理由。'],
        ['role' => 'user', 'content' => '审查以下营销文案:全网第一,绝对包治百病。']
    ],
]);

echo $response->choices[0]->message->content;

Prism的多模型统一网关设计

随着市场上优秀模型的不断涌现,将业务系统与单一提供商深度绑定会带来极大的风险。Prism 框架通过契约(Contracts)和接口设计,将不同大模型的调用差异抹平。开发者可以基于 Prism 构建统一的 AI 服务网关。

除了基础的文本生成,Prism 还支持工具调用(Tool Calling),也是让模型具备执行力的基础。

安装依赖

composer require prism-php/prism

下面展示了如何配置 Prism,使模型能够自主决定是否调用外部的天气查询函数,并且可以在不同的模型提供商之间平滑切换

use Prism\Prism;
use Prism\Tools\Tool;

$weatherTool = Tool::make('get_weather')
    ->description('获取指定城市的当前天气情况')
    ->addParameter('city', 'string', '城市名称,例如北京');

$response = Prism::text()
    ->using('anthropic', 'claude-3-opus')
    ->withPrompt('明天上海的天气怎么样?需要带伞吗?')
    ->withTools([$weatherTool])
    ->generate();

if ($response->hasToolCalls()) {
    $calls = $response->getToolCalls();
    // 业务侧根据 $calls 中的参数去请求真实的天气 API,再将结果返回给模型
}

核心业务层 智能体构建与工作流编排

当单一的对话无法满足业务需求时,系统需要具备检索内部知识库的能力,或者需要输出严格的结构化数据。这就进入了 Agent 框架的领域。

LLPhant 驱动检索增强生成(RAG)

LLPhant

LLPhant 在 PHP 生态中的地位类似于 LangChain。它内置了完整的文档加载器、文本切片工具(Text Splitter)、向量化组件(Embedding)以及与各类向量数据库(如 Qdrant、Milvus、Chroma)的对接模块。

在构建企业内部知识库问答系统时,LLPhant 能够处理复杂的文档预处理工作流。

安装依赖

composer require thellphant/llphant

以下代码演示了 LLPhant 如何将文本拆分并存入向量数据库的过程

use LLPhant\Embeddings\OpenAIEmbeddingGenerator;
use LLPhant\VectorStore\Memory\MemoryVectorStore;
use LLPhant\Embeddings\DocumentSplitter\DocumentSplitter;
use LLPhant\Embeddings\Document;

$document = new Document();
$document->content = '公司报销规定:餐饮报销额度为每日200元,需提供正规发票。';

// 将长文档切分为短小片段
$chunks = DocumentSplitter::splitDocument($document, 50);

$embeddingGenerator = new OpenAIEmbeddingGenerator();
// 为切片生成向量数据
$embeddedDocuments = $embeddingGenerator->embedDocuments($chunks);

// 存入向量数据库(此处以内存数据库为例)
$vectorStore = new MemoryVectorStore();
$vectorStore->addDocuments($embeddedDocuments);

Cognesy Instructor PHP 实现结构化输出

在信息抽取场景下,解析大模型返回的非结构化自然语言非常容易出错。Cognesy Instructor PHP 利用了底层模型的 Function Calling 能力,结合 PHP 8 的反射机制(Reflection)和属性类型声明,强制模型输出符合特定对象结构的 JSON 数据。

安装依赖

composer require cognesy/instructor-php

定义好数据模型后,框架会自动生成 JSON Schema 并将其注入到请求头中

use Cognesy\Instructor\Instructor;

class ProductReview {
    public string $sentiment; // 积极、消极或中立
    public array $keywords; // 提及的产品特性关键词
    public int $rating; // 1到5的评分
}

$instructor = new Instructor();
$reviewData = $instructor->respond(
    messages: [['role' => 'user', 'content' => '这款手机电池续航极差,屏幕倒是非常清晰,勉强给个3星吧。']],
    responseModel: ProductReview::class
);

// 此时 $reviewData 已经是一个被完全填充的 ProductReview 实例
print_r($reviewData->keywords); 

PapiAI 的中间件管道架构

PapiAI 借鉴了现代 PHP Web 框架中的洋葱模型(中间件管道)。在向 LLM 发送请求前,数据会经过一系列拦截器。这种设计非常适合处理敏感词过滤、请求限流以及统一的日志记录。

安装依赖

composer require papi-ai/papi-core

现代 Web 框架的深度整合

Symfony AI - Agent Component

Symfony 官方提供的 AI 组件允许开发者利用现有的事件分发器和依赖注入容器来管理智能体。系统在执行模型交互时会触发特定事件,业务代码可以通过监听这些事件来干预 Agent 的行为逻辑。

Laravel Boost

在开发辅助领域,Laravel Boost 作为一个基于 MCP(模型上下文协议)的工具集合,能够让外部代码编辑器或大模型直接读取 Laravel 项目的路由表、数据库迁移文件和 Eloquent 模型关联关系。它打通了 AI 助手与本地 PHP 项目上下文之间的壁垒。

基础设施层 多智能体协同与可观测性

当系统规模扩大,单一 Agent 升级为具备不同角色的智能体团队时,状态管理和调试链路会变得异常复杂。

PromptlyAgent 的任务路由与状态机

PromptlyAgent

在多智能体系统中,PromptlyAgent 扮演着协调者的角色。它通过状态机模式管理工作流。当用户发起一个复杂的退货请求时,协调节点会将任务拆解,先交由订单查询 Agent 获取数据,再流转给退款处理 Agent 进行逻辑校验。PromptlyAgent 负责维护这些跨节点的数据传递与状态流转。

Vizra ADK 的全链路监控

AI 应用的黑盒特性往往会导致排错困难。Vizra ADK 侧重于解决 Agent 系统的可观测性问题。它能够记录每一次大模型调用的 Token 消耗、网络延迟以及工具调用的入参和出参。通过对这些遥测数据进行分析,架构师可以精准定位是哪一个环节导致了回答质量下降或响应超时。

本地开发环境与基础设施搭建

构建上述复杂的 PHP AI 生态项目,对底层运行环境提出了很高的要求。现代的 Agent 框架普遍依赖 PHP 8.2 甚至更高版本中的新特性,如只读类、枚举和注解。同时维护旧有业务系统和前沿的 AI 项目,经常会导致本地环境版本冲突

为了解决本地环境配置的痛点,推荐使用 ServBay 作为底层开发基础设施。ServBay 专为现代 Web 和 AI 开发者设计,免去了繁琐的编译和依赖配置过程。开发者通过 ServBay 能够实现 PHP 的一键安装,软件内部不仅集成了大量常用的扩展库,还提供了完美的版本隔离方案。

在同一台开发机上,ServBay 允许不同版本的 PHP 同时并存且互不干扰。工程师可以为传统的维护项目分配 PHP 7.4 环境,同时为全新的 LLPhant 或 PapiAI 智能体项目无缝分配 PHP 8.4 环境。这种多版本共存的设计大幅降低了环境搭建的沉没成本,让开发团队能够将精力完全投入到 PHP 接入大模型与多智能体工作流的研发中。

总结

PHP 的大模型开发生态已经完成了从零散工具到系统化矩阵的蜕变。从底层 SDK 的精细化控制,到中层 RAG 与结构化输出的框架支持,再到高层多智能体的状态管理,工具链已经完全闭环。借助 ServBay 等现代化的环境管理工具,开发者可以毫无负担地在原生 PHP 环境中探索 AI 应用的边界。逐步将单一的函数调用升级为智能体服务,已成为现代 PHP 后端开发者应对未来技术演进的必修课。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐