Cómo hacer amigo de PHP con ChatGPT: integración paso a paso de la API

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Por qué un desarrollador PHP necesita ChatGPT?

\n\n

Imagina: estás escribiendo un sitio web en PHP y de repente te das cuenta de que a tu usuario le falta un asistente "inteligente". No un simple chat con respuestas predefinidas, sino una verdadera inteligencia artificial que sepa escribir código, traducir textos, generar ideas o simplemente mantener una conversación significativa. ¿Suena a ciencia ficción? Pues no lo es.

\n\n

Hoy en día, la integración de la API de ChatGPT en PHP no es una ciencia espacial, sino una tarea bastante rutinaria que cualquier desarrollador familiarizado con los fundamentos del lenguaje puede dominar. Y te lo demostraré.

\n\n

En este artículo no solo copiaremos un par de líneas de la documentación. Analizaremos cómo enviar solicitudes correctamente, procesar respuestas, gestionar el contexto de la conversación y no "tumbar" el servidor. ¡Allá vamos!

\n\n

¿Qué necesitamos para empezar?

\n\n

Antes de escribir código, asegurémonos de que tienes todo lo necesario:

\n\n
    \n
  • PHP 8.0+ — en versiones más antiguas puede haber problemas con cURL y JSON.
  • \n
  • Extensión cURL — actívala en php.ini (normalmente está activada por defecto).
  • \n
  • Clave API de OpenAI — regístrate en platform.openai.com, ve a la sección API keys y crea una nueva clave secreta.
  • \n
  • Un poco de paciencia — a veces la API no responde de inmediato, especialmente en solicitudes complejas.
  • \n
\n\n

Importante: guarda tu clave API de forma segura. Nunca la insertes directamente en el código que pueda terminar en un repositorio público. Usa archivos .env o variables de entorno del servidor.

\n\n

Escribiendo la primera solicitud a ChatGPT en PHP

\n\n

Empecemos con lo más simple: enviaremos un mensaje y obtendremos una respuesta. Esta es la base sobre la que se construye todo el trabajo posterior con la API.

\n\n
<?php\n// Configuración\n$apiKey = 'sk-tu_súper_clave_secreta';\n$url = 'https://api.openai.com/v1/chat/completions';\n\n// Datos para la solicitud\n$data = [\n    'model' => 'gpt-3.5-turbo', // se puede usar gpt-4 si tienes acceso\n    'messages' => [\n        [\n            'role' => 'user',\n            'content' => 'Cuenta un chiste sobre programadores en español'\n        ]\n    ],\n    'temperature' => 0.7, // cuanto más alto, más creativa la respuesta\n    'max_tokens' => 500   // longitud máxima de la respuesta\n];\n\n// Inicialización de cURL\n$ch = curl_init($url);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_POST, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    'Content-Type: application/json',\n    'Authorization: Bearer ' . $apiKey\n]);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));\n\n// Envío de la solicitud\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\n// Procesamiento de la respuesta\nif ($httpCode === 200) {\n    $result = json_decode($response, true);\n    $reply = $result['choices'][0]['message']['content'];\n    echo "ChatGPT dice: " . $reply;\n} else {\n    echo "¡Error! Código HTTP: " . $httpCode . "<br>";\n    echo "Respuesta del servidor: " . $response;\n}\n?>
\n\n

¿Lo ejecutaste? Felicidades, acabas de escribir tu primera integración de la API de ChatGPT en PHP! Si todo se hizo correctamente, verás un chiste divertido de la red neuronal.

\n\n

Analizando el código en detalle

\n\n

Veamos qué está sucediendo aquí para que puedas adaptar fácilmente este código a tus propias tareas.

\n\n

Estructura de la solicitud

\n\n

La API de OpenAI espera de nosotros un JSON con varios campos obligatorios:

\n\n
    \n
  • model — qué modelo responderá. gpt-3.5-turbo es la opción óptima para la mayoría de las tareas: rápido y económico. gpt-4 es más inteligente, pero más caro y lento.
  • \n
  • messages — un array de mensajes. Cada mensaje tiene un role (system, user, assistant) y un content (texto).
  • \n
  • temp

Blogs

Book Recommendations