Open Menu dzosoft
Close Menu dzosoft

   TODO SOBRE INFORMÁTICA Y TECNOLOGÍA


                             







 
 
 

Cómo usar ChatGPT con PHP

 
 
Cómo usar ChatGPT con PHP
 
Vamos a crear una aplicación de lenguaje PHP simple que consulte el modelo generativo de GPT a través de la API de OpenAI

 

● Requisitos de la solicitud

 
A continuación se muestra una breve lista de las herramientas que se utilizarán para llevar a cabo el proyecto.

 

● Clave de API e ID de organización

 
Además de un entorno de desarrollo basado en PHP, necesitamos claves API de OpenAI para nuestra aplicación. El procedimiento para solicitarlo está presente en esta parte de la guía y es muy sencillo. Una vez más, vale la pena repetir que el servicio proporciona un crédito gratuito de 18 / 18 para probar sus interfaces de programación. Si varias organizaciones utilizan la misma clave de API, también es útil especificar el ID de la organización que pretende utilizarla. Esta información está disponible accediendo a su cuenta desde esta página y luego siguiendo la ruta del menú "Personal > Administrar cuenta > Configuración".
 
Cómo usar ChatGPT con PHP
 

 
Fuente: https://platform.openai.com/account/ api-claves 

 

● Bibliotecas y plantillas

 

Hay varias bibliotecas PHP que le permiten interactuar con las interfaces de programación de OpenAI, solo mencione el cliente API de OpenAI de Orhanerday disponible a través de GitHub e instalable con Composer. En este caso, sin embargo, solo usaremos código vanilla y la sintaxis nativa del lenguaje, sin recurrir a marcos o clientes preempaquetados.

Otro punto importante se refiere a la elección del modelo a interrogar. Este último afecta varios factores, incluida la velocidad con la que se generan los resultados, su nivel de precisión y el costo de usar las API. También hay plantillas desarrolladas para propósitos especiales, como Whisper para convertir audio a texto. En la aplicación utilizaremos un modelo del conjunto GPT-3.5 y en concreto gpt-3.5-turbo.

Este último admite hasta 4.096 tokens y ha sido entrenado con datos actualizados a septiembre de 2021. Para interactuar con él utilizaremos la biblioteca Open Source cURL. Le permite comunicarse con servicios externos a través de protocolos de red, incluidos aquellos que requieren autenticación. Si está ejecutando desde Linux, por ejemplo, en Mint, es posible que la extensión de PHP para cURL no esté instalada de forma predeterminada. El problema se puede solucionar actualizando los paquetes presentes en el sistema:
sudo apt update


Para luego instalar la biblioteca cURL desde la línea de comando usando la instrucción:
sudo apt install curl


El éxito de la operación se puede verificar ejecutando el comando curl. Sin embargo, para que PHP use la biblioteca, es necesario habilitar la extensión relativa en el archivo de configuración php.ini. Así que abrámoslo con nuestro editor favorito y descomentemos la línea correspondiente:
 
Cómo usar ChatGPT con PHP
 

Guarde el cambio y reinicie el servidor web en uso, por ejemplo, Apache:
sudo service apache2 restart


De esta forma tendremos todo lo necesario para completar nuestro proyecto.


 

● El código

 

La primera parte de la aplicación debe estar dedicada a la definición de todos los datos útiles para la comunicación con la plataforma. Como se anticipó, entre estos últimos se encuentran la clave API de OpenAI, el ID de la organización (que es un dato opcional pero útil si administra varios proyectos entre diferentes entidades que pertenecen a una sola cuenta) y el modelo GPT de referencia (o "motor") . A estos se les añade la URL para llamar a las APIs que permite interactuar con el modelo a través de estas.
//CLAVE API para autenticación
$api_key = "sk-?????????????????????????";
//Service URL
$url = 'https://api.openai.com/v1/chat/completions';
// Identificación de la organización
$org_id = ""; 
//Modelo generativo a utilizar
$model = "gpt-3.5-turbo";


En la segunda parte del código, la clave API y el ID de la organización se pasan como valores para los parámetros del encabezado.
$headers = array(
    "Authorization: Bearer {$api_key}",
    "OpenAI-Organization: {$org_id}",
    "Content-Type: application/json"
);

La parte más interesante de este paso es sobre el encabezado "Content-Type: application/json". Indica que el cuerpo de la solicitud HTTP aprovecha JSON (notación de objetos de JavaScript) para los datos. Este formato se utiliza para el intercambio de información entre aplicaciones web y ofrece una representación estructurada. "Content-Type: application/json" por lo tanto define el tipo de contenido del mensaje y permite a los servidores y clientes procesar correctamente los datos contenidos en el cuerpo del mensaje.

 

● Envío del mensaje al chatbot

 

Una vez definidas las cabeceras, pasamos a configurar el mensaje (prompt) a enviar al chatbot, es decir, cualquier tipo de pregunta (contenido) del usuario a la que el sistema pueda responder en lenguaje coloquial.
$question="";
if(isset($_REQUEST["question"]))
 {
  $question=$_REQUEST["question"];
 }

//Solicitud al chatbot $messages = array(); $messages[] = array("role" => "user", "content" => $question);


El mensaje se almacena en una matriz ( $messages) que, a su vez, se convierte en parte de una matriz multidimensional ( $data) destinada a contener los parámetros para devolver la salida. En $data, además del mensaje tenemos por tanto el modelo indicado anteriormente ( $model = "gpt-3.5-turbo";) y los valores asociados a los max_tokens y opciones de temperatura. El primero indica el número máximo de tokens que se pueden utilizar para generar respuestas. Si es elevadomax_tokensit puede determinar un gasto mayor por el uso de la API pero respuestas más profundas, si es bajo permite un mayor control de costos pero puede dar lugar a resultados incompletos. El segundo acepta valores entre 0 y 1: con valores cercanos a 0 deberías tener respuestas más estructuradas, a medida que te acercas a 1 tienden en cambio a ser más creativas.
// Parámetros para devolver la salida
$data = array();
$data["model"] = $model;
$data["messages"] = $messages;
$data["max_tokens"] = 150;
$data["temperature"] = 0.7;


 

● La sesión cURL

 

En este punto recopilamos encabezados y parámetros y, después de inicializar la sesión de cURL, los usamos para enviar el mensaje a la API. Por lo tanto, se crea un identificador ($curl) para pasar a curl_exec(), una función de PHP que ejecuta la solicitud HTTP y devuelve la respuesta en forma de cadena. Cualquier error durante esta fase será señalado por la aplicación, de lo contrario, procederá a imprimir la cadena.
// sesión cURL
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// Performing the HTTP request and returning the result
$result = curl_exec($curl);
if (curl_errno($curl)) {
	// Error message
    echo "Atención: " . curl_error($curl);
} else {
	// Impresión del resultado
    echo "<pre>";
	var_dump($result);
	echo "</pre>";
}
curl_close($curl);


 

● Descodificación JSON y salida de chatbot

 
Imprimir el resultado le permite ver la cadena JSON que contiene la respuesta y todos sus encabezados. En este punto, podemos decodificar esta cadena usando la función json_decode() y extraer, por ejemplo, el recuento de tokens utilizados para la solicitud y la generación de la salida.
//Decodificación de respuesta JSON
$json_response = json_decode($result, true);
// Informe sobre tokens usados
echo "Ellos han sido utilizados en este chat <strong>" . $json_response["usage"]["prompt_tokens"] . "</strong> token rápido.<br />";
echo "<strong>".$json_response["usage"]["completion_tokens"] . "</strong> ficha de salida.<br/>";
echo "<strong>".$json_response["usage"]["total_tokens"] . "</strong> fichas totales utilizadas.<br/>";


La respuesta del chatbot se imprime en último lugar. Observe cómo este último se trunca porque el sistema considera que el valor max_tokens es demasiado bajo para poder proporcionar una respuesta completa.
//Extracción de respuesta
$response = $json_response["choices"][0]["message"]["content"];
//Imprimir la respuesta de la plantilla de chat
echo '<br><br>';
echo '<br><br>';
echo '<strong>You:</strong> '.$question;
echo '<br><br>';
echo '<strong>Chatgpt:</strong> '.$response;
?>
<form action="chatgpt.php" method="get">
  <label for="fname">You:</label>
  <input type="text" id="question" name="question<br><br>
  <input type="submit" value="Submit">
</form>


Describir PHP como un "lenguaje de programación" quizás no sea la opción más adecuada, al igual que la definición dada de una aplicación de código abierto parece un poco restrictiva. Por lo tanto, se puede mejorar la precisión del modelo, incluso reformulando el aviso, pero en cada caso nuestro código funcionó.

 

● El código completo

 
<?php
//CLAVE API para autenticación
$api_key = "sk-??????????????????????";
//Service URL
$url = 'https://api.openai.com/v1/chat/completions';
// Identificación de la organización
$org_id = "";
// Modelo generativo a utilizar
$model = "gpt-3.5-turbo";
$headers = array(
    "Authorization: Bearer {$api_key}",
    "OpenAI-Organization: {$org_id}",
    "Content-Type: application/json"
);
$question="";
if(isset($_REQUEST["question"]))
 {
  $question=$_REQUEST["question"];
 }
// Solicitud al chatbot
$messages = array();
$messages[] = array("role" => "user", "content" => $question);

// Parameters for returning output $data = array(); $data["model"] = $model; $data["messages"] = $messages; $data["max_tokens"] = 150; $data["temperature"] = 0.7; // cURL session $curl = curl_init($url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // Performing the HTTP request and returning the result $result = curl_exec($curl); if (curl_errno($curl)) { // Error message echo "Atención: " . curl_error($curl); } else { // Impresión del resultado echo "<pre>"; var_dump($result); echo "</pre>"; } curl_close($curl); //Decodificación de respuesta JSON $json_response = json_decode($result, true); //Informe sobre tokens usados echo "Ellos han sido utilizados en este chat <strong>" . $json_response["usage"]["prompt_tokens"] . "</strong>token rápido.<br />"; echo "<strong>".$json_response["usage"]["completion_tokens"] . "</strong>ficha de salida.<br/>"; echo "<strong>".$json_response["usage"]["total_tokens"] . "</strong> fichas totales utilizadas.<br/>"; //Extracción de respuesta $response = $json_response["choices"][0]["message"]["content"]; // Imprimir la respuesta de la plantilla de chat echo '<br><br>'; echo '<br><br>'; echo '<strong>Tú:</strong> '.$question; echo '<br><br>'; echo '<strong>Chatgpt:</strong> '.$response; ?> <form action="chatgpt.php" method="get"> <label for="fname">Tú:</label> <input type="text" id="question" name="question<br><br> <input type="submit" value="Submit"> </form>


 
Cómo usar ChatGPT con PHP
 


 

● Puede probar este ejemplo aquí

 
https://www.dzosoft.com/examples/chatgpt-es 

 

● Conclusiones

 
Las API de OpenAI le permiten consultar el modelo generativo de GPT utilizando varios idiomas. Anteriormente hemos analizado el ejemplo de Python, en esta lección hemos propuesto en su lugar un ejemplo basado en PHP. Pronto descubriremos otras formas de utilizar estas interfaces.

También te puede interesar


Los 5 mejores tutoriales para aprender php en 2023

Cómo crear una aplicación de chat con PHP y HTML en solo unos pocos pasos

Cómo instalar XAMPP (con Apache, MySQL y phpMyAdmin) en Windows

Cómo enviar fácilmente un correo electrónico con PHPMailer en PHP

Cómo crear fácilmente gráficos usando PHP

Cómo iniciar sesión con autenticación OTP en PHP


Leave comment
          

Guardar apodo y correo electrónico en este navegador para la próxima vez.



Cargando...