Generative chatbots are revolutionizing human-computer interaction by allowing machines to not only respond to predefined commands but also generate contextually relevant and coherent responses. This technological advancement has found applications in a variety of sectors, from online customer service to virtual assistance on educational and business platforms. The ability of chatbots to understand natural language and generate near-human responses is transforming the way we interact with technology, offering scalable and efficient solutions for automated communication
Chatbot implementation in Flask
Initial configuration:
In this snippet, the necessary libraries are imported and the GPT-2 model and tokenizer are loaded.
from flask import Flask, request, jsonify
from transformers import GPT2LMHeadModel, GPT2Tokenizer
print("Starting application...")
app = Flask(__name__)
# Cargar el modelo y el tokenizer
print("Loading model and tokenizer...")
tokenizer = GPT2Tokenizer.from_pretrained("distilgpt2")
model = GPT2LMHeadModel.from_pretrained("distilgpt2")
print("Model and tokenizer loaded.")
- Flask and other libraries are imported to configure the web server.
- GPT2LMHeadModel and GPT2Tokenizer are imported from transformers to load the GPT-2 model and its tokenizer.
- A Flask instance (app) is initialized to create the web application.
Function to generate responses:
This snippet defines the generate_response function that uses the GPT-2 model to generate responses based on a given prompt.
def generate_response(prompt):
print(f"Generating response for prompt: {prompt}")
inputs = tokenizer.encode(prompt, return_tensors="pt")
outputs = model.generate(
inputs,
max_length=50,
num_beams=5,
early_stopping=True,
no_repeat_ngram_size=2,
temperature=0.7,
top_k=50,
top_p=0.95
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(f"Generated response: {response}")
return response
- generate_response takes a prompt as input and encodes it using the tokenizer.
- model.generate generates a response based on the prompt using parameters such as max_length to limit the length, num_beams to improve quality, temperature to control creativity, among others.
- The result is decoded using the tokenizer to obtain the final response. Flask API for the chatbot:
In this snippet, we configure a POST /chatbot route that accepts JSON requests with a prompt, generates a response using the generate_response function, and returns the generated response as JSON.
@app.route('/chatbot', methods=['POST'])
def chatbot():
try:
print("Received request.")
body = request.get_json()
prompt = body.get('prompt', '')
response = generate_response(prompt)
return jsonify({'response': response})
except Exception as e:
print(f"Error: {str(e)}")
return jsonify({'message': 'Internal server error', 'error': str(e)}), 500
if __name__ == '__main__':
print("Starting Flask server...")
app.run(debug=True)
- @app.route('/chatbot', methods=['POST']) defines a /chatbot route that accepts POST methods to receive JSON requests.
- chatbot() is the function that handles POST requests, gets the JSON request body prompt, generates a response using generate_response, and returns the generated response as JSON.
- In case of errors, they are captured and handled by returning an error message with status code 500.
Testing with CURL
- First question:
curl -X POST http://127.0.0.1:5000/chatbot -H "Content-Type: application/json" -d "{\"prompt\": \"Can you tell me about the weather today?\"}"
- Second question:
curl -X POST http://127.0.0.1:5000/chatbot -H "Content-Type: application/json" -d "{\"prompt\": \"hello?\"}""
- Third question:
curl -X POST http://127.0.0.1:5000/chatbot -H "Content-Type: application/json" -d "{\"prompt\": \"how are you?\"}"
Next Steps:
We should always try to deploy this type of projects in the cloud, whether AWS or Azure, in this case I leave an illustrative diagram of what the deployment would look like using AWS lambda, AWS Api Gateway and AWS S3.
Conclusion:
The combination of GPT-2 and Flask allows the development of chatbots for educational purposes, capable of dealing naturally and effectively with users. These technological advances are rapidly transforming how we think about human-computer interaction, offering scalable and efficient solutions for a variety of applications, from customer service to AI-assisted education, as long as we use the most advanced models such as GPT-4 or GPT. -4o. As we continue to explore and refine these tools, it's clear that generative chatbots represent a significant step toward smarter, more adaptive systems in the digital future.
Top comments (0)