sidekick_poc / utils_callbacks.py
rchrdgwr's picture
voice and cleanup
1c1bc79
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
# 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="Please wait, I am gathering information...").send()
index = int(action.value)
scenarios = cl.user_session.get("scenarios", None)
if scenarios is None:
await cl.Message(content="No scenarios found.").send()
return
await cl.Message(content="...gathering scenario information").send()
await asyncio.sleep(1)
await cl.Message(content="...creating questions").send()
await asyncio.sleep(1)
selected_scenario = scenarios.iloc[index]
session_state = cl.user_session.get("session_state", None)
session_state.add_scenario_info(selected_scenario)
get_customer_background(session_state, selected_scenario['Customer Name'])
session_state.questions = get_questions(session_state.opportunity.stage, session_state.num_questions)
opening_message = session_state.get_opening()
await cl.Message(content=opening_message).send()
start_actions = [
cl.Action(name="Start Scenario", value="start_scenario", description="Start Scenario"),
]
await cl.Message(content="Click to start scenario", actions=start_actions).send()
async def callback_start_scenario():
print("callback_start_scenario()")
session_state = cl.user_session.get("session_state", None)
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()
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)