| import os |
| from modules import app_constants,app_page_definitions |
| from modules import app_logger |
| |
| app_logger = app_logger.app_logger |
| work_dir = app_constants.WORKSPACE_DIRECTORY |
|
|
| def get_system_role(page, message_store): |
| system_role = app_page_definitions.PAGE_CONFIG.get(page, {}).get("system_role", "Default system role message") |
| message_store.update_message(page, "system", system_role) |
|
|
| def get_page_greeting(page_key, username="", files_indexed=[]): |
| """Return a greeting message for a specific page, including a list of indexed files.""" |
| try: |
| |
| default_greeting = "Hello! How can I assist you today?" |
| |
| greeting = app_page_definitions.PAGE_CONFIG.get(page_key, {}).get("greeting", default_greeting) |
|
|
| |
| if username: |
| greeting = greeting.replace("Hello", f"Hello {username}") |
|
|
| |
| if files_indexed: |
| files_list = "\n".join([f"{i+1}. {file}" for i, file in enumerate(files_indexed)]) |
| additional_message = f"I'm familiar with the following documents:\n{files_list}" |
| |
| greeting = f"{greeting}\n\n{additional_message}" |
|
|
| return greeting |
| except Exception as e: |
| |
| return f"Error generating greeting message: {e}" |
|
|
| def setup_initial_folders(): |
| docs_path = os.path.join(work_dir, "docs") |
| db_path = os.path.join(work_dir, "db") |
| tmp_path = os.path.join(work_dir, "tmp") |
| os.makedirs(docs_path, exist_ok=True) |
| os.makedirs(db_path, exist_ok=True) |
| os.makedirs(tmp_path, exist_ok=True) |
| processed_docs_path = work_dir+app_constants.PROCESSED_DOCS |
| if not os.path.exists(processed_docs_path): |
| open(processed_docs_path, 'a').close() |
|
|
| def construct_messages_to_send(page, message_store, prompt): |
| """ |
| Construct a list of messages to send to the language model. |
| |
| Args: |
| page (str): The current page identifier. |
| message_store (MessageStore): The message store instance containing message histories. |
| prompt (str): The current user prompt. |
| |
| Returns: |
| List[Dict[str, str]]: A list of messages structured for the language model. |
| """ |
| messages_to_send = [] |
| |
| system_message_content = message_store.get_message(page, "system") |
| greeting_message_content = message_store.get_message(page, "greeting") |
| if system_message_content: |
| messages_to_send.append({"role": "system", "content": system_message_content +'\n\n'+app_constants.ENCHANCE_PROMPT}) |
| if greeting_message_content: |
| messages_to_send.append({"role": "assistant", "content": greeting_message_content}) |
|
|
| |
| history_messages = message_store.get_history(page) |
|
|
| |
| num_messages_to_include = 5 |
| if len(history_messages) < num_messages_to_include: |
| num_messages_to_include = len(history_messages) |
|
|
| recent_history = history_messages[-num_messages_to_include:] |
| for msg in recent_history: |
| messages_to_send.append({"role": msg["role"], "content": msg["content"]}) |
| |
| |
| messages_to_send.append({"role": "user", "content": prompt}) |
|
|
| return messages_to_send |
|
|
|
|
| def get_content_mapping_to_module(content_type): |
| content_type_lower = content_type.lower() |
| |
| for page, config in app_page_definitions.PAGE_CONFIG.items(): |
| |
| if 'content' in config: |
| |
| content_list_lower = [ct.lower() for ct in config['content']] |
| |
| if content_type_lower in content_list_lower: |
| return page |
| |
| return "nav_playbooks" |
|
|
| def read_processed_log(): |
| processed_paths = set() |
| log_file_path = os.path.join(work_dir, 'index_processed.log') |
| |
| try: |
| with open(log_file_path, 'r') as log_file: |
| for line in log_file: |
| parts = line.strip().split(',') |
| if len(parts) > 1: |
| |
| file_path = parts[-1] |
| processed_paths.add(file_path) |
| return processed_paths |
| except FileNotFoundError: |
| app_logger.error(f"File not found: {log_file_path}") |
| except Exception as e: |
| app_logger.error(f"An error occurred while reading the log file: {e}") |
| return processed_paths |