import chainlit as cl from langchain_openai import ChatOpenAI from utils_data import get_company_data, get_opportunities from utils_prompt import get_chat_prompt async def prep_start(session_state): get_company_data(session_state) chat_prompt = get_chat_prompt() chat_model = ChatOpenAI(model=session_state.llm_model) simple_chain = chat_prompt | chat_model cl.user_session.set("chain", simple_chain) welcome_message = f"**Welcome to {session_state.company.name} SalesBuddy**\n*Home of {session_state.company.product}*" await cl.Message(content=welcome_message).send() await cl.Message(content=session_state.company.product_summary).send() scenarios = get_opportunities() cl.user_session.set("scenarios", scenarios) async def prep_research(session_state): research_title = "**Customer Research**" await cl.Message(content=research_title).send() research_message = "Enter customer name to research" await cl.Message(content=research_message).send() async def prep_sparring(session_state): 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()