首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >为什么用 PHP 写 AI Agent 而不是 Python

为什么用 PHP 写 AI Agent 而不是 Python

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

自恋一下

2026 年了,用 PHP 写 AI Agent,可能比 Python 更香。

Neuron AI

什么是 Neuron?

Neuron 是面向 PHP 的「Agentic 框架」,用来创建与编排 AI Agent,并提供 LLM 接口、数据加载、多 Agent 编排、RAG、监控与调试等完整生命周期支持。 说白了,它就是 PHP 的「LangChain/LlamaIndex 级存在」,但专为 PHP 工程师设计。

  • 支持多 LLM:Anthropic、OpenAI、Gemini、XAI、Bedrock、Azure 等,一行代码切换提供商
  • 内置工具包:计算器、SQL 查询、API 集成等,也支持自定义工具
  • 兼容主流 PHP 框架:Laravel、Symfony、WordPress,或你自己的 MVC

为什么选 Neuron?

方案

学习成本

生态兼容

维护成本

自己封装 LLM + 工具调用

一般

直接用 Python LangChain

与 PHP 业务割裂

Neuron(PHP)

与 PHP 代码同仓库同部署

中低

我们选 Neuron 的理由很简单:

  • 不用在 Python/PHP 间切换技术栈;
  • Agent 和业务逻辑共用数据库、缓存、鉴权、中间件;
  • 团队都是 PHP 工程师,上手成本几乎为 0。

webman + Neuron

webman 是什么?

webman 是基于 Workerman 的高性能 PHP Web 框架,支持 HTTP / WebSocket / TCP / UDP,并采用常驻内存、协程、连接池等技术,把 PHP 的性能天花板抬高了不止一个档次。 关键特性:

  • 常驻内存:避免 PHP-FPM 请求—重启的重复开销;
  • 高性能:官方与第三方压测显示,带 DB 查询时,webman 的单机吞吐可达数十万 QPS,远超传统 PHP-FPM 框架;
  • 自定义进程:可以在同一进程组里跑监听、队列、定时任务、Agent 调度等长期进程;
  • 二进制打包:支持打包成 phar,甚至在部分场景可以“不依赖 PHP 源码运行”。 把这些能力用在 AI Agent 上,意味着:
  • Agent 和 HTTP API、WebSocket、业务系统可以“同居一个进程/服务器”;
  • 工具调用、RAG、多 Agent 编排可以直接访问本地 ORM/Redis,无跨服务延迟;
  • 扩容方式与普通 Web 服务一致,运维几乎无新增心智负担。

项目结构示例

下面这个结构是你可以直接照抄的“最小可用项目骨架”。

代码语言:javascript
复制
php-neuron-agent/
├── app/
│   ├── controller/
│   │   └── AgentController.php   # HTTP 入口
│   ├── agent/
│   │   ├── Orchestrator.php      # 多 Agent 编排/调度
│   │   └── agents/
│   │       ├── CustomerServiceAgent.php
│   │       ├── DataAnalysisAgent.php
│   │       └── ToolsAgent.php
│   └── middleware/
├── config/
│   ├── neuron.php
│   ├── database.php
│   └── redis.php
├── public/
│   └── index.php
├── process/
│   └── AgentMonitor.php          # webman 自定义进程(可选:Agent 监控/队列)
├── composer.json
├── Dockerfile
└── docker-compose.yml

第一步:引入 Neuron

代码语言:javascript
复制
composer require neuron-core/neuron-ai

Neuron 提供了一个 Agent 基类,你只需要继承并实现:

  • provider():指定 LLM 提供商和模型
  • instructions():设置系统提示(角色、背景、规则)
  • tools():注册可用工具/工具包

第二步:写一个“客服 Agent”的示例

代码语言:javascript
复制
// app/agent/agents/CustomerServiceAgent.php
namespace app\agent\agents;
use NeuronAI\Agent;
use NeuronAI\Chat\Messages\UserMessage;
use NeuronAI\SystemPrompt;
use NeuronAI\Providers\Anthropic\Anthropic;
use NeuronAI\Providers\AIProviderInterface;
use NeuronAI\Tools\Toolkits\CalculatorToolkit;
class CustomerServiceAgent extends Agent
{
    protectedfunction provider(): AIProviderInterface
    {
        // 一行切换 Anthropic/OpenAI/Gemini 等
        returnnew Anthropic(
            env('ANTHROPIC_API_KEY'),
            'claude-4-5-sonnet'
        );
    }
    publicfunction instructions(): string
    {
        return (string) new SystemPrompt(
            background: [
                '你是一个友好的客服助手。'.
                '基于公司知识库与订单数据回答问题,语气专业且简洁。'
            ]
        );
    }
    publicfunction tools(): array
    {
        return [
            CalculatorToolkit::make(),       // 计算类工具
            // OrderToolkit::make(),          // 自定义订单查询工具
            // KnowledgeBaseToolkit::make(), // 自定义 RAG 工具
        ];
    }
}

第三步:在 webman 控制器里调用 Agent

代码语言:javascript
复制
// app/controller/AgentController.php
namespace app\controller;
use support\Request;
use app\agent\agents\CustomerServiceAgent;
use NeuronAI\Chat\Messages\UserMessage;
class AgentController
{
    publicfunction chat(Request $request)
    {
        $q = $request->input('question', '');
        $agent = CustomerServiceAgent::make();
        $response = $agent->chat(new UserMessage($q));
        return json([
            'answer' => $response->getMessage()->getContent(),
        ]);
    }
}

如果你愿意,也可以通过 webman 的自定义进程,把 Agent 调度做成后台长期服务(监听队列、定时触发等),与 HTTP 服务共享同一套基础设施。

多 Agent 协作架构(Orchestrator)

当业务变复杂时,通常需要多个“专职 Agent + 编排层”。

架构图

代码语言:javascript
复制
┌───────────────────────────────────────────────────┐
│                 Claude Code(主 Agent)             │
│  - 任务拆解                                       │
│  - 最终审核 & 输出                                │
└──────┬───────────────────────────────┬─────────────┘
       │                               │
┌──────▼──────────┐          ┌─────────▼──────────┐
│  DataAnalysis   │          │   CustomerService  │
│  Agent          │          │   Agent            │
│  - SQL 查询     │          │  - 订单查询        │
│  - 报表生成     │          │  - 知识库问答      │
└─────────────────┘          └────────────────────┘
       │                               │
       └───────────────┬───────────────┘
                       │
              ┌────────▼─────────┐
              │   Tools Agent    │
              │   - 通用计算     │
              │   - 外部 API     │
              └──────────────────┘

Orchestrator 示意(伪代码)

代码语言:javascript
复制
// app/agent/Orchestrator.php
namespace app\agent;
use app\agent\agents\DataAnalysisAgent;
use app\agent\agents\CustomerServiceAgent;
use NeuronAI\Chat\Messages\UserMessage;
class Orchestrator
{
    publicfunction run(string $userRequest): array
    {
        // 1)用主 Agent 拆解任务(可用 Claude/GPT 等)
        // 2)根据任务类型,分发给不同子 Agent
        // 3)并行/串行执行
        // 4)汇总结果,交给主 Agent 再做最终审核 & 输出
        // 示例:简单串行
        $serviceAgent = CustomerServiceAgent::make();
        $analysisAgent = DataAnalysisAgent::make();
        $serviceRes = $serviceAgent->chat(new UserMessage($userRequest));
        $analysisRes = $analysisAgent->chat(new UserMessage($userRequest));
        return [
            'customer_service' => $serviceRes->getMessage()->getContent(),
            'data_analysis'    => $analysisRes->getMessage()->getContent(),
        ];
    }
}

真实项目里,你可以用 webman 的异步/队列能力把子任务做成并行,以提升整体吞吐。

实战场景

场景 1:数据问答 + 自动出报表

用户输入:

代码语言:javascript
复制
帮我统计最近 30 天的每日销售额,并找出销量 Top 3 的商品。

执行流程:

  1. Claude Code(主 Agent):把用户需求拆成“查询 + 计算 + 排序 + 总结”几个子任务;
  2. DataAnalysis Agent:用 SQL 工具访问订单库,拿到原始数据;
  3. Tools Agent:完成聚合、Top3 计算与格式化;
  4. Claude Code:把结果整理成自然语言报表返回。 关键点:所有 Agent 都可以直接通过 ORM/Redis 访问同一个业务库,避免了“Python 调 PHP 接口”的网络往返和鉴权问题。

场景 2:客服 + 工单流转

用户输入:

代码语言:javascript
复制
我的订单 #12345 发货了吗?如果没发,帮我催一下。

执行流程:

  1. CustomerService Agent:调用订单/物流工具,查询状态;
  2. Tools Agent:根据规则触发内部 API 创建“催单工单”;
  3. Claude Code:根据返回结果,生成“人话”回复给用户。 因为所有逻辑都在同一个 PHP 项目里,你可以直接复用原有的事件/消息队列体系,不需要为 Agent 单独造一套。

性能对比

为什么说“PHP 也能很能打”?

  • webman 官方与第三方压测:带 DB 查询时,webman 的单机吞吐可达 39 万 QPS,比传统 PHP-FPM 架构高出近 80 倍;
  • webman 还宣称在部分场景下,性能高于 Go 的 gin/echo 等框架约 1 倍;
  • PHP 8.x 的 JIT 在 CPU 密集型计算上也有明显提升。 结合 Neuron 的多 Agent 编排与工具管理,这套栈完全可以撑住中小规模的生产流量。

一个“风格对标”的对比表

指标

PHP

Python

优势

启动时间

常驻内存,几无冷启动

依依赖数量,通常数百毫秒级

PHP 更稳

内存占用

常驻几十 MB 级别

通常上百 MB,GIL 与 GC 抖动

PHP 更省

并发请求

事件驱动 + 自定义进程

asyncio / Uvicorn

两者皆可

部署复杂度

单进程/多进程,复用现有运维

需要虚拟环境/依赖管理

PHP 更简单

业务集成

与现有 PHP 代码同栈

需跨语言/服务调用

PHP 更紧密

热重载

不如 Python 方便

改完代码即刻生效

Python 更方便

坦白讲,Python 在“原型验证 & 生态丰富度”上依旧有优势。但在生产环境,尤其是已有大量 PHP 业务资产的团队,PHP + webman + Neuron 明显更舒服

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自恋一下
  • Neuron AI
    • 什么是 Neuron?
    • 为什么选 Neuron?
  • webman + Neuron
    • webman 是什么?
  • 项目结构示例
    • 第一步:引入 Neuron
    • 第二步:写一个“客服 Agent”的示例
    • 第三步:在 webman 控制器里调用 Agent
  • 多 Agent 协作架构(Orchestrator)
    • 架构图
    • Orchestrator 示意(伪代码)
  • 实战场景
    • 场景 1:数据问答 + 自动出报表
    • 场景 2:客服 + 工单流转
  • 性能对比
    • 为什么说“PHP 也能很能打”?
    • 一个“风格对标”的对比表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档