用PHP构建多智能体协作系统:打破Python垄断的AI开发实践

📅 2026/7/6 11:46:48
用PHP构建多智能体协作系统:打破Python垄断的AI开发实践
30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度最近几年每当讨论起现代AI应用开发尤其是像智能体Agent系统这样的前沿领域Python几乎是默认的“官方语言”。从LangChain到AutoGen从OpenAI的API到各种向量数据库的SDK生态几乎被Python垄断。这导致了一个普遍的认知PHP那不是做网站的吗搞AI、玩多智能体是不是有点“不务正业”今天这篇文章就想打破这个刻板印象。我最近用纯PHP从零构建了一个功能完整的多智能体协作系统。它不仅能理解复杂任务、拆分子目标、调用工具还能让多个智能体之间进行对话和协作。更重要的是整个系统的架构清晰、性能可观并且在某些场景下其开发效率和部署简易性甚至让Python方案显得笨重。如果你是一名PHP开发者曾因生态问题对AI望而却步或者你好奇一门“传统”语言如何玩转现代AI架构那么这篇文章就是为你写的。我将不仅分享“如何做”更会深入剖析“为什么可以这么做”以及在这个过程中PHP暴露出的真实短板和带来的意外惊喜。1. 这篇文章真正要解决的问题PHP在AI时代的新角色首先明确一点本文的目的不是鼓吹“PHP宇宙第一”或者挑起语言之争。相反我想解决几个非常具体的问题认知纠偏AI应用开发不等于Python专属。智能体系统的核心是架构思想任务分解、工具调用、状态管理、协同流程而非特定语法。PHP完全有能力实现这些核心逻辑。生态破局PHP开发者如何利用现有生态Composer、强大的Web框架快速接入AI能力如通过HTTP客户端调用大模型API而不必切换整个技术栈。工程化优势展示在多智能体系统中智能体本身的“推理”只是冰山一角。更大的挑战在于工程化请求编排、错误处理、状态持久化、并发控制、API管理。这些恰恰是PHP在Web领域积累深厚的强项。提供一条可行的路径为那些业务主体是PHP如大型CMS、电商平台、SaaS服务但又急需嵌入AI能力的团队提供一个平滑、可控的集成方案避免微服务化带来的巨大架构复杂度。所以这篇文章的核心价值在于为你提供一个用PHP构建生产可用级多智能体系统的完整蓝图、实践代码和避坑指南。你将看到用curl发起AI请求用数组管理会话状态用队列处理异步任务这一切在PHP里是多么的自然。2. 基础概念与核心原理什么是多智能体系统在开始写代码之前我们必须统一认知。多智能体系统Multi-Agent System听起来高大上但其核心思想可以类比为一个高度自动化的项目团队。智能体Agent团队中的一个成员。他不是简单的“问答机器”而是一个具备特定技能如编程、写作、查询数据库、拥有短期记忆会话历史和明确目标完成分配的子任务的实体。任务Task需要完成的一个项目。例如“为公司官网写一篇关于新产品的博客文章并配上相应的社交媒体文案”。规划Planning团队项目经理的工作。将复杂的大任务拆解成有序的子任务例如[市场调研 - 大纲撰写 - 正文写作 - 文案润色 - 配图建议]。工具Tool团队成员可以使用的软件或技能。例如“搜索引擎工具”、“代码执行器”、“文件读写工具”、“数据库查询工具”。协同Collaboration团队成员之间的沟通。一个智能体完成工作后可以将结果和上下文传递给下一个智能体或者多个智能体共同讨论一个难题。一个典型的多智能体系统工作流程如下用户输入复杂任务 - 规划智能体拆解任务 - 调度器分配子任务给特定智能体 - 智能体调用工具执行 - 结果汇总/传递给下一个智能体 - ... - 最终结果输出给用户在这个流程中大模型LLM扮演着“团队成员的大脑”负责理解、推理和生成文本。而PHP则扮演着“公司的IT基础设施和行政管理系统”负责组织会议调度与路由提供办公软件工具调用管理档案状态持久化处理后勤HTTP通信、错误重试确保项目流程合规逻辑控制理解了这一点你就会明白用PHP来实现这套“管理系统”是再合适不过了。3. 环境准备与前置条件我们的目标是构建一个可运行的系统以下是必需的环境和组件。3.1 基础运行环境PHP: 版本 8.1。强烈推荐8.2或以上以获得更好的性能和新特性如readonly属性。Composer: PHP的依赖管理工具必须安装。Web服务器 (可选): Nginx/Apache。如果你打算提供HTTP API则需要。本地开发也可以用PHP内置服务器php -S localhost:8000。数据库 (可选): MySQL 5.7/PostgreSQL/Redis。用于持久化会话、任务状态和工具调用记录。3.2 核心依赖包我们将通过Composer引入几个关键的库来简化开发composer require guzzlehttp/guzzle # 强大的HTTP客户端用于调用大模型API composer require monolog/monolog # 日志记录便于调试和追踪智能体行为 composer require illuminate/collections # Laravel的集合库独立使用提供优雅的数组操作 composer require symfony/yaml # 用于读取YAML格式的智能体配置或工具定义3.3 大模型API访问权限这是智能体的“大脑”来源。你需要准备以下至少一项的API KeyOpenAI API: 最通用模型丰富GPT-3.5-Turbo, GPT-4。Azure OpenAI Service: 企业级与Azure生态集成。国内替代方案智谱AI、百度文心一言、阿里通义千问、月之暗面Kimi等提供的API服务。将API Key保存在环境变量中不要硬编码在代码里# 在项目根目录创建 .env 文件 OPENAI_API_KEYsk-your-secret-key-here OPENAI_BASE_URLhttps://api.openai.com/v1 # 如果使用第三方代理或Azure需修改4. 核心流程拆解与架构设计我们的系统将遵循模块化设计主要包含以下核心组件Agent智能体基础类封装与大模型的交互、消息历史管理。Tool工具抽象基类所有可调用工具如搜索、计算、文件操作的父类。Planner规划器负责将用户目标拆解为任务链。Orchestrator编排器系统的中枢管理智能体生命周期、任务调度和结果汇总。Memory记忆负责存储和检索会话历史、任务状态。让我们从最核心的Agent类开始构建。5. 完整示例与代码实现5.1 第一步构建基础智能体Agent类这个类是所有智能体的基石它处理与大模型的对话。// 文件路径src/Core/Agent.php ?php namespace App\Core; use GuzzleHttp\Client; use GuzzleHttp\Exception\GuzzleException; use Psr\Log\LoggerInterface; class Agent { protected string $name; protected string $role; protected string $instruction; // 系统指令定义智能体角色和能力 protected array $messages []; // 对话消息历史 protected Client $httpClient; protected LoggerInterface $logger; protected string $model gpt-3.5-turbo; protected float $temperature 0.7; public function __construct(string $name, string $role, string $instruction, Client $httpClient, LoggerInterface $logger) { $this-name $name; $this-role $role; $this-instruction $instruction; $this-httpClient $httpClient; $this-logger $logger; // 初始化系统消息 $this-addSystemMessage($instruction); } protected function addSystemMessage(string $content): void { $this-messages[] [role system, content $content]; } public function addUserMessage(string $content): void { $this-messages[] [role user, content $content]; } public function addAssistantMessage(string $content): void { $this-messages[] [role assistant, content $content]; } /** * 核心方法向大模型发送请求并获取回复 */ public function think(string $userInput): string { $this-addUserMessage($userInput); $requestData [ model $this-model, messages $this-messages, temperature $this-temperature, ]; try { $response $this-httpClient-post($_ENV[OPENAI_BASE_URL] . /chat/completions, [ headers [ Authorization Bearer . $_ENV[OPENAI_API_KEY], Content-Type application/json, ], json $requestData, timeout 60.0, // AI请求可能较慢 ]); $body json_decode($response-getBody()-getContents(), true); $assistantReply $body[choices][0][message][content] ?? ; $this-addAssistantMessage($assistantReply); $this-logger-info(Agent {$this-name} received reply, [reply $assistantReply]); return $assistantReply; } catch (GuzzleException $e) { $this-logger-error(Agent {$this-name} API call failed, [error $e-getMessage()]); throw new \RuntimeException(Failed to get response from LLM: . $e-getMessage()); } } // 获取最近N轮对话用于控制上下文长度 public function getRecentMessages(int $limit 10): array { return array_slice($this-messages, -$limit * 2); // 假设每轮包含user和assistant各一条 } public function getName(): string { return $this-name; } public function getRole(): string { return $this-role; } }关键点解析think方法是核心它封装了HTTP请求、JSON编解码和错误处理。使用GuzzleHttp\Client进行网络请求这是PHP生态中最稳定、功能最全的HTTP客户端。消息历史$messages维护了完整的对话上下文这是智能体拥有“记忆”的关键。引入了LoggerInterface所有关键操作和错误都有日志这对调试复杂多步任务至关重要。5.2 第二步定义可执行工具Tool工具是智能体延伸能力的“手脚”。我们先定义一个抽象基类然后实现几个具体工具。// 文件路径src/Core/Tool.php ?php namespace App\Core; abstract class Tool { protected string $name; protected string $description; protected array $parameters; // 参数定义 public function __construct(string $name, string $description, array $parameters []) { $this-name $name; $this-description $description; $this-parameters $parameters; } abstract public function execute(array $args): string; public function getName(): string { return $this-name; } public function getDescription(): string { return $this-description; } public function getParameters(): array { return $this-parameters; } // 生成供大模型识别的工具描述遵循OpenAI Function Calling格式 public function toFunctionCallArray(): array { return [ type function, function [ name $this-name, description $this-description, parameters [ type object, properties $this-parameters, required array_keys(array_filter($this-parameters, fn($param) $param[required] ?? false)), ], ], ]; } }现在实现两个简单的工具一个计算器一个获取当前时间的工具。// 文件路径src/Tools/CalculatorTool.php ?php namespace App\Tools; use App\Core\Tool; class CalculatorTool extends Tool { public function __construct() { parent::__construct( calculator, 执行简单的数学计算支持加()、减(-)、乘(*)、除(/), [ expression [ type string, description 数学表达式例如3 5 * (2 - 1), required true, ], ] ); } public function execute(array $args): string { $expression $args[expression] ?? ; // 安全警告在生产环境中必须对表达式进行严格过滤和校验防止代码注入。 // 这里仅为演示使用eval是极其危险的。应使用安全的数学表达式解析库。 // 例如composer require litipk/php-bignumbers 或自行实现解析。 set_error_handler(fn() null); $result eval(return . $expression . ;); restore_error_handler(); if ($result null) { return 错误无法计算表达式 {$expression}。; } return 计算结果{$expression} {$result}; } }// 文件路径src/Tools/CurrentTimeTool.php ?php namespace App\Tools; use App\Core\Tool; class CurrentTimeTool extends Tool { public function __construct() { parent::__construct( get_current_time, 获取当前的日期和时间, [ format [ type string, description 时间格式例如 Y-m-d H:i:s, required false, ], ] ); } public function execute(array $args): string { $format $args[format] ?? Y-m-d H:i:s; return date($format); } }5.3 第三步创建具备工具调用能力的增强型智能体基础Agent只能对话我们需要一个能理解并调用工具的ToolAgent。// 文件路径src/Core/ToolAgent.php ?php namespace App\Core; class ToolAgent extends Agent { /** var Tool[] */ protected array $tools []; /** * param Tool[] $tools */ public function __construct(string $name, string $role, string $instruction, array $tools, Client $httpClient, LoggerInterface $logger) { parent::__construct($name, $role, $instruction, $httpClient, $logger); $this-tools $tools; } public function thinkAndAct(string $userInput): string { $this-addUserMessage($userInput); $finalReply ; // 限制循环次数防止无限递归 for ($i 0; $i 5; $i) { $llmResponse $this-callLLMWithTools(); $parsedAction $this-parseLlmResponseForAction($llmResponse); if ($parsedAction[type] final_answer) { $finalReply $parsedAction[content]; $this-addAssistantMessage($finalReply); break; } elseif ($parsedAction[type] tool_call) { $toolName $parsedAction[tool_name]; $toolArgs $parsedAction[arguments]; $toolResult $this-executeTool($toolName, $toolArgs); // 将工具执行结果作为上下文再次发送给LLM $this-addSystemMessage(Tool {$toolName} returned: {$toolResult}); } else { $finalReply 抱歉我无法处理这个请求。; break; } } return $finalReply ?: 已达到最大思考步骤未能得出最终结论。; } private function callLLMWithTools(): string { $requestData [ model $this-model, messages $this-messages, temperature $this-temperature, tools array_map(fn(Tool $tool) $tool-toFunctionCallArray(), $this-tools), tool_choice auto, ]; // ... 发送HTTP请求类似基础Agent的think方法但包含tools参数 // 返回LLM的原始响应文本或结构化数据 // 为简化示例此处省略具体HTTP请求代码假设返回一个包含思考和工具调用建议的JSON字符串。 // 实际应调用支持Function Calling的API端点。 } private function parseLlmResponseForAction(string $llmResponse): array { // 解析LLM返回的JSON判断是直接回答还是调用工具。 // 这是一个简化的解析逻辑。实际应处理OpenAI API返回的规范结构。 $data json_decode($llmResponse, true); if (isset($data[tool_calls])) { return [ type tool_call, tool_name $data[tool_calls][0][function][name], arguments json_decode($data[tool_calls][0][function][arguments], true), ]; } else { return [ type final_answer, content $data[choices][0][message][content] ?? $llmResponse, ]; } } private function executeTool(string $toolName, array $args): string { foreach ($this-tools as $tool) { if ($tool-getName() $toolName) { $this-logger-info(Agent {$this-name} executing tool, [tool $toolName, args $args]); return $tool-execute($args); } } return 错误未找到工具 {$toolName}。; } }5.4 第四步构建多智能体编排器Orchestrator这是系统的大脑负责创建智能体、分配任务和管理对话流。// 文件路径src/Core/Orchestrator.php ?php namespace App\Core; use Psr\Log\LoggerInterface; class Orchestrator { /** var Agent[] */ protected array $agents []; protected LoggerInterface $logger; public function __construct(LoggerInterface $logger) { $this-logger $logger; } public function registerAgent(Agent $agent): void { $this-agents[$agent-getName()] $agent; $this-logger-info(Agent registered, [agent $agent-getName()]); } /** * 处理一个多步骤的复杂任务 */ public function handleComplexTask(string $userQuery): string { $this-logger-info(Orchestrator handling task, [query $userQuery]); // 1. 任务规划 - 这里简化实际可以使用一个专门的Planner智能体 // 假设我们根据关键词简单分配任务 if (strpos($userQuery, 计算) ! false || strpos($userQuery, 算一下) ! false) { $agentName math_expert; $task 请解决这个数学问题{$userQuery}; } elseif (strpos($userQuery, 时间) ! false || strpos($userQuery, 日期) ! false) { $agentName time_keeper; $task 请提供时间相关信息{$userQuery}; } else { $agentName general_assistant; $task $userQuery; } // 2. 任务执行 if (!isset($this-agents[$agentName])) { return 错误没有找到合适的智能体来处理此任务。; } $selectedAgent $this-agents[$agentName]; $this-logger-info(Task assigned to agent, [agent $agentName, task $task]); // 3. 获取结果 if ($selectedAgent instanceof ToolAgent) { $result $selectedAgent-thinkAndAct($task); } else { $result $selectedAgent-think($task); } $this-logger-info(Task completed, [agent $agentName, result $result]); return $result; } /** * 更复杂的编排智能体间对话Sequential Chat */ public function sequentialChat(string $userQuery): string { // 例如让一个智能体写代码另一个智能体审查代码 $coder $this-agents[coder] ?? null; $reviewer $this-agents[reviewer] ?? null; if (!$coder || !$reviewer) { return 需要注册coder和reviewer两个智能体。; } $this-logger-info(Starting sequential chat, [query $userQuery]); // 第一步程序员写代码 $code $coder-think(请为以下需求编写PHP代码{$userQuery}); $this-logger-info(Coder generated code, [code_snippet substr($code, 0, 200)]); // 第二步审查员审查代码 $review $reviewer-think(请审查以下PHP代码指出潜在问题和改进建议\nphp\n{$code}\n); $this-logger-info(Reviewer provided feedback, [feedback $review]); // 第三步将审查意见反馈给程序员可选 $finalCode $coder-think(根据审查意见修改代码。原始需求{$userQuery}。审查意见{$review}); return **生成的代码**\nphp\n{$finalCode}\n\n\n**审查意见**\n{$review}; } }6. 运行结果与效果验证让我们编写一个简单的脚本来启动整个系统并测试。首先创建一个依赖注入容器或简单的工厂来组装所有组件这里为简化直接写在入口文件。// 文件路径public/index.php ?php require_once __DIR__ . /../vendor/autoload.php; use App\Core\Orchestrator; use App\Core\ToolAgent; use App\Tools\CalculatorTool; use App\Tools\CurrentTimeTool; use GuzzleHttp\Client; use Monolog\Logger; use Monolog\Handler\StreamHandler; // 1. 初始化基础组件 $logger new Logger(multi-agent); $logger-pushHandler(new StreamHandler(__DIR__ . /../logs/app.log, Logger::DEBUG)); $httpClient new Client(); // 2. 创建工具 $calculatorTool new CalculatorTool(); $timeTool new CurrentTimeTool(); // 3. 创建具备工具调用能力的智能体 $mathExpert new ToolAgent( math_expert, 数学专家, 你是一个专业的数学助手擅长使用计算器工具解决各种数学问题。请先思考如果需要计算就调用工具。, [$calculatorTool], $httpClient, $logger ); $timeKeeper new ToolAgent( time_keeper, 时间管家, 你是一个时间管理助手可以获取当前精确的时间。, [$timeTool], $httpClient, $logger ); // 4. 创建通用智能体无工具 $generalAssistant new \App\Core\Agent( general_assistant, 通用助手, 你是一个乐于助人的AI助手回答各种常识性问题。, $httpClient, $logger ); // 5. 创建编排器并注册智能体 $orchestrator new Orchestrator($logger); $orchestrator-registerAgent($mathExpert); $orchestrator-registerAgent($timeKeeper); $orchestrator-registerAgent($generalAssistant); // 6. 处理用户查询 echo 多智能体PHP系统演示 \n\n; $testQueries [ 计算一下圆的面积如果半径是5。, 现在北京时间是什么, 请解释一下什么是多智能体系统。, ]; foreach ($testQueries as $query) { echo 用户提问{$query}\n; $start microtime(true); $response $orchestrator-handleComplexTask($query); $time round((microtime(true) - $start) * 1000, 2); echo 系统回答{$response}\n; echo 耗时{$time}ms\n; echo str_repeat(-, 50) . \n; }运行这个脚本cd /path/to/your/project php public/index.php预期输出示例 多智能体PHP系统演示 用户提问计算一下圆的面积如果半径是5。 系统回答计算结果3.1415926535898 * 5 * 5 78.539816339745 耗时1250ms -------------------------------------------------- 用户提问现在北京时间是什么 系统回答当前时间是2024-05-27 14:30:15 耗时980ms -------------------------------------------------- 用户提问请解释一下什么是多智能体系统。 系统回答多智能体系统Multi-Agent System, MAS是由多个自治或半自治的智能体组成的计算系统...此处为LLM生成的解释 耗时1100ms --------------------------------------------------同时查看logs/app.log文件你会看到详细的执行日志记录了智能体的注册、任务分配、工具调用和API请求这对于调试复杂流程至关重要。7. 常见问题与排查思路在构建和运行PHP多智能体系统时你可能会遇到以下典型问题问题现象可能原因排查方式解决方案API调用失败返回401或403API Key错误、过期或请求地址不正确。1. 检查.env文件中的OPENAI_API_KEY和OPENAI_BASE_URL。2. 使用curl或Postman手动测试API端点。3. 查看Guzzle抛出的异常信息。1. 重新生成并更新API Key。2. 确保Base URL正确注意Azure OpenAI的端点格式不同。3. 检查账户余额或配额。智能体陷入循环不停调用工具工具调用结果未能让LLM满意或LLM的tool_choice参数设置不当。1. 查看日志中thinkAndAct的循环次数。2. 检查LLM返回的tool_calls结构是否被正确解析。3. 检查工具描述是否清晰。1. 在thinkAndAct方法中设置最大循环次数如5次。2. 优化系统指令instruction明确告知LLM何时停止。3. 在工具执行后给LLM的上下文中加入更明确的停止提示。上下文长度超限对话历史$messages数组过长超过了模型的最大token限制。1. 监控$messages数组的大小。2. API返回错误信息中常包含context_length_exceeded。1. 实现getRecentMessages方法只保留最近N轮对话。2. 对历史消息进行摘要Summarization这是一个进阶功能。工具执行出错或结果不符合预期工具execute方法内部逻辑错误或LLM传递的参数格式错误。1. 在工具的execute方法内增加详细日志。2. 检查parseLlmResponseForAction解析出的参数是否正确。1. 加强工具内部参数的验证和类型转换。2. 为工具提供更精确的参数描述description和parameters。特别注意像CalculatorTool中使用eval是极不安全的必须替换为安全的数学表达式解析器。系统响应速度慢1. 网络延迟高。2. LLM模型本身响应慢如GPT-4。3. 串行调用多个智能体或工具。1. 使用日志记录每个步骤的耗时。2. 检查服务器到API服务的网络状况。1. 对于非严格顺序的任务考虑使用PHP的异步特性如reactphp或amp并发调用。2. 考虑使用更快的模型如GPT-3.5-Turbo进行任务规划和简单推理。3. 实现缓存机制对相同或相似的查询缓存LLM回复。内存消耗过大1. 长时间运行消息历史未清理。2. 大型对象如智能体未及时销毁。1. 使用memory_get_usage()监控内存。2. 检查是否有全局变量长期持有大量数据。1. 定期清理无用的会话和消息历史。2. 在CLI脚本中考虑分批次处理任务每批结束后用gc_collect_cycles()主动触发垃圾回收。8. 最佳实践与工程建议将原型发展为可投入生产环境的系统需要考虑更多工程化因素配置化管理将智能体的角色、指令、可用工具、模型参数等提取到YAML或JSON配置文件中。这样无需修改代码即可调整智能体行为。# config/agents/math_expert.yaml name: math_expert role: 数学专家 instruction: 你是一个专业的数学助手擅长使用计算器工具解决各种数学问题。 请先思考如果需要计算就调用工具。最终答案应清晰明了。 model: gpt-3.5-turbo temperature: 0.3 tools: - calculator状态持久化对于长时间运行的会话如聊天机器人需要将会话历史$messages保存到数据库如Redis或MySQL。可以为每个会话生成唯一ID。异步与队列复杂的多步任务可能耗时很长。应该将任务推入消息队列如RabbitMQ、Redis Queue、Beanstalkd由后台Worker进程处理并通过WebSocket或轮询向用户返回结果。PHP的laravel-queue或symfony/messenger组件是很好的选择。可观测性除了日志集成监控指标如Prometheus。记录每个智能体的调用次数、成功率、平均响应时间、Token消耗量。这对于成本控制和性能优化至关重要。工具安全这是重中之重。任何由LLM触发、在服务器上执行的操作都必须经过沙箱化或严格的白名单校验。绝不使用eval、shell_exec等危险函数。文件操作工具应限制在特定目录。数据库查询工具应使用参数化查询防止SQL注入。考虑为工具执行创建独立的、权限受限的运行时环境。测试策略单元测试针对每个Tool的execute方法。集成测试模拟LLM API响应测试Agent和Orchestrator的逻辑流。端到端测试使用真实的API Key但设置低限额测试完整流程。成本优化使用更便宜的模型处理简单任务。对提示词Prompt进行压缩和优化减少不必要的Token消耗。实现对话摘要用摘要替代完整历史上下文。与现有PHP项目集成如果你有一个Laravel或Symfony项目可以将智能体系统封装成Service Provider或Bundle。通过依赖注入来管理智能体和工具轻松地在控制器或命令中调用。9. 总结与后续学习方向通过以上步骤我们成功地用纯PHP构建了一个具备核心功能的多智能体系统。它证明了语言不是壁垒AI应用的核心逻辑状态机、任务调度、API通信用任何主流语言都能实现。PHP生态足够强大Composer、Guzzle、Monolog等库提供了坚实的地基让开发者能专注于业务逻辑。工程化是优势在构建稳定、可维护、可观测的生产系统方面PHP及其成熟框架的经验可以直接复用。当然这个示例是入门级的。要构建更强大的系统你可以沿着以下方向深入实现真正的动态规划Planner用一个专门的“规划智能体”来分析用户目标并生成复杂的任务流程图DAG而不仅仅是关键词匹配。引入向量数据库为智能体配备长期记忆使其能记住过去对话的关键信息或从知识库中检索相关内容。可以集成chromadb的PHP客户端或Milvus的SDK。探索智能体间更复杂的协议如合同网协议Contract Net、黑板模型Blackboard实现竞标、协商等高级协作行为。集成视觉/语音模型通过多模态API让智能体不仅能处理文本还能分析图片、生成语音打造更丰富的交互体验。深入研究提示工程Prompt Engineering精心设计的系统指令instruction是智能体表现好坏的关键。这是成本最低的性能提升手段。这个项目的全部代码只是一个起点。它的价值在于为你打开了一扇门在你不必离开熟悉的PHP生态的前提下依然能够深入探索并构建现代化的AI原生应用。下次当有人再说“PHP做不了AI”时你不仅可以反驳还可以直接展示一个运行着的、由PHP驱动的智能体团队。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度