Initial commit
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
"""
|
||||
Prompt management for the Edison application.
|
||||
"""
|
||||
import os
|
||||
import logging
|
||||
from edison.utils import os_utils
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def get_prompt_template_path():
|
||||
"""
|
||||
Get the path to the prompt template file.
|
||||
|
||||
Returns:
|
||||
str: The path to the prompt template file.
|
||||
"""
|
||||
script_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
return os.path.join(script_dir, "edison.prompt")
|
||||
|
||||
def get_full_prompt(user_prompt, shell):
|
||||
"""
|
||||
Construct a full prompt from the template and user input.
|
||||
|
||||
Args:
|
||||
user_prompt (str): The user's prompt.
|
||||
shell (str): The shell to use.
|
||||
|
||||
Returns:
|
||||
str: The full prompt.
|
||||
"""
|
||||
# Get the path to the prompt template
|
||||
prompt_file = get_prompt_template_path()
|
||||
|
||||
try:
|
||||
# Load the prompt template
|
||||
with open(prompt_file, "r") as f:
|
||||
pre_prompt = f.read()
|
||||
|
||||
# Replace placeholders
|
||||
pre_prompt = pre_prompt.replace("{shell}", shell)
|
||||
pre_prompt = pre_prompt.replace("{os}", os_utils.get_os_friendly_name())
|
||||
|
||||
# Append the user prompt
|
||||
prompt = pre_prompt + user_prompt
|
||||
|
||||
# Make it a question if it's not already
|
||||
if prompt[-1:] != "?" and prompt[-1:] != ".":
|
||||
prompt += "?"
|
||||
|
||||
return prompt
|
||||
except Exception as e:
|
||||
logger.error(f"Error loading prompt template: {e}")
|
||||
# Fallback to a simple prompt
|
||||
return f"Act as a natural language to {shell} command translation engine on {os_utils.get_os_friendly_name()}. {user_prompt}"
|
||||
Reference in New Issue
Block a user