Spaces:
Sleeping
Sleeping
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()
|