Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from transformers import GPT2LMHeadModel, GPT2Tokenizer | |
| import random | |
| # Initialize GPT-2 model and tokenizer | |
| model_name = "gpt2" | |
| model = GPT2LMHeadModel.from_pretrained(model_name) | |
| tokenizer = GPT2Tokenizer.from_pretrained(model_name) | |
| # Define some sample data for the chatbot | |
| products = { | |
| 'T-shirt': {'sizes': ['S', 'M', 'L', 'XL'], 'colors': ['Red', 'Blue', 'Green'], 'price': 25}, | |
| 'Jacket': {'sizes': ['M', 'L', 'XL'], 'colors': ['Black', 'Grey'], 'price': 50}, | |
| 'Sneakers': {'sizes': ['7', '8', '9', '10'], 'colors': ['White', 'Black'], 'price': 60} | |
| } | |
| # Simulate order tracking | |
| orders = { | |
| '12345': {'status': 'Shipped', 'arrival_date': '2024-12-22'}, | |
| '67890': {'status': 'In Transit', 'arrival_date': '2024-12-23'} | |
| } | |
| # Simulate some discounts | |
| discounts = { | |
| 'WINTER20': '20% off on winter apparel!', | |
| 'WELCOME10': '10% off for first-time customers!' | |
| } | |
| # Function to generate response using GPT-2 | |
| def generate_gpt2_response(user_input): | |
| inputs = tokenizer.encode(user_input + tokenizer.eos_token, return_tensors="pt") | |
| outputs = model.generate(inputs, max_length=150, num_return_sequences=1, no_repeat_ngram_size=2, temperature=0.7) | |
| response = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| return response | |
| # Chatbot logic | |
| def chatbot(): | |
| st.title("E-Commerce Chatbot 🛍️") | |
| st.write("Hi, I'm your shopping assistant! How can I help you today?") | |
| user_input = st.text_input("You: ", "") | |
| if user_input: | |
| # Handle product queries | |
| if "size" in user_input.lower() or "color" in user_input.lower(): | |
| st.write("Sure! Here are the available options:") | |
| for product, details in products.items(): | |
| st.write(f"**{product}**: Sizes: {', '.join(details['sizes'])}, Colors: {', '.join(details['colors'])}, Price: ${details['price']}") | |
| # Handle order tracking | |
| elif "track order" in user_input.lower(): | |
| order_number = st.text_input("Please enter your order number:", "") | |
| if order_number: | |
| if order_number in orders: | |
| order_info = orders[order_number] | |
| st.write(f"Your order is {order_info['status']}. It will arrive by {order_info['arrival_date']}.") | |
| else: | |
| st.write("Sorry, we couldn't find that order. Please check your order number.") | |
| # Handle product recommendations | |
| elif "recommend" in user_input.lower(): | |
| st.write("Here are some products I recommend based on your browsing:") | |
| recommended = random.sample(list(products.keys()), 2) | |
| for product in recommended: | |
| st.write(f"- {product}") | |
| # Handle discounts | |
| elif "discount" in user_input.lower(): | |
| discount_code = st.text_input("Enter your discount code:", "") | |
| if discount_code and discount_code in discounts: | |
| st.write(f"Great! You can use the code {discount_code} for: {discounts[discount_code]}") | |
| elif discount_code: | |
| st.write("Sorry, that discount code is invalid.") | |
| # Advanced conversation via GPT-2 | |
| else: | |
| gpt2_response = generate_gpt2_response(user_input) | |
| st.write(f"Bot: {gpt2_response}") | |
| else: | |
| st.write("Start by asking about products, tracking your order, or getting discounts!") | |
| # Run the chatbot function | |
| if __name__ == '__main__': | |
| chatbot() | |