|
|
|
import asyncio |
|
import chainlit as cl |
|
from datetime import datetime |
|
from .utils_data import get_company_data, get_opportunities, get_questions, get_customer_background |
|
from .utils_output import display_evaluation_results, display_llm_responses |
|
from .utils_objections import create_objections |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def callback_run_scenario(action): |
|
await cl.Message(content="*Preparing simulation - please wait ...*").send() |
|
index = 0 |
|
opportunities = cl.user_session.get("opportunities", None) |
|
if opportunities is None: |
|
await cl.Message(content="No scenarios found.").send() |
|
return |
|
await cl.Message(content="*Gathering opportunity information ...*").send() |
|
await asyncio.sleep(1) |
|
|
|
await cl.Message(content="*Customizing questions for this opportunity ...*").send() |
|
await asyncio.sleep(1) |
|
|
|
selected_opportunity = opportunities.iloc[index] |
|
session_state = cl.user_session.get("session_state", None) |
|
session_state.add_scenario_info(selected_opportunity) |
|
get_customer_background(session_state, selected_opportunity['Customer Name']) |
|
if session_state.ask_objections: |
|
print("creating objections") |
|
session_state.objections = await create_objections(session_state) |
|
questions = [] |
|
for obj in session_state.objections: |
|
print(obj) |
|
q = {"stage": session_state.opportunity.stage, "question": obj[3:], "ground_truth": ""} |
|
questions.append(q) |
|
session_state.questions = questions |
|
else: |
|
print("questions created") |
|
session_state.questions = get_questions(session_state.opportunity.stage, session_state.num_questions) |
|
for q in session_state.questions: |
|
print(q) |
|
opening_message = session_state.get_opening() |
|
await cl.Message(content=opening_message).send() |
|
start_actions = [ |
|
cl.Action(name="Start Simulation", value="start_simulation", description="Start Simulation"), |
|
] |
|
await cl.Message(content="Click to start simulation", actions=start_actions).send() |
|
|
|
async def callback_start_scenario(): |
|
print("callback_start_scenario()") |
|
session_state = cl.user_session.get("session_state", None) |
|
await cl.Message(content="3...").send() |
|
await asyncio.sleep(1) |
|
await cl.Message(content="2...").send() |
|
await asyncio.sleep(1) |
|
await cl.Message(content="1...").send() |
|
await asyncio.sleep(1) |
|
await cl.Message(content="**Simulation Starting**").send() |
|
await cl.Message(content="\n\n").send() |
|
start_time = datetime.now() |
|
print("setting start time") |
|
session_state.start_time = start_time |
|
output = f"{session_state.customer.contact_name} joins the zoom call" |
|
print(output) |
|
await cl.Message(content=output).send() |
|
await cl.Message(content="\n\n").send() |
|
|
|
async def callback_evaluate_performance(): |
|
session_state = cl.user_session.get("session_state", None) |
|
if session_state is None: |
|
await cl.Message(content="No session found.").send() |
|
return |
|
await display_evaluation_results(cl, session_state) |
|
|
|
async def callback_display_queries_responses(): |
|
session_state = cl.user_session.get("session_state", None) |
|
if session_state is None: |
|
await cl.Message(content="No session found.").send() |
|
return |
|
await display_llm_responses(cl, session_state) |
|
|