Usando servidor Heroku - IA

 Para crear un ejemplo funcional con todos los parámetros cargados y utilizando un servidor gratuito, puedes usar servicios en la nube como Heroku para alojar tu servidor Python. Aquí te proporcionaré un paso a paso completo para lograr esto, incluyendo el uso de ESP32 como interfaz.

Paso 1: Configurar el Servidor en Heroku

1. Crear una Cuenta en Heroku

  1. Ve a Heroku y crea una cuenta.
  2. Instala la CLI de Heroku en tu máquina local.

2. Configurar el Proyecto Python

Crea un nuevo directorio para tu proyecto y navega dentro de él.

sh
mkdir chatgpt-server cd chatgpt-server

3. Crear el Entorno Virtual e Instalar Dependencias

sh
python -m venv venv source venv/bin/activate # En Windows usa `venv\Scripts\activate` pip install flask transformers

4. Crear el Archivo de Servidor (app.py)

python
from flask import Flask, request, jsonify from transformers import GPT2LMHeadModel, GPT2Tokenizer app = Flask(__name__) # Cargar el modelo y el tokenizador model_name = 'gpt2' # GPT-3 y GPT-4 no están disponibles gratuitamente a través de Hugging Face, pero GPT-2 puede ser utilizado. tokenizer = GPT2Tokenizer.from_pretrained(model_name) model = GPT2LMHeadModel.from_pretrained(model_name) @app.route('/chat', methods=['POST']) def chat(): data = request.json prompt = data.get('prompt', '') inputs = tokenizer.encode(prompt, return_tensors='pt') outputs = model.generate(inputs, max_length=150, num_return_sequences=1) response = tokenizer.decode(outputs[0], skip_special_tokens=True) return jsonify({'response': response}) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)

5. Crear los Archivos de Configuración

requirements.txt:

txt
flask transformers torch

Procfile:

txt
web: python app.py

6. Desplegar en Heroku

sh
heroku login heroku create chatgpt-server-example git init heroku git:remote -a chatgpt-server-example git add . git commit -m "Initial commit" git push heroku master

Paso 2: Configurar el ESP32

Configura el ESP32 para conectarse a tu servidor Heroku y enviar las preguntas. Aquí está el código:

Código del ESP32

cpp
#include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; const char* serverName = "https://chatgpt-server-example.herokuapp.com/chat"; // URL de tu servidor Heroku void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); Serial.println("Enter your question:"); } void loop() { if (Serial.available()) { String question = Serial.readStringUntil('\n'); if (WiFi.status() == WL_CONNECTED) { HTTPClient http; http.begin(serverName); http.addHeader("Content-Type", "application/json"); StaticJsonDocument<200> doc; doc["prompt"] = question; String requestBody; serializeJson(doc, requestBody); int httpResponseCode = http.POST(requestBody); if (httpResponseCode > 0) { String response = http.getString(); Serial.println("Response: " + response); } else { Serial.println("Error on sending POST: " + String(httpResponseCode)); } http.end(); } else { Serial.println("WiFi Disconnected"); } } }

Conclusión

  1. Servidor en Heroku: Configuramos un servidor Flask que usa el modelo GPT-2 desde Hugging Face.
  2. ESP32: El ESP32 se conecta a este servidor, envía preguntas y recibe respuestas.

Esta configuración permite que el ESP32 actúe como una interfaz para el usuario mientras el servidor en Heroku maneja todo el procesamiento pesado del modelo de lenguaje. Este enfoque es práctico y utiliza servicios gratuitos, aunque el rendimiento puede ser limitado debido a las restricciones de los planes gratuitos.

Comentarios

Entradas populares de este blog

Proyecto Prototipo de Lampara con IA - Utilizando plataforma Arduino

API Keys

Procesamiento del Lenguaje Natural (NLP)