Cuando PHP se encuentra con la IA: por qué funciona
\n\nImagine: está escribiendo código en PHP y, de repente, tiene un colega que nunca duerme, no pide salario y puede generar en un segundo la descripción de mil productos, redactar una carta para un cliente o incluso ayudarle a depurar una consulta SQL compleja. ¿Suena a ciencia ficción? Pues no. Es una realidad con la integración de ChatGPT en proyectos PHP.
\n\nPHP ha sido durante mucho tiempo el "caballo de batalla" de la web, pero con la llegada de la IA ha recibido un segundo aire. Ya no es necesario escribir toneladas de código repetitivo manualmente: la red neuronal se encarga de la rutina, mientras usted se concentra en la arquitectura. En este artículo, analizaremos cómo conectar ChatGPT a su aplicación PHP, y lo haremos de la manera más práctica posible.
\n\n¿Qué necesita para empezar?
\n\nAntes de sumergirnos en el código, asegúrese de tener:
\n\n- \n
- PHP 8.0+ — para trabajar con funciones modernas (tipado, atributos). \n
- cURL — para enviar solicitudes a la API de OpenAI. \n
- Clave API de OpenAI — regístrese en platform.openai.com y cree una clave. \n
- Composer — para gestionar las dependencias cómodamente (aunque también se puede sin él). \n
¿Listo? Allá vamos.
\n\nConexión básica: enviando la primera solicitud a ChatGPT
\n\nEmpecemos con lo más simple: enviar un mensaje a ChatGPT y recibir una respuesta. OpenAI utiliza una API REST, por lo que necesitamos una solicitud HTTP normal. Aquí tiene una clase mínima funcional:
\n\n<?php\n\nclass ChatGPTClient {\n private string $apiKey;\n private string $apiUrl = 'https://api.openai.com/v1/chat/completions';\n\n public function __construct(string $apiKey) {\n $this->apiKey = $apiKey;\n }\n\n public function ask(string $message): string {\n $data = [\n 'model' => 'gpt-3.5-turbo',\n 'messages' => [\n ['role' => 'user', 'content' => $message]\n ],\n 'temperature' => 0.7\n ];\n\n $ch = curl_init($this->apiUrl);\n curl_setopt_array($ch, [\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_POST => true,\n CURLOPT_HTTPHEADER => [\n 'Content-Type: application/json',\n 'Authorization: Bearer ' . $this->apiKey\n ],\n CURLOPT_POSTFIELDS => json_encode($data)\n ]);\n\n $response = curl_exec($ch);\n $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n curl_close($ch);\n\n if ($httpCode !== 200) {\n throw new \\RuntimeException("API error: $httpCode - $response");\n }\n\n $result = json_decode($response, true);\n return $result['choices'][0]['message']['content'] ?? '';\n }\n}\n\n// Uso\n$client = new ChatGPTClient('your-api-key-here');\necho $client->ask('Escribe un saludo corto para un sitio web en PHP');\n\nEste código es la base. Tenga en cuenta: usamos gpt-3.5-turbo — es barato y rápido. Para tareas complejas puede cambiarse a gpt-4, pero es más caro.
Manejo de errores y límites
\n\nLos proyectos reales requieren un manejo más robusto. Añada reintentos para el error 429 (demasiadas solicitudes) y registro:
\n\npublic function askWithRetry(string $message, int $maxRetries = 3): string {\n for ($attempt = 1; $attempt <= $maxRetries; $attempt++) {\n try {\n return $this->ask($message);\n } catch (\\RuntimeException $e) {\n if (str_contains($e->getMessage(), '429') && $attempt < $maxRetries) {\n sleep(pow(2, $attempt)); // retardo exponencial\n continue;\n }\n throw $e;\n }\n }\n}\n\nEscenarios avanzados: desde generación de contenido hasta análisis de datos
\n\nAhora que la base está lista, veamos cómo Cha