如何用 PHP 建立多智能體系統
sistema multiagente en php
PHP 範例示範由多個專責 AI 智能體組成系統,透過共享上下文協作處理複雜任務,無須複雜的編排層。旅遊助理示例以智能體處理問題分類、天氣、航班及整合回答,回應內容為模擬結果;替換各智能體的內部邏輯後,可連接語言模型或外部 API。
sistema multiagente en php
En la inteligencia artificial, los sistemas multiagente están ganando cada vez más protagonismo. En lugar de depender de un único modelo o script monolítico, un sistema multiagente distribuye las responsabilidades entre varios componentes especializados, los agentes, que colaboran para resolver una tarea compleja.Cada agente tiene una función concreta y aporta su conocimiento o capacidad al conjunto. Esta arquitectura ofrece varias ventajas: Modularidad: es más fácil mantener y mejorar cada parte por separado. Especialización: cada agente puede centrarse en hacer bien una sola cosa. Escalabilidad: se pueden añadir nuevos agentes sin reescribir todo el sistema. Claridad: el flujo de trabajo resulta más fácil de entender y depurar. Escenario EL siguiente ejemplo es pequeño asistente de viajes. El usuario hace una pregunta, por ejemplo: “¿Qué tiempo hará en Barcelona y cuánto cuestan los vuelos?”, y varios agentes trabajan juntos para generar la respuesta: ClassifierAgent: analiza la pregunta y detecta qué información se necesita. WeatherAgent: se encarga de obtener el clima. FlightAgent: obtiene información sobre vuelos. RecommenderAgent: combina toda la información y genera la respuesta final. Todos los agentes comparten el mismo array de contexto. Cada uno lee la información disponible, decide si debe actuar y escribe sus resultados en ese mismo contexto.Este enfoque es muy didáctico y permite entender claramente cómo se puede construir colaboración entre agentes sin necesidad de una capa de orquestación compleja.A continuación se puede ver el código completo y comentado. Código del ejemplo /** * Sistema Multiagente simple en PHP (sin orquestador) * Ejemplo educativo para blog */ // ============================================ // Clase base de Agente // ============================================ abstract class Agent { protected string $name; public function __construct(string $name) { $this->name = $name; } abstract public function run(array &$context): void; public function getName(): string { return $this->name; } } // ============================================ // Agentes especializados // ============================================ class ClassifierAgent extends Agent { public function run(array &$context): void { $question = strtolower($context['question']); $context['needs_weather'] = str_contains($question, 'clima') || str_contains($question, 'tiempo') || str_contains($question, 'temperatura'); $context['needs_flight'] = str_contains($question, 'vuelo') || str_contains($question, 'avion') || str_contains($question, 'precio'); $context['logs'][] = "[{$this->name}] Análisis completado"; } } class WeatherAgent extends Agent { public function run(array &$context): void { if (empty($context['needs_weather'])) { return; } // Simulación (aquí iría una API real o llamada a un LLM) $city = $context['city'] ?? 'Madrid'; $data = [ 'Madrid' => '12°C, lluvia ligera', 'Barcelona' => '18°C, soleado', 'Valencia' => '16°C, nublado' ]; $context['weather'] = $data[$city] ?? 'Información no disponible'; $context['logs'][] = "[{$this->name}] Clima obtenido para $city"; } } class FlightAgent extends Agent { public function run(array &$context): void { if (empty($context['needs_flight'])) { return; } // Simulación $city = $context['city'] ?? 'Madrid'; $context['flight'] = "Vuelos a $city desde 89€ (ida y vuelta)"; $context['logs'][] = "[{$this->name}] Información de vuelos obtenida"; } } class RecommenderAgent extends Agent { public function run(array &$context): void { $parts = []; if (!empty($context['weather'])) { $parts[] = "Clima: " . $context['weather']; } if (!empty($context['flight'])) { $parts[] = "Vuelos: " . $context['flight']; } if (empty($parts)) { $context['final_answer'] = "No he podido encontrar información relevante."; } else { $context['final_answer'] = "Aquí tienes la información solicitada:\n\n" . implode("\n", $parts); } $context['logs'][] = "[{$this->name}] Respuesta final generada"; } } // ============================================ // Ejecución del sistema multiagente // ============================================ function runMultiAgentSystem(string $question, string $city = 'Madrid'): array { // Contexto compartido entre todos los agentes $context = [ 'question' => $question, 'city' => $city, 'logs' => [] ]; // Creamos los agentes $agents = [ new ClassifierAgent('Clasificador'), new WeatherAgent('AgenteClima'), new FlightAgent('AgenteVuelos'), new RecommenderAgent('Recomendador') ]; // Cada agente aporta su parte al contexto compartido foreach ($agents as $agent) { $agent->run($context); } return $context; } // ============================================ // Ejemplo de uso // ============================================ $pregunta = "¿Qué tiempo hará en Barcelona y cuánto cuestan los vuelos?"; $resultado = runMultiAgentSystem($pregunta, 'Barcelona'); echo "Pregunta: $pregunta\n\n"; echo "Respuesta final:\n"; echo $resultado['final_answer'] . "\n\n"; echo "--- Logs de los agentes ---\n"; foreach ($resultado['logs'] as $log) { echo $log . "\n"; } En el ejemplo se muestra cómo se puede implementar un sistema multiagente de forma sencilla y legible en PHP. Las respuestas son simuladas, el mismo esquema se puede conectar fácilmente a modelos de lenguaje, como OpenAI, Claude, Grok, Ollama, etc. o a APIs externas sustituyendo la lógica interna de cada agente.La clave está en el contexto compartido: todos los agentes leen y escriben en el mismo lugar, lo que permite una colaboración natural sin necesidad de una capa de orquestación compleja.Este tipo de arquitectura es especialmente útil cuando se quieren construir aplicaciones más mantenibles, escalables y fáciles de evolucionar.
來源:DEV Community · dev.to