Praktisches Prompt Engineering für kleinere LLMs

Maud Nalpas
Maud Nalpas

Die Effektivität eines Large Language Models hängt stark von den Anweisungen ab, geben. Prompt Engineering Prozess, bei dem Fragen so formuliert werden, dass ein LLM die besten Ergebnisse erzielt. Dies ist ein entscheidender Schritt bei der Implementierung einer LLM-basierten Funktion.

Das Prompt Engineering ist ein iterativer Prozess. Wenn Sie mit verschiedenen ist Ihnen wahrscheinlich aufgefallen, dass Sie Ihren Prompt um ein besseres Ergebnis zu erzielen.

Dies gilt auch für Modelle unterschiedlicher Größe.

Chatoberflächen auf Grundlage großer LLMs wie Gemini oder ChatGPT, mit minimalem Prompt-Aufwand zu zufriedenstellenden Ergebnissen führen. Wenn Sie jedoch mit einem standardmäßigen, kleineren LLM arbeiten, das nicht perfekt abgestimmt ist, Ihren Ansatz anpassen müssen.

Kleinere LLMs sind weniger leistungsstark und haben einen kleineren Informationspool, aus dem sie schöpfen können.

Was meinen wir mit „kleineren LLMs“?

Das Definieren von LLM-Größen ist kompliziert und manchmal die von den Entscheidungsträgern offengelegt wurden.

In diesem Dokument werden „kleinere LLMs“ steht für jedes Modell unter 30 Milliarden Parametern. Derzeit können Modelle mit einigen Millionen bis einigen Milliarden Parametern im Browser auf Verbrauchergeräten ausgeführt werden können.

Wo werden kleinere LLMs verwendet?

  • Generative AI auf dem Gerät oder im Browser, z. B. bei Verwendung von Gemma 2B mit der LLM Inference API von MediaPipe (auch für reine CPU-Geräte geeignet) oder DistilBert im Browser mit Transformers.js Es ist nur möglich, ein Modell herunterzuladen und eine Inferenz auf das Gerät eines Nutzers auszuführen mit diesen kleineren LLMs arbeiten, um die Webdownloads in einem angemessenen Rahmen zu halten, die Speicher- und GPU-/CPU-Beschränkungen eines Geräts.
  • Kundenspezifische serverseitige generative KI. Kleine Modelle mit offener Gewichtung wie Gemma 2B, Gemma 7B oder Gemma 27B können auf Ihrem eigenen Server ausgeführt werden (und und optional eine Feinabstimmung vornehmen).

Erste Schritte

Chat-Oberflächen, die auf großen LLMs wie Gemini oder ChatGPT basieren, können oft mit minimalem Prompt-Aufwand zufriedene Ergebnisse liefern. Wenn Sie jedoch mit kleineren LLMs arbeiten, müssen Sie Ihren Ansatz anpassen. Kleinere LLMs sind weniger leistungsstark und haben einen kleineren Informationspool, aus dem sie schöpfen können.

Geben Sie Kontext und genaue Anweisungen zum Formatieren an.

Um bei kleinen LLMs optimale Ergebnisse zu erzielen, sollten Sie detailliertere und spezifische Prompts erstellen.

Beispiel:

Based on a user review, provide a product rating as an integer between 1 and 5. \n
Only output the integer.

Review: "${review}"
Rating:
Eingabe (Überprüfung) Ausgabe (rating)
  Größeres LLM (Gemini 1.5) Kleineres LLM (Gemma 2B)
Die Passform ist absolut sehenswert! Verteilen das Gewicht gut und überraschend komfortabel, selbst bei ganztägigen Wanderungen. Empfehlenswert. 5 4 von 5 Sternen**
Die Träger waren dünn und sie begannen, meine Schultern unter schwerer Last zu vergraben. 1 2/5

Gemini 1.5 liefert mit diesem einfachen Prompt die gewünschte Ausgabe, aber Gemmas Ausgabe nicht zufriedenstellend ist:

  • Das Format ist falsch. Wir haben eine Ganzzahl für die Bewertung angefordert.
  • Die Bewertung scheint nicht ganz zutreffend zu sein. Die erste Bewertung ist begeistert genug, um eine 5-Sterne-Bewertung auszuzeichnen.

Um dieses Problem zu beheben, müssen wir Prompt-Engineering-Techniken verwenden, Prompts mit nur einer Aufnahme, wenigen und mehreren Aufnahmen und Ketten-of-Thought-Prompts. Außerdem müssen wir klare Formatierungsanweisungen geben und darauf bestehen, dass das Modell alle Bewertungen nutzen.

Beispiel:

`Analyze a product review, and then based on your analysis give me the
corresponding rating (integer). The rating should be an integer between 1 and
5. 1 is the worst rating, and 5 is the best rating. A strongly dissatisfied
review that only mentions issues should have a rating of 1 (worst). A strongly
satisfied review that only mentions positives and upsides should have a rating
of 5 (best). Be opinionated. Use the full range of possible ratings (1 to
5). \n\n
    \n\n
    Here are some examples of reviews and their corresponding analyses and
    ratings:
    \n\n
    Review: 'Stylish and functional. Not sure how it'll handle rugged outdoor
    use, but it's perfect for urban exploring.'
    Analysis: The reviewer appreciates the product's style and basic
    functionality. They express some uncertainty about its ruggedness but
    overall find it suitable for their intended use, resulting in a positive,
    but not top-tier rating.
    Rating (integer): 4
    \n\n
    Review: 'It's a solid backpack at a decent price. Does the job, but nothing
    particularly amazing about it.'
    Analysis: This reflects an average opinion. The backpack is functional and
    fulfills its essential purpose. However, the reviewer finds it unremarkable
    and lacking any standout features deserving of higher praise.
    Rating (integer): 3
    \n\n
    Review: 'The waist belt broke on my first trip! Customer service was unresponsive too. Would not recommend.'
    Analysis: A serious product defect and poor customer service experience naturally warrants the lowest possible rating. The reviewer is extremely unsatisfied with both the product and the company.
    Rating (integer): 1
    \n\n
    Review: 'Love how many pockets and compartments it has. Keeps everything organized on long trips. Durable too!'
    Analysis: The enthusiastic review highlights specific features the user loves (organization and durability), indicating great satisfaction with the product. This justifies the highest rating.
    Rating (integer): 5
    \n\n
    Review: 'The straps are a bit flimsy, and they started digging into my shoulders under heavy loads.'
    Analysis: While not a totally negative review, a significant comfort issue leads the reviewer to rate the product poorly. The straps are a key component of a backpack, and their failure to perform well under load is a major flaw.
    Rating (integer): 1
    \n\n
    Now, here is the review you need to assess:
    \n
    Review: "${review}" \n`;
Eingabe (Überprüfung) Ausgabe mit einem kleineren LLM (Gemma 2B)

Die Passform ist absolut sehenswert! Verteilt das Gewicht gut und überraschend auch für ganztägige Wanderungen komfortabel. Empfehlenswert.

Analyse: Diese Rezension ist äußerst positiv und hebt die Vorzüge des Produkts hervor. Passform und Komfort, was für eine große Zufriedenheit mit dem Produkt steht. Dieses rechtfertigt eine hohe Bewertung.

Bewertung (Ganzzahl): 5

Die Träger waren dünn und sie begannen, sich in meine Schultern zu verschlingen. bei hoher Belastung.

**Analyse:** Die Rezension zeigt ein erhebliches Problem mit der die Träger. Es deutet auch darauf hin, dass das Produkt für schwere und sehr schwere Ladevorgänge oder längere Ausflüge zu organisieren.

**Bewertung:** 1 (am schlechtesten)

Unser komplexerer Prompt, kombiniert mit wenige Prompts und ausgefeilter Prompt-Techniken, liefert genauere Bewertungen.

Erwarten Sie ein manuelles Parsen der Ausgabe

Zwar sollten Sie die Ausgabe eines LLM immer manuell bereinigen und interpretieren, Dies gilt insbesondere für kleinere LLMs, die zu weniger ausgefeilten Ergebnissen führen könnten. ist möglicherweise ein Thought-Prompting.

Im ersten Beispiel haben wir Chain-of-Thought-Prompts verwendet, sodass die Ausgabe Analyse und Bewertung und müssen manuell für die Bewertung parsen. Ebenfalls Beachten Sie die inkonsistente Formatierung in der Ausgabe aus dem vorherigen Abschnitt: Das Modell gibt manchmal Markdown aus, aber nicht jedes Mal.

// Use try/catch to catch (parsing) errors
try {
  // Parse the output for a rating
  const int = /[1-5]/;
  const ratingAsString = llmOutput.match(int)[0];
  // Parse as int
  const ratingAsInt = parseInt(ratingAsString);
  // `checkRating` checks the rating is a number between 1 and 5, since the
  // regEx may catch a number like "100"
  const finalRating = checkRating(ratingAsInt);
} catch (e) {
  console.error('Error', e);
}

Mind API-Unterschiede

LLM Cloud APIs wie die Gemini API oder OpenAI, die in der Regel auf größere LLMs verweisen, bieten praktische Prompt-Features. Beispiel: Gemini 1.5 Pro bietet Systemanweisungen und JSON-Modus:

Derzeit sind diese Features nicht immer für die Verwendung benutzerdefinierter Modelle verfügbar. für kleinere LLMs, auf die über browserinterne KI-APIs zugegriffen wird, z. B. MediaPipe LLM Inference API oder Transformers.js Das ist zwar nicht unbedingt eine technische Einschränkung, aber browserinterne KI-APIs neigen dazu, schlanker sein.

Mind-Token-Limits

Weil Ihr Prompt für kleinere LLMs Beispiele oder ausführlichere Beispiele enthalten muss wird es wahrscheinlich länger dauern und mehr von Ihrem Eingabetoken wenn es eine gibt.

Außerdem haben kleinere Modelle tendenziell eine geringere Begrenzung für die Eingabetokens. Für Beispiel: Für Gemini 1.5 Pro gilt ein Limit von 1 Million Eingabetokens. Gemma-Modelle hingegen haben ein 8K-Kontextfenster.

Funktionen zum Zählen von Tokens verwenden um zu verhindern, dass das Limit erreicht wird.

Zeitschätzungen anpassen

Berücksichtigen Sie Prompt-Entwurf und Tests in Ihrer Zeitschätzung für die Entwicklungszeit.

Aufgrund von API-Unterschieden und Tokenlimits benötigen Sie um Ihren Prompt für ein kleineres als ein größeres LLM zu erstellen. Testen und validieren die Ausgabe des LLM kann auch mit größerem Aufwand verbunden sein.

Prompt-Engineering oder Abstimmung?

Für Webentwickler ist Prompt Engineering unsere bevorzugte Methode, generative KI im Vergleich zu benutzerdefiniertem Training und Feinabstimmungen. Aber selbst fortschrittliches Prompt Engineering reicht in einigen Anwendungsfällen nicht aus. insbesondere wenn Sie ein kleineres LLM verwenden.

In folgenden Fällen sollten Sie die Optimierung verwenden:

  • Für eine bestimmte Aufgabe sind höchste Genauigkeit und Leistung erforderlich. Fein Bei der Abstimmung werden die internen Parameter des Modells direkt angepasst, um optimale Ergebnisse zu erzielen.
  • Sie haben gut ausgewählte Daten, die für Ihre Aufgabe relevant sind und bereits mit bevorzugte Ausgaben. Sie benötigen diese Daten für eine effektive Feinabstimmung.
  • Sie verwenden das Modell für denselben Zweck wiederholt. Eine Feinabstimmung ist möglich und für eine bestimmte Aufgabe wiederverwendet.