A framework for assessing the capabilities of code generation of constraint domain-specific languages with large language models

Die vorgestellte Arbeit stellt ein generisches Framework zur Bewertung der Fähigkeit von Large Language Models vor, Code für domänenspezifische Sprachen wie OCL und Alloy zu generieren, und zeigt, dass diese Modelle bei solchen Sprachen im Vergleich zu Python schwächere Leistungen erbringen, wobei Strategien wie Code-Reparatur und Mehrfachversuche die Qualität jedoch signifikant verbessern können.

David Delgado, Lola Burgueño, Robert Clarisó

Veröffentlicht 2026-03-06
📖 5 Min. Lesezeit🧠 Tiefgang

Each language version is independently generated for its own context, not a direct translation.

Stellen Sie sich vor, Sie haben einen extrem talentierten, aber etwas eigensinnigen Koch namens KI. Dieser Koch kann fantastische Gerichte (Code) kochen, wenn Sie ihm sagen: „Mach mir eine Pizza" oder „Bake einen Kuchen". Er kennt die Rezepte für Pizza (Python) und Kuchen (Java) auswendig, weil er in seiner Ausbildung Millionen von Kochbüchern gelesen hat.

Aber was passiert, wenn Sie ihn bitten, ein sehr spezielles, seltenes Gericht zuzubereiten, das nur in einer kleinen Region bekannt ist? Zum Beispiel ein Gericht namens „OCL" oder „Alloy"? Diese sind wie Spezialgerichte für Software-Ingenieure (Constraint-Sprachen). Der Koch hat davon kaum je gehört. Wenn Sie ihn bitten, dieses Gericht zu kochen, wird er wahrscheinlich raten, Zutaten erfinden oder das Gericht einfach nicht fertig bekommen.

Dieses Papier ist im Grunde eine große Testküche, in der die Autoren herausfinden wollen:

  1. Wie gut kann dieser KI-Koch diese speziellen Gerichte kochen?
  2. Welche Tricks helfen ihm dabei, besser zu werden?
  3. Wie können wir sicherstellen, dass das Essen nicht nur gut aussieht, sondern auch schmeckt (korrekt ist)?

Hier ist die Erklärung der wichtigsten Punkte, einfach und mit Analogien:

1. Das Problem: Der Koch kennt die Spezialgerichte nicht

Der KI-Koch (Large Language Model) ist super in allgemeinen Sprachen wie Python. Aber bei den speziellen Sprachen (DSLs) für Regeln und Einschränkungen (Constraints) stolpert er oft.

  • Warum? Weil es im Internet kaum Kochbücher für diese speziellen Gerichte gibt. Der Koch hat wenig Übung.
  • Das Ergebnis: Er vermischt Zutaten (Syntax-Fehler) oder das Gericht ist ungenießbar (falsche Logik).

2. Der neue Werkzeugkasten: Das Bewertungs-Framework

Die Autoren haben einen modularen Werkzeugkasten gebaut. Stellen Sie sich das wie eine Koch-Show-Jury vor, die nicht nur schmeckt, sondern den gesamten Prozess analysiert.

  • Der Input: Sie geben dem Koch eine Beschreibung des Gerichts (Text) und eine Liste der erlaubten Zutaten (das Datenmodell).
  • Der Prozess: Der Koch versucht, das Gericht zu kochen.
  • Die Prüfung (Well-formedness): Zuerst schaut ein Assistent: „Ist das überhaupt ein essbares Gericht? Oder ist es nur ein Haufen roher Eier?" (Ist der Code syntaktisch korrekt?).
  • Die Prüfung (Correctness): Wenn es essbar aussieht, schmeckt es dann so, wie bestellt? (Ist die Logik richtig?).

3. Die Experimente: Was funktioniert?

Die Autoren haben den Koch mit verschiedenen Tricks getestet, um zu sehen, was ihn am besten unterstützt:

  • Die Sprache zählt am meisten:

    • Wenn Sie Python (Pizza) bestellen, ist der Koch fast immer perfekt.
    • Bei OCL und Alloy (den Spezialgerichten) scheitert er oft schon beim Anrichten.
    • Die Erkenntnis: Der Koch muss die Sprache kennen. Ein teurer, smarter Koch (wie GPT-4o) ist viel besser als ein günstigerer, kleinerer Koch (Open-Source-Modelle), der bei diesen Spezialgerichten oft gar nicht erst anfängt, weil ihm der Platz in seiner Küche (der „Context Window") fehlt.
  • Der Zettel mit den Anweisungen (Prompting):

    • Man könnte denken: „Wenn ich dem Koch einen noch detaillierteren Zettel mit Rezept schreibe, wird er besser."
    • Die Überraschung: Das hilft bei diesen Spezialgerichten kaum. Ob der Zettel kurz oder lang ist, macht wenig Unterschied. Der Koch braucht einfach mehr Erfahrung mit dem Gericht selbst, nicht mehr Anweisungen.
  • Mehrfache Versuche (Multiple Attempts):

    • Wenn der Koch das erste Mal scheitert, sagen Sie: „Versuch's noch einmal!"
    • Ergebnis: Das hilft enorm! Wenn Sie den Koch 3-mal versuchen lassen, ist die Chance viel höher, dass er es endlich richtig macht. Es ist wie beim Würfeln: Je öfter Sie würfeln, desto wahrscheinlicher ist eine 6.
  • Reparatur (Code Repair):

    • Wenn das Gericht etwas verbrannt ist, sagen Sie: „Mach das hier noch einmal, aber weniger heiß."
    • Ergebnis: Auch das hilft! Wenn Sie dem Koch den Fehler zeigen und ihn bitten, es zu korrigieren, wird das Ergebnis besser.
    • Der beste Trick: Kombinieren Sie beides! Lassen Sie ihn dreimal versuchen und korrigieren Sie die Fehler. Das kostet zwar mehr Zeit (und Geld), liefert aber das beste Essen.

4. Die großen Lehren (Takeaways) für den Alltag

Die Autoren geben uns drei einfache Regeln mit, wie man mit diesem KI-Koch umgehen sollte, wenn es um schwierige Spezialgerichte geht:

  1. Wählen Sie den richtigen Koch: Wenn Sie ein sehr spezielles Gericht (eine seltene Programmiersprache) brauchen, nehmen Sie den teuersten, erfahrensten Koch (GPT-4), nicht den billigen. Der kleine Koch versteht die Sprache einfach nicht.
  2. Schreiben Sie keine Romane: Es bringt wenig, den Koch mit extrem langen, komplizierten Anweisungen zu überfluten. Ein kurzer, klarer Auftrag reicht oft, solange der Koch die Sprache kennt.
  3. Geben Sie ihm Zeit und Chancen: Lassen Sie ihn nicht nur einmal versuchen. Lassen Sie ihn mehrmals kochen und korrigieren Sie die Fehler. Das ist der sicherste Weg zu einem guten Ergebnis.

Fazit

Dieses Papier sagt uns: KI ist toll, aber sie ist kein Zauberstab für alles. Bei speziellen Sprachen braucht sie mehr Hilfe, mehr Versuche und den richtigen „Koch". Mit dem richtigen Werkzeugkasten (dem Framework der Autoren) können wir herausfinden, wie wir den Koch am besten anleiten, damit er nicht nur „irgendwas" produziert, sondern wirklich funktionierenden Code.

Es ist wie beim Lernen einer neuen Sprache: Man wird nicht perfekt, indem man nur einmal eine Grammatikregel liest, sondern indem man viel übt, Fehler macht, sie korrigiert und immer wieder versucht.