nat232's picture
Update app.py
89a666f verified
import sys
import os
import traceback
import json
import logging
import gradio as gr
sys.path.append(os.path.abspath('common'))
sys.path.append(os.path.abspath('researchsimulation'))
from crewai import Crew, Task, Process
from RespondentAgent import *
from LLMConfig import *
from PanelInterface import *
# Configure logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# MAIN
if __name__ == "__main__":
logging.info("Loading environment...")
Config.load_environment(".", "invictus.dev1")
logging.info("Environment loaded. Printing environment:")
Config.print_environment()
logging.info("Initializing processor_llm...")
processor_llm = get_processor_llm_instance()
logging.info("processor_llm initialized.")
logging.info("Initializing respondent_agent_llm...")
respondent_agent_llm = get_respondent_agent_llm_instance()
logging.info("respondent_agent_llm initialised.")
# Load all user profiles from the Excel file
data_dictionary = DataDictionary.generate_dictionary(Config.data_dictionary_file)
logging.info(f"Generated data dictionary: {data_dictionary}")
personality_assessment = PVAssessment.generate_personality_assessment(Config.personality_question_file)
logging.info(f"Generated personality_assessment: {data_dictionary}")
respondent_agent_user_profiles = UserProfile.read_user_profiles_from_excel(Config.respondent_details_file, data_dictionary, personality_assessment)
# Create respondent agents for all profiles
respondent_agents_dict = {
profile.get_field("Demographics", "Name"): RespondentAgent.create(
profile, f"{Config.config_dir}/fastfacts/{profile.ID}_fast_facts.xlsx", respondent_agent_llm
)
for profile in respondent_agent_user_profiles[:5]
}
logging.info(f"Total agents created: {len(respondent_agents_dict)}")
demo = build_interface(respondent_agents_dict, processor_llm)
logging.info("Launching Gradio interface...")
demo.launch(debug=True)