Guardar la conversación de ChatGPT en una Base de Datos
Ya que recibimos WhatsApp’s y tambien generamos una respuesta con inteligencia artificial, vamos a Guardar la conversación de ChatGPT en una Base de Datos Mysql con Python . Seguiremos estos pasos:
Creamos la Base de Datos y la tabla
-- phpMyAdmin SQL Dump -- version 5.1.1 -- https://www.phpmyadmin.net/ -- -- Servidor: 127.0.0.1 -- Tiempo de generación: 23-01-2023 a las 21:24:48 -- Versión del servidor: 10.4.20-MariaDB -- Versión de PHP: 7.3.29 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Base de datos: `chat` -- -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `registro` -- CREATE TABLE `registro` ( `id` int(5) NOT NULL, `fecha_hora` datetime DEFAULT current_timestamp(), `mensaje_recibido` varchar(1000) DEFAULT '', `mensaje_enviado` varchar(1000) DEFAULT '', `id_wa` varchar(1000) DEFAULT '', `timestamp_wa` int(15) DEFAULT NULL, `telefono_wa` varchar(50) DEFAULT '' ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Índices para tablas volcadas -- -- -- Indices de la tabla `registro` -- ALTER TABLE `registro` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT de las tablas volcadas -- -- -- AUTO_INCREMENT de la tabla `registro` -- ALTER TABLE `registro` MODIFY `id` int(5) NOT NULL AUTO_INCREMENT; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Instalamos las dependencias
pip install mysql-connector-python
Código de Python para Guardar la conversación de ChatGPT en una Base de Datos
Agregamos estas líneas de código
#CONECTAMOS A LA BASE DE DATOS import mysql.connector mydb = mysql.connector.connect( host = "localhost", user = "root", password = "", database='novato_chat' ) mycursor = mydb.cursor() query="SELECT count(id) AS cantidad FROM registro WHERE id_wa='" + idWA + "';" mycursor.execute(query) cantidad, = mycursor.fetchone() cantidad=str(cantidad) cantidad=int(cantidad) if cantidad==0 : sql = ("INSERT INTO registro"+ "(mensaje_recibido,mensaje_enviado,id_wa ,timestamp_wa ,telefono_wa) VALUES "+ "('"+mensaje+"' ,'"+respuesta+"','"+idWA+"' ,'"+timestamp+"','"+telefonoCliente+"');") mycursor.execute(sql) mydb.commit()
Código para Guardar la conversación en una Base de Datos
#Código para Guardar la conversación de ChatGPT en una Base de Datos from flask import Flask, jsonify, request app = Flask(__name__) #CUANDO RECIBAMOS LAS PETICIONES EN ESTA RUTA @app.route("/webhook/", methods=["POST", "GET"]) def webhook_whatsapp(): #SI HAY DATOS RECIBIDOS VIA GET if request.method == "GET": #SI EL TOKEN ES IGUAL AL QUE RECIBIMOS if request.args.get('hub.verify_token') == "HolaNovato": #ESCRIBIMOS EN EL NAVEGADOR EL VALOR DEL RETO RECIBIDO DESDE FACEBOOK return request.args.get('hub.challenge') else: #SI NO SON IGUALES RETORNAMOS UN MENSAJE DE ERROR return "Error de autentificacion." #RECIBIMOS TODOS LOS DATOS ENVIADO VIA JSON data=request.get_json() #EXTRAEMOS EL NUMERO DE TELEFONO Y EL MANSAJE telefonoCliente=data['entry'][0]['changes'][0]['value']['messages'][0]['from'] #EXTRAEMOS EL TELEFONO DEL CLIENTE mensaje=data['entry'][0]['changes'][0]['value']['messages'][0]['text']['body'] #EXTRAEMOS EL ID DE WHATSAPP DEL ARRAY idWA=data['entry'][0]['changes'][0]['value']['messages'][0]['id'] #EXTRAEMOS EL TIEMPO DE WHATSAPP DEL ARRAY timestamp=data['entry'][0]['changes'][0]['value']['messages'][0]['timestamp'] #ESCRIBIMOS EL NUMERO DE TELEFONO Y EL MENSAJE EN EL ARCHIVO TEXTO #SI HAY UN MENSAJE if mensaje is not None: import openai # Indica el API Key openai.api_key = "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" # Uso de ChapGPT en Python model_engine = "text-davinci-003" prompt = mensaje completion = openai.Completion.create(engine=model_engine, prompt=prompt, max_tokens=1024, n=1, stop=None, temperature=0.7) respuesta="" for choice in completion.choices: respuesta=respuesta+choice.text print(f"Response: %s" % choice.text) respuesta=respuesta.replace("\\n","\\\n") respuesta=respuesta.replace("\\","") #CONECTAMOS A LA BASE DE DATOS import mysql.connector mydb = mysql.connector.connect( host = "localhost", user = "root", password = "", database='novato_chat' ) mycursor = mydb.cursor() query="SELECT count(id) AS cantidad FROM registro WHERE id_wa='" + idWA + "';" mycursor.execute(query) cantidad, = mycursor.fetchone() cantidad=str(cantidad) cantidad=int(cantidad) if cantidad==0 : sql = ("INSERT INTO registro"+ "(mensaje_recibido,mensaje_enviado,id_wa ,timestamp_wa ,telefono_wa) VALUES "+ "('"+mensaje+"' ,'"+respuesta+"','"+idWA+"' ,'"+timestamp+"','"+telefonoCliente+"');") mycursor.execute(sql) mydb.commit() #RETORNAMOS EL STATUS EN UN JSON return jsonify({"status": "success"}, 200) #INICIAMSO FLASK if __name__ == "__main__": app.run(debug=True)