为什么用 PHP 写 AI Agent 而不是 Python
为什么选 Neuron方案学习成本生态兼容维护成本自己封装 LLM 工具调用高一般高直接用 Python LangChain低与 PHP 业务割裂高NeuronPHP低与 PHP 代码同仓库同部署中低我们选 Neuron 的理由很简单不用在 Python/PHP 间切换技术栈Agent 和业务逻辑共用数据库、缓存、鉴权、中间件团队都是 PHP 工程师上手成本几乎为 0。webman Neuronwebman 是什么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 服务一致运维几乎无新增心智负担。项目结构示例下面这个结构是你可以直接照抄的“最小可用项目骨架”。代码语言javascriptAI代码解释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代码语言javascriptAI代码解释composer require neuron-core/neuron-aiNeuron 提供了一个 Agent 基类你只需要继承并实现provider()指定 LLM 提供商和模型instructions()设置系统提示角色、背景、规则tools()注册可用工具/工具包第二步写一个“客服 Agent”的示例代码语言javascriptAI代码解释// 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代码语言javascriptAI代码解释// 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 编排层”。架构图代码语言javascriptAI代码解释┌───────────────────────────────────────────────────┐ │ Claude Code主 Agent │ │ - 任务拆解 │ │ - 最终审核 输出 │ └──────┬───────────────────────────────┬─────────────┘ │ │ ┌──────▼──────────┐ ┌─────────▼──────────┐ │ DataAnalysis │ │ CustomerService │ │ Agent │ │ Agent │ │ - SQL 查询 │ │ - 订单查询 │ │ - 报表生成 │ │ - 知识库问答 │ └─────────────────┘ └────────────────────┘ │ │ └───────────────┬───────────────┘ │ ┌────────▼─────────┐ │ Tools Agent │ │ - 通用计算 │ │ - 外部 API │ └──────────────────┘Orchestrator 示意伪代码代码语言javascriptAI代码解释// 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数据问答 自动出报表用户输入代码语言javascriptAI代码解释帮我统计最近 30 天的每日销售额并找出销量 Top 3 的商品。执行流程Claude Code主 Agent把用户需求拆成“查询 计算 排序 总结”几个子任务DataAnalysis Agent用 SQL 工具访问订单库拿到原始数据Tools Agent完成聚合、Top3 计算与格式化Claude Code把结果整理成自然语言报表返回。 关键点所有 Agent 都可以直接通过 ORM/Redis 访问同一个业务库避免了“Python 调 PHP 接口”的网络往返和鉴权问题。场景 2客服 工单流转用户输入代码语言javascriptAI代码解释我的订单 #12345 发货了吗如果没发帮我催一下。执行流程CustomerService Agent调用订单/物流工具查询状态Tools Agent根据规则触发内部 API 创建“催单工单”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 编排与工具管理这套栈完全可以撑住中小规模的生产流量。一个“风格对标”的对比表指标PHPPython优势启动时间常驻内存几无冷启动依依赖数量通常数百毫秒级PHP 更稳内存占用常驻几十 MB 级别通常上百 MBGIL 与 GC 抖动PHP 更省并发请求事件驱动 自定义进程asyncio / Uvicorn两者皆可部署复杂度单进程/多进程复用现有运维需要虚拟环境/依赖管理PHP 更简单业务集成与现有 PHP 代码同栈需跨语言/服务调用PHP 更紧密热重载不如 Python 方便改完代码即刻生效Python 更方便坦白讲Python 在“原型验证 生态丰富度”上依旧有优势。但在生产环境尤其是已有大量 PHP 业务资产的团队PHP webman Neuron 明显更舒服。