Spaces:
Sleeping
Sleeping
| 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_show_scenarios(): | |
| # scenarios = get_opportunities() | |
| # cl.user_session.set("scenarios", scenarios) | |
| # scenarios = cl.user_session.get("scenarios", None) | |
| # if scenarios is None: | |
| # await cl.Message(content="No scenarios found.").send() | |
| # return | |
| # scenario_actions = [] | |
| # for idx, row in scenarios.iterrows(): | |
| # if row['Opportunity Description'] != "": | |
| # scenario_action = cl.Action( | |
| # name="Scenario", | |
| # value=f"{idx}", # Send the row index as value | |
| # description=f"{row['Customer Name']}: {row['Opportunity Name']} ({row['Opportunity Stage']}) " | |
| # f"Value: {row['Opportunity Value']}. Meeting with {row['Customer Contact']} " | |
| # f"({row['Customer Contact Role']})" | |
| # ) | |
| # scenario_actions.append(scenario_action) | |
| # await cl.Message(content="Select a scenario (hover for details):", actions=scenario_actions).send() | |
| 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) |