| | 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 |