Ontwerp een aangepaste code generator op basis van mijn specificaties
description
Met deze prompt kun je een op maat gemaakte code generator ontwikkelen die specifiek is afgestemd op jouw behoeften, waardoor je repetitieve programmeertaken automatiseert en de productiviteit verhoogt. Het helpt je ook om inzicht te krijgen in de architectuur en implementatie van dergelijke tools, wat uniek is vergeleken met bestaande prompts die zich richten op debugging of optimalisatie.
prompt
Help me een op maat gemaakte code generator te ontwerpen die automatisch code genereert volgens mijn specificaties. Mijn specificaties zijn: <beschrijf j ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een overzicht van een op maat gemaakte codegenerator die automatisch code genereert op basis van jouw specificaties.
**Architectuur:**
1. **Inputverwerking:** Ontvangt specificaties in JSON-formaat met className, attributes en methods.
2. **Codegeneratie Engine:** Een module die op basis van de input een class-definitie in Python aanmaakt.
3. **Output:** Genereerde Python-code wordt als string teruggegeven, klaar voor gebruik of opslaan.
**Gebruikte technologieën:**
- Python (voor de implementatie)
- JSON (voor input specificaties)
- Stringverwerking en formatting voor codegeneratie
---
### Voorbeeldimplementatie in Python:
```python
import json
def genereer_code(specificaties):
class_name = specificaties['className']
attributes = specificaties['attributes']
methods = specificaties['methods']
# Begin van de class
code = f"class {class_name}:\n"
# Constructor genereren
code += " def __init__(self"
for attr in attributes:
code += f", {attr}=None"
code += "):\n"
for attr in attributes:
code += f" self.{attr} = {attr}\n"
code += "\n"
# Method(en) toevoegen
for method in methods:
if method == "groet":
code += f" def {method}(self):\n"
# Voorbeeld van een standaard groet
code += f" print(f\"Hallo, mijn naam is {{self.naam}} en ik ben {{self.leeftijd}} jaar oud.\")\n\n"
else:
# Optioneel: generiek voor andere methodes
code += f" def {method}(self):\n"
code += " pass\n\n"
return code
# Voorbeeld gebruik:
specificaties_json = '''
{
"className": "Persoon",
"attributes": ["naam", "leeftijd"],
"methods": ["groet"]
}
'''
specificaties = json.loads(specificaties_json)
gegenereerde_code = genereer_code(specificaties)
print(gegenereerde_code)
```
**Uitleg:**
- De functie `genereer_code()` neemt een dictionary met specificaties.
- De class wordt opgebouwd met een constructor die de attributen initialiseerd.
- Voor elke methode wordt een standaard implementatie gegenereerd, bijvoorbeeld de `groet()` methode.
- Het resultaat is een string met de volledige class-definitie in Python.
---
**Gebruik:**
Je kunt deze code aanpassen om meer methodes, andere talen of complexere logica toe te voegen, afhankelijk van jouw wensen.
Voor uitgebreide functionaliteit kun je ook gebruik maken van code templating libraries zoals Jinja2.
provider: deepseek
model: deepseek-chat
Zeker, ik help je een op maat gemaakte code generator te ontwerpen. Hier is een complete oplossing:
## Architectuur
**Drie-laags architectuur:**
1. **Input Laag**: Verwerkt JSON-specificaties en valideert de structuur
2. **Template Laag**: Bevat sjablonen voor klassen, attributen en methodes
3. **Generator Laag**: Combineert input met templates om code te genereren
## Gebruikte Technologieën
- **Python 3.x** (hoofdprogrammeertaal)
- **Jinja2** (templating engine voor flexibele codegeneratie)
- **JSON** (voor specificatieformaat)
- **Built-in string formatting** (alternatief voor templates)
## Voorbeeldimplementatie
```python
import json
from typing import Dict, Any
class CodeGenerator:
def __init__(self):
self.templates = {
'class': (
"class {class_name}:\n"
" def __init__(self, {init_params}):\n"
" {init_body}\n\n"
" {methods}\n"
),
'method': (
" def {method_name}(self{method_params}):\n"
" {method_body}\n"
)
}
def generate_code(self, spec: Dict[str, Any]) -> str:
"""Genereert Python code op basis van specificaties"""
# Valideer specificaties
if not all(key in spec for key in ['className', 'attributes', 'methods']):
raise ValueError("Ongeldige specificatiestructuur")
# Genereer __init__ parameters en body
init_params = ', '.join([f"{attr}=None" for attr in spec['attributes']])
init_body = '\n '.join([f"self.{attr} = {attr}" for attr in spec['attributes']])
# Genereer methodes
methods_code = []
for method in spec['methods']:
method_template = self.templates['method']
method_body = self._get_method_body(method)
method_code = method_template.format(
method_name=method,
method_params="",
method_body=method_body
)
methods_code.append(method_code)
methods = '\n\n'.join(methods_code)
# Genereer complete klasse
class_code = self.templates['class'].format(
class_name=spec['className'],
init_params=init_params,
init_body=init_body,
methods=methods
)
return class_code
def _get_method_body(self, method_name: str) -> str:
"""Retourneert method body op basis van methodenaam"""
method_bodies = {
'groet': 'return f"Hallo, mijn naam is {self.naam} en ik ben {self.leeftijd} jaar oud."',
# Voeg hier meer method bodies toe voor andere methodes
}
return method_bodies.get(method_name, 'pass')
# Gebruik van de code generator
if __name__ == "__main__":
# Jouw specificaties
specificaties = {
"className": "Persoon",
"attributes": ["naam", "leeftijd"],
"methods": ["groet"]
}
# Genereer code
generator = CodeGenerator()
gegenereerde_code = generator.generate_code(specificaties)
print("Gegenereerde Python code:")
print("=" * 50)
print(gegenereerde_code)
# Optioneel: opslaan naar bestand
with open("Persoon.py", "w", encoding="utf-8") as f:
f.write(gegenereerde_code)
```
## Uitvoer
De gegenereerde code ziet er als volgt uit:
```python
class Persoon:
def __init__(self, naam=None, leeftijd=None):
self.naam = naam
self.leeftijd = leeftijd
def groet(self):
return f"Hallo, mijn naam is {self.naam} en ik ben {self.leeftijd} jaar oud."
```
## Uitbreidingsmogelijkheden
1. **Meer templates**: Voeg ondersteuning toe voor andere programmeertalen
2. **Validatie**: Uitgebreidere validatie van input specificaties
3. **Configuratie**: Laat gebruikers templates aanpassen via configuratiebestanden
4. **Import statements**: Automatisch genereren van benodigde imports
5. **Documentatie**: Auto-generatie van docstrings
Deze architectuur is schaalbaar en kan eenvoudig worden uitgebreid met nieuwe functies en ondersteuning voor extra programmeertalen.