当前位置: 首页 > news >正文

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

我用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

AI代码解释

$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

AI代码解释

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

AI代码解释

$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留在应用内部它该在的地方。上下文已经在那里。认证已经在那里。你维护多年的部署管道已经在那里。而且坦白说?大部分互联网也都在那里。

http://www.jsqmd.com/news/1169445/

相关文章:

  • Python ebs-linuxnode-i18n 包详解:功能、安装、语法与实战案例
  • Neo4j Cypher 5.x 实战:3类复杂路径查询与性能调优对比
  • OpenCode终极指南:开源AI编程助手如何重塑开发工作流
  • PIC18微控制器与PAM8904构建智能音频报警系统
  • qmc-decoder深度解析:高效QMC音频解密工具的技术实现与实战应用
  • Apache Superset 定制开发:自定义可视化插件没那么难
  • 如何免费激活IDM:简单3步永久解锁下载加速神器终极教程
  • 纠删码 EC4+2:1 实战解析:3节点集群如何实现66.7%利用率与2盘容错
  • 2026年AI漫剧平台TOP梯队盘点
  • 电商比价监控的5个最佳SERP API(2026)
  • 纠删码 EC4+2:1 实战解析:3节点6硬盘配置,空间利用率66.7% vs 三副本
  • UE5 C++开发环境搭建:Visual Studio 2022配置全解析与避坑指南
  • TB6593FNG与PIC32MX直流电机控制系统设计与优化
  • Battery Toolkit:3步掌握Apple Silicon Mac电池健康管理秘诀
  • A3910与PIC18F4620电机控制方案解析
  • Navicat试用期重置终极指南:如何一键恢复14天免费试用
  • ai垂直模型权重差异
  • 露易丝·海的诗歌5
  • 【AI金融】某题库参考及答案解析(2026)
  • 如何在Windows 10/11上轻松扩展屏幕空间:虚拟显示器驱动终极指南
  • Wireshark 4.2 实战:5类CTF流量包隐写与协议分析技巧速通
  • 终极指南:使用Carnac键盘实时显示工具提升演示效率的7个技巧
  • K155ID1/SN74141 驱动芯片实测:65.7V vs 56.4V 耐压对比与辉光管应用误区
  • 3an推客超全常见问题答疑|电商运营新手必备实操指南
  • Executor-Advisor模式:用GPT-5.6+Fable 5实现低成本高效AI任务处理
  • 影刀RPA XPath语法入门:属性选择器精确定位元素
  • 如何免费解锁全网音乐:洛雪音乐音源终极配置指南
  • 豆包智能体停服倒计时:一键导出能实现吗?
  • 为什么CodeCombat让编程学习像玩游戏一样上瘾
  • Ubuntu VMware中的系统密码重置方法(带步骤图)