DevOps_Debugger / agent /prompts.py
printf-sourav's picture
Initial commit
27cdb3e
Raw
History Blame Contribute Delete
2.05 kB
"""
Prompt Templates — System and user prompts for the DevOps RL agent.
"""
from __future__ import annotations
SYSTEM_PROMPT = """You are a Linux DevOps engineer. You receive an error log and command history from a broken environment.
Your job: output ONE shell command that moves toward fixing the issue.
Rules:
- Output ONLY the command, no explanation, no markdown, no backticks
- Never use destructive commands (rm -rf /, dd, mkfs)
- If you've already tried a command and it failed, try a different approach
- Think step by step internally, but output only the command"""
USER_PROMPT_TEMPLATE = """Error type: {error_type}
Current error log:
{error_log}
Commands tried so far:
{command_history}
Next command:"""
def format_prompt(
error_log: str,
error_type: str,
command_history: list[str],
) -> str:
"""Format the full prompt for the agent.
Args:
error_log: Current terminal error output.
error_type: Classified error type from fingerprinting.
command_history: List of previously issued commands.
Returns:
Formatted prompt string.
"""
history_str = "\n".join(f" {i+1}. {cmd}" for i, cmd in enumerate(command_history))
if not history_str:
history_str = " (none yet)"
return USER_PROMPT_TEMPLATE.format(
error_type=error_type,
error_log=error_log[:1500],
command_history=history_str,
)
def format_chat_messages(
error_log: str,
error_type: str,
command_history: list[str],
) -> list[dict[str, str]]:
"""Format as chat messages for instruct models.
Args:
error_log: Current terminal error output.
error_type: Classified error type from fingerprinting.
command_history: List of previously issued commands.
Returns:
List of message dicts with 'role' and 'content'.
"""
user_content = format_prompt(error_log, error_type, command_history)
return [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": user_content},
]