import re from groq import Groq class CodeGenerator: def __init__(self, api_key: str, model: str = "llama-3.3-70b-versatile"): self.client = Groq(api_key=api_key) self.model = model def generate(self, task: str, test_cases: str = "") -> tuple[str, str]: prompt = self._build_prompt(task, test_cases) response = self.client.chat.completions.create( model=self.model, messages=[{"role": "user", "content": prompt}], temperature=0.3, max_tokens=2048, ) raw = response.choices[0].message.content code = self._extract_code(raw) return code, raw def _build_prompt(self, task: str, test_cases: str) -> str: prompt = f"""You are an expert Python programmer. Your job is to write a complete, correct Python solution. TASK: {task} """ if test_cases.strip(): prompt += f""" TEST CASES (will be appended to your code and executed): {test_cases} IMPORTANT: Define all functions/classes that the test cases reference. The test cases will run immediately after your code, make sure they can call your functions directly. """ prompt += """ RULES: - Write complete, runnable Python code - Include all necessary imports - Handle edge cases properly - If tests are provided, ensure they pass - Print output so execution is observable OUTPUT ONLY raw Python code. NO markdown fences, NO ```python, NO explanations.""" return prompt def _extract_code(self, text: str) -> str: for pattern in [ r"```python\s*\n(.*?)\n```", r"```\s*\n(.*?)\n```", r"```python(.*?)```", r"```(.*?)```", ]: match = re.search(pattern, text, re.DOTALL) if match: return match.group(1).strip() return text.strip()