首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >别让 Python 称霸!PHP 才是 AI 时代的黑马

别让 Python 称霸!PHP 才是 AI 时代的黑马

作者头像
Tinywan
发布2026-07-01 16:36:48
发布2026-07-01 16:36:48
460
举报
文章被收录于专栏:开源技术小栈开源技术小栈

概述

我用PHP写代码已经超过20年了。我看过它被宣布“已死”至少十几次。而每一次,它都继续支撑着越来越多的互联网。

所以当AI开始进入项目需求时,我没有转向Python。我没有购买某个工作流构建器的席位,也没有去上什么课程。我只是打开现有的代码库,写了一个服务,然后发起一个API调用。

就这样。这就是全部的解锁。你不需要花哨的GUI或复杂的系统。

没有人质疑的假设

Python主宰了AI领域。每个人都知道这一点。如果你正在训练模型、构建研究管道,或从事任何数据科学相关的工作,Python就是正确的工具。这点无需争辩。

但大多数团队没有问的是:你真的在训练模型吗?还是只是在调用API?

这两者是完全不同的问题。而如今大多数企业构建“AI功能”时做的都是后者。他们向Claude、GPT或Gemini发送提示,然后用响应做些有用的事。这就是一个REST调用。

REST调用是语言无关的。而PHP早在大多数AI初创公司出现之前,就已经在做REST调用了。

最适合工作的工具,通常就是已经在生产环境中运行的那个。

你已经拥有了整个技术栈

根据W3Techs的数据,PHP驱动了超过71%已知服务器端编程语言的网站。仅WordPress就占据了整个互联网的42%。再加上Laravel、Symfony、Magento、Craft CMS以及数千个自定义代码库,你就知道生产环境的Web软件实际在哪里了。

注:我还记得PHP刚出来的时候,那时我正淹没在Perl里,从那以后我就一直坚持用PHP!

对于CMS网站,我多年前从WordPress开始,后来有所迁移。但像AI Engine(超过80,000个活跃安装,完整MCP服务器支持,内置Claude和GPT集成)这样的插件,以及Automattic的AI Building Blocks计划推出的官方WordPress MCP Adapter,正在把WordPress变成一个真正的Agentic平台。很难忽视。

而生产环境的Web软件,正是AI Agent需要运行的地方。

AI行业不会告诉你的是:大多数“Agent”其实就是老派的服务。真的。去掉营销包装,一个典型的AI Agent就是一个接受输入、调用外部API、应用一些逻辑并返回输出的类。我们从2000年代早期就开始写这类东西了。

Agentic包装器在上面添加了规划、记忆和工具调用。这是真实的,也很重要。但底层模式对于任何在MVC框架中工作过的人来说并不陌生。

想想Agent在应用层实际做什么:它从数据库读取数据,调用外部API,处理表单提交,触发Webhook,队列任务,写回存储并返回响应。

PHP已经做了这些30年。你的认证系统已经在那里,你的数据库连接已经在那里,你的业务逻辑已经在那里。

那么,为什么要为你的PHP应用旁边启动一个Python微服务,在进程边界复制数据上下文,并引入一个全新的运行时来维护,就只是为了向LLM发一个HTTP请求呢?

其实,我知道原因。因为所有教程都展示Python。因为LangChain是Python的。因为AI讨论主要发生在被机器学习工程师主导的平台上,而他们很少接触日常的内容管理系统。

过度设计的的问题

我见过团队用AWS Bedrock来总结一个支持工单。我见过n8n工作流用了14个节点来完成本质上就是一个带条件逻辑的API调用。Make.com是连接SaaS应用的无代码神器,但它不是在你已经掌控的生产PHP应用中嵌入AI功能的正确答案。

这些平台存在是有理由的。但它们解决的是不同的问题。当你没有后端团队、只想粘合第三方服务时,或者你在Node/React栈上、JS是主要语言时(不是我的世界,但它在那儿工作得很好),它们很有意义。

但当你是一个PHP开发者,能写出下面代码时,它们就不合适了:

代码语言:javascript
复制
$client = new \GuzzleHttp\Client();

$response = $client->post('https://api.anthropic.com/v1/messages', [
    'headers' => [
        'x-api-key'         => $_ENV['ANTHROPIC_API_KEY'],
        'anthropic-version' => '2023-06-01', // 必需的header,告诉API使用哪个响应模式
        'content-type'      => 'application/json',
    ],
    'json' => [
        'model'      => 'claude-haiku-4-5-20251001',
        'max_tokens' => 1024,
        'messages'   => [
            ['role' => 'user', 'content' => 'Your prompt here!']
        ],
    ],
]);

$data = json_decode($response->getBody(), true);
$reply = $data['content'][0]['text'];

当然,这只是一个API调用,不是Agent。但它也是一个可工作的Claude集成。没有平台。没有月费席位。没有新基础设施。用Composer、Guzzle、一个API密钥,你就上线了。

生产环境中还需要加上错误处理、速率限制感知和重试逻辑,但这在任何语言中都一样,而且都不需要新技术栈。

复杂度是需要赚取的。大多数基于Web的Agent用例并不值得引入那么多复杂度。

那么,API调用和真正的Agent有什么区别?API调用等待响应并返回它。Agent会决定下一步做什么、调用工具、检查自己的输出,并循环直到任务完成。上面的Guzzle片段是一个坚实的基础。

真正改变的是什么

PHP为此做好准备,不仅仅是因为REST调用。语言本身已经显著进化了。

PHP 8.x引入了Fiber、类型化属性、命名参数、match表达式和枚举。Fiber支持单进程内的协作式调度,这很有用,但不是真正并发的替代方案。对于并行的Agent任务,通过Supervisor或Redis支持的队列Worker是实际的答案,而这个模式在PHP中已经非常成熟。

最重要的是,这一切都不需要改变你的技术栈。一个标准的LEMP设置就能轻松处理LLM API调用、队列Agent任务和Webhook驱动的工作流。这就是目前运行大多数生产PHP Web的同一栈,对于大多数Agentic用例来说已经绰绰有余。

如果你想更进一步,FrankenPHP和RoadRunner都提供了长生命周期Worker模式,能消除每个请求的启动开销,这对持久的Agent循环很重要。但这是一个优化,而不是前提。先构建Agent。如果工作负载需要,再优化运行时(很少需要)。

还有MCP。Anthropic的Model Context Protocol现在已被捐赠给Linux基金会,在Agentic AI Foundation下,由PHP Foundation维护的官方PHP SDK。它通过SSE或HTTP工作,能将你的PHP应用的工具原生暴露给任何支持MCP的AI客户端。这意味着PHP应用可以原生地向AI系统暴露工具,而不需要Python包装器或中间层。

PHP的Agent生态系统

那么,目前实际的PHP AI工具生态是什么样的?

Neuron AI 是PHP领域最成熟的专用Agent框架。由Inspector.dev团队构建,它提供了Agent基类、工具调用、RAG支持、多Agent编排和内置监控。它能在Laravel、Symfony、WordPress和轻量PHP框架上工作,而不会强制框架绑定。

以下是模式:一个带工具的Agent类。工具正是让它区别于普通API调用的地方——由Agent决定何时调用,而不是你的代码:

代码语言:javascript
复制
namespace App\Neuron;

use NeuronAI\Agent\Agent;
use NeuronAI\Agent\SystemPrompt;
use NeuronAI\Chat\Messages\UserMessage;
use NeuronAI\Providers\AIProviderInterface;
use NeuronAI\Providers\Anthropic\Anthropic;
use NeuronAI\Tools\PropertyType;
use NeuronAI\Tools\Tool;
use NeuronAI\Tools\ToolProperty;

class FitnessAgent extends Agent
{
    protectedfunction provider(): AIProviderInterface
    {
        returnnew Anthropic(
            key:   $_ENV['ANTHROPIC_API_KEY'],
            model: 'claude-haiku-4-5-20251001',
        );
    }

    protectedfunction instructions(): string
    {
        return (string) new SystemPrompt(
            background: ['You are a knowledgeable fitness assistant.'],
            steps:      ['Use available tools to look up workout plans before answering questions about them.'],
            output:     ['Give clear, practical guidance based on the workout data returned.']
        );
    }

    protectedfunction tools(): array
    {
        return [
            Tool::make('get_workout', 'Look up a workout plan by name or muscle group.')
                ->addProperty(
                    new ToolProperty(
                        name:        'workout_name',
                        type:        PropertyType::STRING,
                        description: 'The name or muscle group of the workout to retrieve.',
                        required:    true
                    )
                )
                ->setCallable(function (string $workout_name) {
                    // Your existing workout DB or API call here
                    $pdo  = new \PDO($_ENV['DB_DSN'], $_ENV['DB_USER'], $_ENV['DB_PASS']);
                    $stmt = $pdo->prepare("SELECT exercises, sets, reps FROM workouts WHERE name = ?");
                    $stmt->execute([$workout_name]);
                    $row  = $stmt->fetch(\PDO::FETCH_ASSOC);
                    return $row ? json_encode($row) : 'Workout not found.';
                }),
        ];
    }
}

$reply = FitnessAgent::make()
    ->chat(new UserMessage('How many sets should I do for a beginner chest workout?'))
    ->getMessage()
    ->getContent();

echo $reply;

Agent接收问题,判断需要get_workout工具,用提取出的肌肉群或计划名称调用它,然后将结果融入响应中。完全不需要你手动连接逻辑。这就是从API包装器到Agent的转变

除了Neuron,生态系统发展迅速。LLPhant提供了LangChain风格的方法。Prism作为Laravel项目的干净、提供者无关的接口正在获得关注。Symfony AI为Symfony生态带来了原生集成。

值得注意的是:这些都不需要重量级框架。Slim、Flight、F3、Phalcon和CodeIgniter等轻量PHP框架也能以最小开销干净地接入Agent服务。如果你的栈本来就很轻量,添加Agent层也不会改变这一点。

PHP中的RAG:比你想象的简单

检索增强生成(RAG)听起来很吓人。其实不然。其核心就是四个步骤:切分内容、生成嵌入、检索最相关的块,并注入到提示中。

Qdrant、Pinecone和Weaviate等向量数据库都暴露HTTP API。PHP能调用HTTP API。所以这样就行:

代码语言:javascript
复制
$openAiClient = OpenAI::client($_ENV['OPENAI_API_KEY']);
$guzzle = new \GuzzleHttp\Client();

$userQuery = $_POST['question'] ?? '';

// 1. 通过OpenAI生成嵌入
$embedding = $openAiClient->embeddings()->create([
    'model' => 'text-embedding-3-small',
    'input' => $userQuery,
])->embeddings[0]->embedding;

// 2. 查询Qdrant获取最近邻
$results = $guzzle->post('http://qdrant:6333/collections/docs/points/search', [
    'json' => [
        'vector'       => $embedding,
        'limit'        => 5,
        'with_payload' => true,
    ],
]);

// 3. 将检索到的上下文注入提示
$hits    = json_decode($results->getBody(), true)['result'];
$chunks  = array_map(fn($hit) => $hit['payload']['text'], $hits);
$context = implode("\n\n", $chunks);

$prompt = "Answer using this context:\n\n{$context}\n\nQuestion: {$userQuery}";

不需要Python。不需要编排层。只需HTTP和一点管道代码。

Python的王国,PHP的领地

我想明确一点:这篇文章不是在争论PHP应该取代Python在AI中的位置。这不是重点。

Python在模型训练、ML研究、数据科学管道、计算机视觉,以及任何涉及笔记本和数值计算的领域完胜。无可争议。该用Python就用Python。

但PHP的领地是生产Web层。而生产Web层正是大多数AI Agent实际会花费时间的地方:CRM、仪表盘、电商平台、CMS系统、管理面板和业务工作流工具中。

这一层已经是PHP的了。Agent也应该如此。

无脑选择的情况

我为医疗、法律、制造和电商等领域的客户构建过生产系统。添加AI功能时反复出现的挑战不是能力,而是上下文。你的Agent需要访问已认证的用户会话、数据库模式、业务规则和缓存层。

把这一切转移到外部Python服务不仅仅是开销,还是技术债务隐患。

PHP让Agent留在应用内部它该在的地方。上下文已经在那里。认证已经在那里。你维护多年的部署管道已经在那里。

而且坦白说?大部分互联网也都在那里。

你不需要Bedrock,不需要n8n,不需要让团队学习新语言。你需要的只是一个API密钥、一个服务类,以及你已经在生产环境中运行多年的PHP代码库。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 没有人质疑的假设
  • 你已经拥有了整个技术栈
  • 过度设计的的问题
  • 真正改变的是什么
  • PHP的Agent生态系统
  • PHP中的RAG:比你想象的简单
  • Python的王国,PHP的领地
  • 无脑选择的情况
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档