import os import json from typing import Dict, List def load_prompts_from_file(file_path: str) -> Dict[str, str]: """ Load multiple prompts from a file. Args: file_path (str): Path to the file containing prompts. Returns: Dict[str, str]: A dictionary of prompt names and their content. Raises: FileNotFoundError: If the specified file is not found. """ if not os.path.exists(file_path): raise FileNotFoundError(f"Prompts file not found: {file_path}") prompts = {} current_prompt = None current_content = [] with open(file_path, "r") as file: for line in file: line = line.strip() if line.startswith("[") and line.endswith("]"): if current_prompt: prompts[current_prompt] = "\n".join(current_content).strip() current_prompt = line[1:-1] current_content = [] elif line: current_content.append(line) if current_prompt: prompts[current_prompt] = "\n".join(current_content).strip() return prompts def load_tool_prompts(tools: List[str], tools_json_path: str) -> str: """ Load prompts for specified tools from the tools.json file. Args: tools (List[str]): List of tool names to load prompts for. tools_json_path (str): Path to the tools.json file. Returns: str: A string containing prompts for the specified tools. Raises: FileNotFoundError: If the tools.json file is not found. """ if not os.path.exists(tools_json_path): raise FileNotFoundError(f"Tools JSON file not found: {tools_json_path}") with open(tools_json_path, "r") as file: tools_data = json.load(file) tool_prompts = [] for tool in tools: if tool in tools_data: tool_info = tools_data[tool] tool_prompt = f"Tool: {tool}\n" tool_prompt += f"Description: {tool_info['description']}\n" tool_prompt += f"Usage: {tool_info['prompt']}\n" tool_prompt += f"Input type: {tool_info['input_type']}\n" tool_prompt += f"Return type: {tool_info['return_type']}\n\n" tool_prompts.append(tool_prompt) return "\n".join(tool_prompts) def load_system_prompt( system_prompts_file: str, system_prompt_type: str, tools: List[str], tools_json_path: str, ) -> str: """ Load the system prompt by combining the system prompt and tool information. Args: system_prompts_file (str): Path to the file containing system prompts. system_prompt_type (str): The type of system prompt to use. tools (List[str]): List of tool names to include in the prompt. tools_json_path (str): Path to the tools.json file. Returns: str: The system prompt combining system prompt and tool information. """ prompts = load_prompts_from_file(system_prompts_file) system_prompt = prompts.get(system_prompt_type, "GENERAL_ASSISTANT") tool_prompts = load_tool_prompts(tools, tools_json_path) return f"{system_prompt}\n\nTools:\n{tool_prompts}".strip()