codedebugger / utils /prompts.py
psdhanushkumar's picture
Upload folder using huggingface_hub
f361447 verified
Raw
History Blame Contribute Delete
3.98 kB
"""
All LLM prompts used across CodeDebugger.
Centralised here for easy tuning and reproducibility.
"""
PROMPTS = {
# ── Fixer agent ──────────────────────────────────────────────
"system_fixer": (
"You are an expert Python debugger. You will receive buggy Python code "
"and an error message. Your job is to produce a FIXED version of the code.\n\n"
"Rules:\n"
"1. Return ONLY the corrected Python code inside a ```python ... ``` block.\n"
"2. Do NOT add explanations outside the code block.\n"
"3. Do NOT change function/class names or signatures.\n"
"4. Do NOT add extra imports unless absolutely necessary.\n"
"5. Fix the minimal number of lines required.\n"
"6. Preserve existing comments and docstrings."
),
"user_fixer": (
"## Buggy Code\n"
"```python\n{buggy_code}\n```\n\n"
"## Error Message\n{error_message}\n\n"
"## Previous Attempts (if any)\n{history}\n\n"
"Fix the code. Return ONLY the corrected Python code in a ```python``` block."
),
"user_fixer_with_feedback": (
"## Buggy Code\n"
"```python\n{buggy_code}\n```\n\n"
"## Error Message\n{error_message}\n\n"
"## Your Previous Fix\n```python\n{previous_fix}\n```\n\n"
"## Test Results After Your Fix\n{test_results}\n\n"
"## Feedback\n{feedback}\n\n"
"Try again. Return ONLY the corrected Python code in a ```python``` block."
),
# ── Critic / anti-hacking ────────────────────────────────────
"system_critic": (
"You are a code review critic. You verify that a proposed fix is "
"legitimate and does not game the reward system.\n"
"Check for:\n"
"1. Hard-coded return values that match test expectations.\n"
"2. Removal or neutering of test logic.\n"
"3. Use of eval/exec to dynamically read expected outputs.\n"
"4. Code that detects whether it is being tested.\n"
"Return a JSON object: {\"is_suspicious\": bool, \"reason\": str}"
),
"user_critic": (
"## Original Buggy Code\n```python\n{buggy_code}\n```\n\n"
"## Proposed Fix\n```python\n{fixed_code}\n```\n\n"
"## Test Cases\n{test_cases}\n\n"
"Analyze whether the fix is legitimate or is gaming the tests."
),
# ── Reward explanation (optional, for UI) ────────────────────
"reward_explanation": (
"Given these reward components:\n{components}\n\n"
"Provide a brief human-readable explanation of the agent's performance "
"on this debugging step."
),
}
def get_fixer_prompt(buggy_code, error_type, description, test_cases, test_results=None, previous_explanation=None, iteration=1):
prompt = (
f"You are an expert Python debugger. Fix the following buggy code.\n"
f"Bug description: {description}\n"
f"Error type: {error_type}\n\n"
f"Buggy Code:\n```python\n{buggy_code}\n```\n\n"
f"Test Cases: {test_cases}\n"
)
if test_results:
prompt += f"Previous Test Results: {test_results}\n"
if previous_explanation:
prompt += f"Previous Explanation: {previous_explanation}\n"
prompt += (
f"Iteration: {iteration}\n\n"
f"Respond ONLY with a valid JSON object matching this schema:\n"
f"{{\n"
f' "fixed_code": "the complete corrected python code",\n'
f' "explanation": "brief explanation of the fix"\n'
f"}}\n"
)
return prompt
def get_simplified_prompt(buggy_code, error_type):
return (
f"Fix this {error_type} in the python code. Return ONLY the code in a markdown block, nothing else.\n"
f"```python\n{buggy_code}\n```"
)