File size: 5,014 Bytes
f946c51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import streamlit as st
from langchain.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate
from langchain.schema import SystemMessage, HumanMessage
import openai
import smtplib
from email.mime.text import MIMEText
import os
from dotenv import load_dotenv

# Load environment variables from .env file
load_dotenv()

# Set up OpenAI API credentials
openai.api_key = os.getenv("OPENAI_API_KEY")
email = os.getenv('EMAIL')
password = os.getenv('PASSWORD')

def main():
    st.title("AI Survey Bot Recommendation")
    st.write("**Answer a couple of questions to get a tailor-made response.**")

    # Question 1
    name = st.text_input("**Question 1: What is your name?**")

    # Question 2
    company_name = st.text_input("**Question 2: What is your company name?**")

    # Question 3
    company_location = st.text_input("**Question 3: Where is your company located?**")

    # Question 4    
    st.write("**Question 4: Are any of these a problem in your business?**")
    # Create a list of problems
    problems = [
        "**Getting leads**",
        "**Closing sales**",
        "**Retaining customers**",
        "**Finding the right talent**",
        "**Not having enough time**",
        "**Customer support**",
        "**Strategic thinking**",
        "**Other**"
    ]
    # Create two columns with equal width
    col1, col2 = st.columns(2)
    # Loop through the problems and create checkboxes in each column
    for i, problem in enumerate(problems):
        # Use the modulo operator to alternate between columns
        if i % 2 == 0:
            col1.checkbox(label=problem, key=problem)
        else:
            col2.checkbox(label=problem, key=problem)
    # If Other is selected, prompt the user for more explanation
    other_problem = ""
    if st.session_state.get("Other"):
        other_problem = st.text_input("**Can you give a further explanation of the problem?**")

    # Question 5
    time_consumers = st.text_area("**Question 5: What are the three biggest time consumers or deficiencies of your business?**")

    # Question 6
    strategy_struggles = st.text_area("**Question 6: When coming up with strategy, what are the struggles there?**")

    # Question 7
    email = st.text_input("**Question 7: Enter your Email to get the custom answers sent to you**")

    # Submit button
    if st.button("Submit"):
        # Save the survey data and send it to the user
        send_survey_results(name, company_name, company_location, problems, other_problem, time_consumers, strategy_struggles, email)

def send_survey_results(name, company_name, company_location, problems, other_problem, time_consumers, strategy_struggles, email):
    # Generate chatbot response using OpenAI GPT-3.5 Turbo
    system_message_template = SystemMessagePromptTemplate.from_template(
        template="You are a helpful assistant that recommends AI tools based on user's business needs."
    )
    human_message_template = HumanMessagePromptTemplate.from_template(template="{text}")

    chat_prompt = ChatPromptTemplate.from_messages([system_message_template, human_message_template])

    messages = chat_prompt.format_prompt(text=f"I am {name}, representing {company_name} located in {company_location}. We are facing the following problems in our business: {', '.join(problems)}. {other_problem}. The three biggest time consumers or deficiencies in our business are: {time_consumers}. When coming up with strategy, we struggle with: {strategy_struggles}.").to_messages()

    messages_dict = []
    for message in messages:
        if isinstance(message, SystemMessage):
            messages_dict.append({"role": "system", "content": message.content})
        elif isinstance(message, HumanMessage):
            messages_dict.append({"role": "user", "content": message.content})

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages_dict,
        max_tokens=100,
        n=1,
        stop=None,
        temperature=0.7,
        top_p=1.0,
        frequency_penalty=0.0,
        presence_penalty=0.0
    )

    # Extract the chatbot response
    chatbot_response = response.choices[0].message.content.strip()

    # Display the chatbot response
    st.subheader("Chatbot Response")
    st.write(chatbot_response)

    # Send the survey results to the user via email
    send_email(email, chatbot_response)

def send_email(email, message):
    # Set up the email parameters
    sender = "L.fanampe@gmail.com"
    receiver = email
    subject = "Chatbot Response"
    body = message

    # Create the email message
    email_message = MIMEText(body)
    email_message["Subject"] = subject
    email_message["From"] = sender
    email_message["To"] = receiver

    # Send the email
    with smtplib.SMTP("smtp.gmail.com", 587) as server:
        server.starttls()
        server.login(email, password)
        server.sendmail(sender, receiver, email_message.as_string())

if __name__ == "__main__":
    main()