Spaces:
Runtime error
Runtime error
File size: 7,021 Bytes
2a3cc9a 0441352 9dfc326 0441352 4186ad1 8601311 ed8a2ee 0441352 661fbe3 0441352 6c3103e 6e041fc 0441352 f710d56 0441352 3f7079c 4846261 3f7079c 0441352 93952b1 661fbe3 0441352 661fbe3 0441352 3f7079c 0441352 |
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 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
import gradio as gr
import random
import time
import os
from sales_helper import SalesGPT
from analyzer import Summarizer,SentimentAnalyzer
from langchain_openai import AzureChatOpenAI
from openai import AzureOpenAI
llm = AzureChatOpenAI(temperature=0,deployment_name="GPT-3")
from time import sleep
sales_agent = SalesGPT.from_llm(llm, verbose=False)
# init sales agent
sales_agent.seed_agent()
stage = "\n"
bot_conversation = ""
customer_conversation = ""
convo_history = sales_agent.conversation_history
client = AzureOpenAI()
def user(user_message, history):
if user_message:
sales_agent.human_step(user_message)
return "", history + [[user_message, None]]
def stages():
global stage
stage += "\n\n"+sales_agent.determine_conversation_stage()
return stage
def download_report():
global convo_history
sales_evaluation_criteria = {
"understanding": "Does the salesperson understand the customer pain points and challenges?",
"opening_effectiveness": "Was the opening of the pitch effective?",
"focus_on_benefits": "Was there sufficient focus and emphasis on customer benefits of the products/features pitched?",
"trust_building": "Did the salesperson establish trust and credibility by sharing testimonials, case studies, references, success stories of other satisfied customers?",
"urgency_creation": "Did the salesperson create urgency, such as through time-sensitive offers or consequences of not taking the decision?",
"objection_handling": "Did the salesperson handle objections well and proactively address/prepared for the objections?",
"engagement": "Was the conversation engaging?",
"balance_of_talk_and_listen": "Was there a balance between the salesperson talking and listening to the customer?",
"closing_strategy": "Was there a clear call to action, summarization, and reiteration of the value proposition in the close strategy?",
"purposefulness": "Throughout the pitch/conversation, was the conversation purposeful, and did it end with clear next steps?"
}
client = AzureOpenAI()
conversation = [
{"role": "system", "content": f"You Are Context verification Reporter.using these condition {sales_evaluation_criteria} to verify following context to Give me a Report Form of the context Scoring and Reason for Scoring."},
{"role": "user", "content": f""" this is the Context:{convo_history}.
"""}
]
response = client.chat.completions.create(
model="GPT-3",
messages=conversation,
temperature=0,
max_tokens=1000
)
message = response.choices[0].message.content
report_file_path = f"{os.getcwd()}/report.txt"
print('CWD : ',os.getcwd())
with open(report_file_path,"w") as file:
file.write(message)
return message
def bot(history):
bot_message = sales_agent._call({})
history[-1][1] = bot_message
return history
summarizer = Summarizer()
sentiment = SentimentAnalyzer()
def history_of_both(convo_history):
# Initialize lists to store messages from customer and bot
customer_messages = []
bot_messages = []
# Iterate through the input list
for message in convo_history:
if message.endswith('<END_OF_TURN>'):
# Customer message
if len(customer_messages) == len(bot_messages):
customer_messages.append(message[:-13])
else:
bot_messages.append(message[:-13])
else:
# Bot message
if len(customer_messages) == len(bot_messages):
bot_messages.append(message)
else:
customer_messages.append(message)
bot_conversation = " ".join(bot_messages)
customer_conversation = " ".join(customer_messages)
return bot_conversation, customer_conversation
def generate_convo_summary():
global convo_history
summary=summarizer.generate_summary(convo_history)
return summary
def sentiment_analysis():
global convo_history
bot_conversation, customer_conversation = history_of_both(convo_history)
customer_conversation_sentiment_scores = sentiment.analyze_sentiment(customer_conversation)
bot_conversation_sentiment_scores = sentiment.analyze_sentiment(bot_conversation)
return "Sentiment Scores for customer_conversation:\n"+customer_conversation_sentiment_scores+"\nSentiment Scores for sales_agent_conversation:\n"+bot_conversation_sentiment_scores
def emotion_analysis():
global convo_history,bot_conversation,customer_conversation
bot_conversation, customer_conversation = history_of_both(convo_history)
customer_emotion=sentiment.emotion_analysis(customer_conversation)
bot_emotion=sentiment.emotion_analysis(bot_conversation)
return "Emotions for customer_conversation:\n"+customer_emotion+"\nEmotions for sales_agent_conversation:\n"+bot_emotion
def clear_stages():
global stage
stage = ""
sales_agent.conversation_history = []
return ""
with gr.Blocks(theme="Taithrah/Minimal") as demo:
gr.HTML("""<center><h1>Sales Persona Chatbot</h1></center>""")
with gr.Row():
with gr.Column():
chatbot = gr.Chatbot()
with gr.Column():
show_stages = gr.Textbox(label="Stages",lines=18,container=False)
with gr.Row():
with gr.Column(scale=0.70):
msg = gr.Textbox(show_label=False,container=False)
with gr.Column(scale=0.30):
clear = gr.Button("Clear")
with gr.Row():
with gr.Column(scale=0.50):
with gr.Row():
gen_report_view = gr.Textbox(label="Generated Report",container=False)
with gr.Row():
gen_report_btn = gr.Button("Generate Report")
report_down_btn = gr.DownloadButton(label="Download Report",value=f"{os.getcwd()}/report.txt")
with gr.Column(scale=0.50):
with gr.Row():
summary_view = gr.Textbox(label="Summary",container=False)
with gr.Row():
summary_btn = gr.Button("Generate Summary")
with gr.Row():
with gr.Column(scale=0.50):
with gr.Row():
sentiment_view = gr.Textbox(label="Sentiment",container=False)
with gr.Row():
sentiment_btn = gr.Button("Sentiment")
with gr.Column(scale=0.50):
with gr.Row():
emotion_view = gr.Textbox(label="Emotion",container=False)
with gr.Row():
emotion_btn = gr.Button("Emotion")
msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
bot, chatbot, chatbot
)
msg.submit(stages,[],show_stages)
gen_report_btn.click(download_report,[],gen_report_view,queue=False)
summary_btn.click(generate_convo_summary,[],summary_view)
sentiment_btn.click(sentiment_analysis,[],sentiment_view)
emotion_btn.click(emotion_analysis,[],emotion_view)
clear.click(lambda: None, None, chatbot, queue=False)
clear.click(lambda: None, None, show_stages, queue=False)
clear.click(clear_stages,[],show_stages)
demo.queue()
demo.launch()
|