Python靠边儿,PHP才是AI代理领域的沉睡巨人

Python靠边儿,PHP才是AI代理领域的沉睡巨人 已使用PHP编程超20年, 亲眼目睹其至少被宣布消亡十几次, 然而每一次, 它都持续在互联网上发挥着愈发重要的作用。因此, 当人工智能着手进入项目需求范畴之际, 我并无选择余地。我亦未曾购置任何工作流构建设备, 亦未参与任何课程。我仅仅开启了我现有的代码库, 撰写了一个服务, 随后调用了API。就这般模样。这般便是所有的解锁方式——你无需花里胡哨的图形用户界面, 也无需繁杂的系统。无人质疑的假设称其在人工智能领域处于领先地位, 这是众人皆知之事。不管你是进行模型训练, 还是搭建研究流程, 又或是开展任何与数据科学有关的工作, 它都是最优之选。这一点根本无可质疑。但存在这样不少的团队, 他们没有去问过的问题是, 你们是不是在针对那模型展开一种训练动作, 又或者仅仅只是在借助那种 API 将其进行调用?由于这属于全然不同的问题, 当下多数构建“AI功能”的企业都在应对后者, 他们给GPT发送提示, 接着借助响应开展一些有用的行为, 这便是REST调用。REST 调用与编程语言无关。并且, 早在好多人工智能初创公司设立了漫长时间之前, PHP 便业已着手开展 REST 调用了。通常来讲, 最为适配这项工作的工具, 乃是已然于生产环境当中运行着的工具。您所拥有的技术堆栈依据相关数据, 于所有已知的服务器端编程语言的网站范围之内, 有着超越71%的网站是运用PHP来予以构建的。单单这一部分就占据了整个网站的42%。再额外加上其他相关内容、一些特定元素、某些特定情况、Craft CMS以及数千个自定义的代码库, 如此一来你便能够大概知晓生产环境里的网络软件到底运行于何处了。顺便说一下, 我清楚地记得PHP诞生的那个时刻, 当时我正深陷于对Perl的痴迷之中, 不过自那之后我就始终坚定地选用PHP对于内容管理系统网站, 我在几年前就已然开始运用, 然而后续却转向了别的平台。可是, 诸如 AI具备超 8 万个活跃 量, 完整兼容 MCP 服务器, 且内置了及 GPT 集成以及的 AI项目所推出的官方 MCP 这般的插件, 正促使打造成一个名副其实的智能体平台。这是不容小觑的。 需注意, 此处原句中存在部分未明确表述的内容, 以上改写是基于尽量完整意思进行的处理。句子最后的标点符号原句未明确指明, 这里暂且用句号。而生产环境的Web软件正是人工智能代理需要运行的地方。人工智能领域不会向你透露的是: 多数的“智能体”实际上就是传统意义上的服务。确实如此。抛却营销的名堂, 典型的人工智能智能体呀, 它是这样一种类别, 它会接纳输入, 还会调用外部的应用程序编程接口, 并且运用一些逻辑, 之后给出输出结果。我们自21世纪初期便着手编写这类服务了。在此基础之上, 代理封装层增添了规划功能, 增添了内存管理功能, 还增添了工具调用功能。这是确实存在的, 并且是至关重要的。然而其底层模式相对于任何使用过MVC框架的人而言都并非陌生的。思索下代理于应用层切实执行的行为, 它会从数据库获取数据, 调用外边的 API, 处理表单递交, 触发相关操作, 把任务添加到队列, 写回到存储并返回回应。在过去的三十年里, PHP完成了这些所有工作。你的身份验证系统已然存在着。你的数据库连接已然是存在着的。你的业务逻辑已然早已是存在着的了。那么, 为何要开启一个微服务, 使其与你的PHP应用程序一同并行运行, 跨越进程边界去复制你的数据上下文, 并且引入一个全新的运行时加以维护, 只是为了朝着LLM发出一个HTTP请求呢?说真的, 罢了。我晓得缘由了。鉴于全部教程采用的是……鉴于……便是……鉴于人工智能范畴的探讨主要聚焦于那些由机器学习工程师主导的平台之上, 然而他们鲜少触及日常的内容管理系统。过度杀伤问题我曾见到一些团队, 其目的在于汇总支持工单, 故而使用 AWS。还看见一些团队, 意图完成一种功能, 可实际上该功能惟独只需调用一回 API , 再增添些许条件逻辑, 为此搭建了 14 个节点的 n8n 工作量。它是个不用编写代码就能连接 SaaS 应用的出色工具, 然而它并非融入有 AI 功能于您已掌控的生产环境 PHP 应用里的最佳办法。这些平台存在是有其自身道理的, 然而它们所解决的是另外一个问题。当你有整合第三方服务但却不存在后端团队时, 或者当你运用 Node/React 技术栈并且 JS 是你的主导语言时候虽说这并非是我的专长之处, 但在那确实是可行的状态, 它们就具有相当的意义了。但要是你身为一名PHP开发者, 能写出这样的代码, 那这代码就毫无意义了$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, // required header -- tells the API which response schema // to use 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调用, 并非人工智能代理。然而它却是一个能够使用的集成。不需要平台, 不需要月租, 不需要新的基础设施。仅仅只要、以及一个API密钥, 便能够完全上线了。生产环境, 需在此基础之上, 增添错误处理, 增添速率限制感知, 增添重试逻辑, 不过这在任何的言语之中皆是这般, 并且全都是无需新的堆栈的应该由实际应用场景决定复杂性。大多数基于Web作为依托的代理用例没办法证实这一点。如此看来 , 这般情形同实在的智能体究竟存在怎样的差异呢? API调用会等候响应 , 进而返回结果。 然而智能体却能判定接下来该采取何种行动 , 调用工具 , 视察自身的输出 , 并且循环执行 , 直至任务达成。 上述的代码片段乃是一个稳固的根基。究竟发生了哪些变化不容忽视的要点在于: PHP针对于此的提前准备并非仅仅局限于REST调用方面。这一语言其自身已然历经了显著的改变。PHP 8.x 当中, 引入了纤程, 也就是 Fiber, 还引入了类型化属性, 此外还有命名参数, 以及匹配表达式, 以及枚举。纤程它支持在单个进程里面进行协作调度, 这虽说有用, 然而并不能够替代真正的并发。对于并行代理任务而言, 使用 或者基于 Redis 的库来对工作进程进行排队, 才是更具实际意义的解决方案, 这种模式在 PHP 里早就已经成熟了。并且, 这所有的种种都并不需要对你所运用的技术栈予以更改。标准的LEMP架构能够流畅地处置LLM API调用、排队的代理任务以及驱动的工作流。当下, 大部分处于生产环境的PHP Web应用运用的皆是相同的技术栈, 就大多数代理应用场景而言, 这是完全足够且有余的。要是还想着再往前迈进一步, 和都给出了长生命周期工作模式, 能够消除每次请求时的启动花费, 而这对持久代理循环来讲是非常关键的。不过这仅仅只是一种优化手段, 并非是必需的条件。首先去构建代理。要是工作负载有需求但这种情形是很少碰见的, 接着再对运行时进行优化。此外, 存在着 MCP, 模型上下文协议也就是 MCP, 如今它已献给 Linux 基金会被接纳, 并且是由 AI 基金会予以管理的MCP 有着那由 PHP 基金会去维护的官方 PHP SDK, 它能够支持 SSE 或者 HTTP 协议, 能够把 PHP 应用程序的工具展现在任何人所支持的 MCP 的 AI 客户端面前这就意味着 PHP 应用程序能够直接把工具呈现给 AI 系统 , 而并非是利用封装或者中间件层来传递。PHP代理生态系统那么目前 PHP AI 工具的实际发展状况如何呢最成熟的专用代理框架在PHP领域是AI , 它由打造原班人马的.dev组成 , 提供代理基类 , 支持红黄绿 (RAG) , 具备多代理编排 , 拥有内置监控功能以及工具调用 , 它能兼容精简的PHP框架这一框架 , 还有另外的框架有两个框架也能兼容 , 并且不会造成锁定框架。存在一种模式, 它是这样的, 有一个代理类在此模式里, 并且还附带了一个工具。此工具将会借此模式使其有别于普通的 API 调用。以这种模式是这样的, 代理会针对何时调用它做出决定, 可不是你的代码来决定何时调用它, 就是如此这般。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 { protected function provider ():AIProviderInterface { return new Anthropic ( key : $_ENV[ANTHROPIC_API_KEY], model: claude-haiku-4-5-20251001, ); } protected function 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.] ); } protected function 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;代理在接收到问题之后, 会去判断是否需要使用工具, 若需要则调用工具, 并且传入提取出的肌肉群或者训练计划名称, 随后把结果整合到响应里。这所有的一切都不需要您亲自去编写逻辑。这便是从API封装器到代理的那种转变。有着除了之外的情况, 整个生态系统呈现出发展迅速的态势, 提供了一种受到启发后形成的方法, Prism作为基于某个项目的具备简洁特性且与提供商没有关联的接口, 正慢慢地受到相应的关注, 而AI则把第一方集成引进到某个生态系统当中。需要留意的是: 这所有的情形都用不着庞大的架构。诸如 Slim、 、F3、 以及 这般的轻量级 PHP 框架能够凭借极低的花费简洁地融合代理服务。要是你的技术栈已然极为精简, 那么增添代理层也不会使这一状况发生改变。PHP 中的 RAG比你想象的要简短听起来很吓人的检索增强生成, 实际上并非如此。它的核心存在于四个步骤之中, 这四个步骤分别是, 把内容进行分块, 生成嵌入, 去检索最为相关的块, 并且将它们注入到提示里。向量数据库如 、 和 均提供了 HTTP API, PHP 会进行调用该 HTTP API , 故以下这般去做不存在问题。$openAiClient OpenAI::client ($_ENV[OPENAI_API_KEY]); $guzzle new \GuzzleHttp\Client (); $userQuery $_POST[question] ? ? ; // 1. Generate embedding via OpenAI $embedding $openAiClient - embeddings () - create ([ model text-embedding-3-small, input $userQuery, ]) - embeddings[0] - embedding; // 2. Query Qdrant for nearest neighbors $results $guzzle - post (http://qdrant:6333/collections/docs/points/search, [ json [ vector $embedding, limit 5, with_payload true, ], ]); // 3. Inject retrieved context into your prompt $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 };没有没有编排层只有HTTP和一些底层实现。的王国PHP 的领地要明确一点, 就是有要澄清的, 咱们这篇文章实际上并非是在论述PHP应当去替代应用于人工智能这个领域的某某事物 , 而这也绝非讨论本话题的关键。诸如模型训练, 机器学习研究, 数据科学流程, 计算机视觉, 还有任何涉及笔记本以及数值计算之类的领域当中, 它全都能够大获全胜, 这一点是毫无疑问的, 只要使用它, 那就绝对是正确无误的。然而, PHP 的长处所在是生产环境的 Web 层, 并且多数 AI 代理事实上都会于生产环境的 Web 层里运行, 诸如 CRM 系统、仪表盘、电子商务平台、CMS 系统、管理面板以及业务流程工具等。那一层, 已然是运用 PHP 所撰写而成的了, 代理程序, 同样应当借助 PHP 去进行编写。这根本不需要动脑子我曾给医疗保健行业、法律行业、智能制造行业以及电子商务等多种行业的客户搭建过基于 PHP 的生产系统, 在添加 AI 功能之际, 反复冒出来的难题并非功能自身, 而是上下文, 您的代理得去访问经过认证的用户会话 , 还得访问数据库架构, 也要访问业务规则以及缓存层。把所有的这些迁移至外部, 服务可不单单是增添开销, 更是一种技术方面的债务。PHP把代理程序放置于应用程序内部这个位置, 这位置才是它应在之处。上下文已然存在。身份验证已然存在。你多年维护的部署管道也已然有了。实话说, 互联网里的大多内容亦是这般。你用不着, 用不着n8n, 并且也无需团队简历里增添一门新语言了。你唯独需一个API密钥、一类服务, 还有你或许已然在生产环境里运行的PHP代码库。巨人从未睡着。其他人只是闭上了眼睛。