# Fallstudie zur Klassifizierung von Absolventenjobs

[Clavié et al., 2023](https://arxiv.org/abs/2303.07142) bieten eine Fallstudie zum Thema Prompt-Engineering, das auf einen mittelgroßen Anwendungsfall der Textklassifizierung in einem Produktionssystem angewandt wurde. Mit der Aufgabe, zu klassifizieren, ob ein Job wirklich eine "Einstiegsposition" ist, die für einen frischgebackenen Absolventen geeignet ist, oder nicht, bewerteten sie eine Reihe von Prompting-Techniken und berichten über ihre Ergebnisse unter Verwendung von GPT-3.5 (`gpt-3.5-turbo`).

Die Arbeit zeigt, dass LLMs alle anderen getesteten Modelle übertreffen, einschließlich einer extrem starken Ausgangsbasis in DeBERTa-V3. `gpt-3.5-turbo` übertrifft auch deutlich ältere GPT3-Varianten in allen Schlüsselmetriken, erfordert jedoch zusätzliches Output-Parsing, da seine Fähigkeit, sich an eine Vorlage zu halten, schlechter zu sein scheint als bei den anderen Varianten.

Die wichtigsten Erkenntnisse ihres Prompt-Engineering-Ansatzes sind:

- Bei Aufgaben wie dieser, bei denen kein Expertenwissen erforderlich ist, erzielte Few-shot CoT-Prompting schlechtere Ergebnisse als Zero-shot-Prompting in allen Experimenten.
- Der Einfluss des Prompts auf das Hervorrufen des richtigen Entscheidungsprozesses ist enorm. Wenn das Modell einfach darum gebeten wird, einen angegebenen Job zu klassifizieren, resultiert das in einer F1-Bewertung von 65,6, wohingegen das Modell nach dem Prompt-Engineering eine F1-Bewertung von 91,7 erreicht.
- Der Versuch, das Modell dazu zu zwingen, sich strikt an eine Vorlage zu halten, senkt die Leistung in allen Fällen (dieses Verhalten verschwindet in frühen Tests mit GPT-4, die nach der Veröffentlichung der Studie stattfanden).
- Viele kleine Änderungen haben eine unverhältnismäßig große Auswirkung auf die Leistung.
  - Die unten stehenden Tabellen zeigen alle getesteten Modifikationen.
  - Klare Anweisungen zu erteilen und die Schlüsselpunkte zu wiederholen, scheint der größte Leistungstreiber zu sein.
  - Etwas so Einfaches wie das Modell mit einem (menschlichen) Namen zu versehen und es als solches zu bezeichnen, erhöhte die F1-Bewertung um 0,6 Punkte.

### Getestete Prompt-Modifikationen

| Kurzbezeichnung | Beschreibung                                                              |
|-----------------|----------------------------------------------------------------------------|
| Baseline        | Stelle einen Stellenbeitrag zur Verfügung und frage, ob er für einen Absolventen geeignet ist. |
| CoT             | Gib einige Beispiele für korrekte Klassifikationen an, bevor du eine Anfrage stellst. |
| Zero-CoT        | Bitte das Modell, seine Überlegungen Schritt für Schritt darzulegen, bevor es seine Antwort gibt. |
| rawinst         | Gib Anweisungen zu seiner Rolle und der Aufgabe, indem du sie zur Benutzernachricht hinzufügst. |
| sysinst         | Gib Anweisungen zu seiner Rolle und der Aufgabe als Systemnachricht. |
| bothinst        | Teile die Anweisungen auf, mit der Rolle als Systemnachricht und der Aufgabe als Benutzernachricht. |
| mock            | Gib Anweisungen zur Aufgabe, indem du eine Diskussion simulierst, in der es sie anerkennt. |
| reit            | Verstärke Schlüsselelemente in den Anweisungen durch ihre Wiederholung. |
| strict          | Bitte das Modell, die Antwort strikt nach einer vorgegebenen Vorlage zu geben. |
| loose           | Frage nur nach der endgültigen Antwort, die einer gegebenen Vorlage folgen soll. |
| right           | Bitte das Modell, zur richtigen Schlussfolgerung zu kommen. |
| info            | Stelle zusätzliche Informationen zur Verfügung, um häufige Denkfehler anzugehen. |
| name            | Gib dem Modell einen Namen, mit dem wir uns im Gespräch darauf beziehen. |
| pos             | Gib dem Modell positives Feedback, bevor du eine Anfrage stellst. |


### Leistungsauswirkungen aller Prompt-Modifikationen

|                                        | Präzision     | Genauigkeit   | F1            | Template-Treue         |
|----------------------------------------|---------------|---------------|---------------|------------------------|
| _Baseline_                             | _61.2_        | _70.6_        | _65.6_        | _79%_                  |
| _CoT_                                  | _72.6_        | _85.1_        | _78.4_        | _87%_                  |
| _Zero-CoT_                             | _75.5_        | _88.3_        | _81.4_        | _65%_                  |
| _+rawinst_                             | _80_          | _92.4_        | _85.8_        | _68%_                  |
| _+sysinst_                             | _77.7_        | _90.9_        | _83.8_        | _69%_                  |
| _+bothinst_                            | _81.9_        | _93.9_        | _87.5_        | _71%_                  |
| +bothinst+mock                         | 83.3          | 95.1          | 88.8          | 74%                    |
| +bothinst+mock+reit                    | 83.8          | 95.5          | 89.3          | 75%                    |
| _+bothinst+mock+reit+strict_           | _79.9_        | _93.7_        | _86.3_        | _**98%**_              |
| _+bothinst+mock+reit+loose_            | _80.5_        | _94.8_        | _87.1_        | _95%_                  |
| +bothinst+mock+reit+right              | 84            | 95.9          | 89.6          | 77%                    |
| +bothinst+mock+reit+right+info         | 84.9          | 96.5          | 90.3          | 77%                    |
| +bothinst+mock+reit+right+info+name    | 85.7          | 96.8          | 90.9          | 79%                    |
| +bothinst+mock+reit+right+info+name+pos| **86.9**      | **97**        | **91.7**      | 81%                    |

Template-Treue bezieht sich darauf, wie häufig das Modell die Antwort im gewünschten Format gibt.
