File size: 3,514 Bytes
48e8751
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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()