Während ich meine eigene LLM-basierte Anwendung baute, fand ich viele schnelle technische Leitfäden, aber nur wenige äquivalente Anleitungen zur Bestimmung der Temperatureinstellung.

Natürlich ist die Temperatur ein einfacher numerischer Wert, während Eingabeaufforderungen mindblockend komplex werden können, sodass sie sich als Produktentscheidung trivial anfühlt. Die Auswahl der richtigen Temperatur kann die Artwork Ihrer Ausgaben dramatisch verändern, und jeder, der eine LLM-Anwendung in Produktionsqualität baut, sollte die Temperaturwerte mit Absicht auswählen.

In diesem Beitrag werden wir untersuchen, welche Temperatur und die Mathematik dahinter, potenzielle Produktauswirkungen und wie Sie die richtige Temperatur für Ihre LLM -Anwendung auswählen und diese bewerten können. Am Ende hoffe ich, dass Sie eine klare Vorgehensweise haben, um die richtige Temperatur für jeden LLM -Anwendungsfall zu finden.

Was ist Temperatur?

Die Temperatur ist eine Zahl, die die Zufälligkeit der Ausgänge eines LLM steuert. Die meisten APIs beschränken den Wert auf 0 bis 1 oder einen ähnlichen Bereich, um die Ausgänge in semantisch kohärenten Grenzen zu halten.

Aus OpenAIs Dokumentation:

„Höhere Werte wie 0,8 machen den Ausgang zufällig, während niedrigere Werte wie 0,2 ihn fokussierter und deterministischer machen.“

Intuitiv ist es wie ein Zifferblatt, mit dem das Modell eine Antwort ausspricht.

Was bedeuten diese Temperaturwerte?

Persönlich finde ich die Mathematik hinter dem Temperaturfeld sehr interessant, additionally werde ich mich darauf einlassen. Aber wenn Sie bereits mit den Innereien von LLMs vertraut sind oder sich nicht für sie interessieren, interessieren Sie sich nicht. Fühlen Sie sich frei, diesen Abschnitt zu überspringen.

Sie wissen wahrscheinlich, dass ein LLM Textual content erzeugt, indem Sie das nächste Token nach einer bestimmten Reihenfolge von Token vorhergesagt. In seinem Vorhersageprozess weist es allen möglichen Token, die als nächstes kommen könnten, Wahrscheinlichkeiten zu. Wenn beispielsweise die an das LLM übergebene Sequenz „Die Giraffe über die…“ ist, kann sie Wörtern wie „Baum“ oder „Zaun“ und niedrigeren Wahrscheinlichkeiten wie „Wohnung“ oder „Buch“ hohe Wahrscheinlichkeiten zuweisen.

Aber lasst uns ein bisschen zurückziehen. Wie kommen diese Wahrscheinlichkeiten?

Diese Wahrscheinlichkeiten stammen normalerweise aus Rohwerken, die als bekannt als als bezeichnet werden Logitsdas sind die Ergebnisse vieler, vieler neuronaler Netzwerkberechnungen und anderer Maschinelles Lernen Techniken. Diese Logits sind Gold; Sie enthalten alle wertvollen Informationen darüber, was als nächstes ausgewählt werden kann. Das Drawback mit diesen Logits ist jedoch, dass sie nicht zur Definition einer Wahrscheinlichkeit passen: Sie können eine beliebige Zahl sein, positiv oder negativ, wie 2 oder -3,65 oder 20. Sie sind nicht unbedingt zwischen 0 und 1 und und 1 und nicht unbedingt Sie summieren sich nicht unbedingt auf 1 wie eine schöne Wahrscheinlichkeitsverteilung.

Um diese Protokolls verwendbar zu machen, müssen wir eine Funktion verwenden, um sie in eine saubere Wahrscheinlichkeitsverteilung umzuwandeln. Die hier verwendete Funktion wird genannt Softmaxund es ist im Wesentlichen eine elegante Gleichung, die zwei wichtige Dinge tut:

  1. Es verwandelt alle Logits in optimistic Zahlen.
  2. Es skaliert die Protokolls, sodass sie 1 addieren.
Softmax -Formel

Die Softmax -Funktion funktioniert, indem Sie jedes Logit nehmen und erhöhen e (ca. 2,718) zur Kraft dieses Logits und dann durch die Summe all dieser Exponentiale. Der höchste Logit erhält additionally immer noch den höchsten Zähler, was bedeutet, dass er die höchste Wahrscheinlichkeit erhält. Aber andere Token, selbst mit negativen Logit -Werten, erhalten immer noch eine Likelihood.

Hier ist hier Temperatur kommt herein: Die Temperatur modifiziert die Logits, bevor Softmax angewendet wird. Die Formel für Softmax mit Temperatur lautet:

Softmax mit Temperatur

Wenn die Temperatur ist niedrigWenn Sie die Logits durch T teilen, wird die Werte größer/verteilter. Dann würde die Exponentiation den höchsten Wert viel größer als die anderen machen, was die Wahrscheinlichkeitsverteilung ungleicher macht. Das Modell hätte eine höhere Wahrscheinlichkeit, das wahrscheinlichste Token auszuwählen, was zu a führt deterministischer Ausgabe.

Wenn die Temperatur ist hoch, Durch die Aufteilung der Logits durch T wird alle Werte kleiner/näher zusammen, wodurch die Wahrscheinlichkeitsverteilung gleichmäßiger ausbreitet. Dies bedeutet, dass das Modell eher weniger wahrscheinliche Token auswählt und zunimmt Zufälligkeit.

So wählen Sie Temperatur

Natürlich ist der beste Weg, eine Temperatur zu wählen, damit herumspielen. Ich glaube, jede Temperatur sollte wie jede Eingabeaufforderung mit Beispielläufen belegt und anhand anderer Möglichkeiten bewertet werden. Wir werden das im nächsten Abschnitt besprechen.

Aber bevor wir uns darauf eintauchen, möchte ich das hervorheben Temperatur ist eine entscheidende Produktentscheidungeine, die das Benutzerverhalten erheblich beeinflussen kann. Es magazine ziemlich einfach erscheinen, sich zu entscheiden: niedriger für mehr Genauigkeitsanwendungen, höher für kreativere Anwendungen. Es gibt jedoch Kompromisse in beide Richtungen mit nachgeschalteten Konsequenzen für das Vertrauens- und Nutzungsmuster der Benutzer. Hier sind einige Feinheiten, die mir in den Sinn kommen:

  • Niedrige Temperaturen können das Produkt maßgeblich fühlen lassen. Deterministischere Ausgaben können die Phantasm von Fachwissen und Foster Consumer Belief erzeugen. Dies kann jedoch auch zu leichtgläubigen Benutzern führen. Wenn Antworten immer zuversichtlich sind, können Benutzer die Ausgänge der KI möglicherweise nicht mehr kritisch bewerten und ihnen blind vertrauen, auch wenn sie falsch sind.
  • Niedrige Temperaturen können die Entscheidungsmüdigkeit verringern. Wenn Sie eine starke Antwort anstelle vieler Optionen sehen, werden Sie mit größerer Wahrscheinlichkeit Maßnahmen ohne Überdenken ergreifen. Dies kann zu einer einfacheren Einbindung oder einer geringeren kognitiven Belastung bei der Verwendung des Produkts führen. Umgekehrt könnten hohe Temperaturen mehr Entscheidungsmüdigkeit verursachen und zu Abwanderung führen.
  • Hohe Temperaturen können das Engagement des Benutzer fördern. Die Unvorhersehbarkeit hoher Temperaturen kann die Benutzer neugierig halten (wie variable Belohnungen), was zu längeren Sitzungen oder erhöhten Wechselwirkungen führt. Umgekehrt können niedrige Temperaturen stagnierende Benutzererfahrungen schaffen, die Benutzer langweilen.
  • Die Temperatur kann die Artwork und Weise beeinflussen, wie Benutzer ihre Eingabeaufforderungen verfeinern. Wenn die Antworten mit hohen Temperaturen unerwartet sind, können Benutzer möglicherweise getrieben werden klären ihre Aufforderungen. Aber bei niedrigen Temperaturen können Benutzer dazu gezwungen sein Fügen Sie mehr Particulars hinzu oder erweitern Sie sie ihre Aufforderungen, um neue Antworten zu erhalten.

Dies sind breite Verallgemeinerungen, und natürlich gibt es mit jeder spezifischen Anwendung noch viel mehr Nuancen. In den meisten Anwendungen kann die Temperatur jedoch eine leistungsstarke Variable sein, die Sie bei A/B -Assessments einstellen können, was neben Ihren Eingabeaufforderungen berücksichtigt werden muss.

Bewertung verschiedener Temperaturen

Als Entwickler werden wir es gewohnt, Unit -Assessments zu testen: Definieren einer Reihe von Eingängen, Ausführen dieser Eingänge durch eine Funktion und das Erhalten einer Reihe von erwarteten Ausgängen. Wir schlafen nachts eingehalten, wenn wir sicherstellen, dass unser Code das tut, was wir erwarten, und dass unsere Logik einige eindeutige Einschränkungen erfüllt.

Der promptfoo Durch das Paket können Sie das LLM-Immediate-Äquivalent zu Unit-Assessments durchführen, aber es gibt eine zusätzliche Nuance. Da die LLM-Ausgänge nicht deterministisch sind und häufig für kreativere Aufgaben als streng logische Ausgaben ausgelegt sind, kann es schwierig sein, zu definieren, wie eine „erwartete Ausgabe“ aussieht.

Definieren Sie Ihre „erwartete Ausgabe“

Die einfachste Bewertungstaktik ist, a zu haben menschlich Fee, wie intestine sie denken, dass etwas Ausgang nach einer Rubrik zufolge ist. Für Ausgänge, bei denen Sie nach einer bestimmten „Stimmung“ suchen, die Sie nicht in Worten ausdrücken können, wird dies wahrscheinlich die effektivste Methode sein.

Eine weitere einfache Bewertungstaktik ist die Verwendung deterministische Metriken – Dies sind Dinge wie „Enthält die Ausgabe eine bestimmte Zeichenfolge?“ oder „Ist die Ausgabe gültig JSON?“ oder „Befriedigt die Ausgabe diesen JavaScript -Ausdruck?“. Wenn Ihre erwartete Ausgabe auf diese Weise ausgedrückt werden kann, promptfoo hat Ihren Rücken.

Eine interessantere A-Age-Bewertungs-Taktik ist die Verwendung LLM-angenommene Schecks. Diese verwenden im Wesentlichen LLMs, um Ihre LLM-generierten Ausgänge zu bewerten, und können bei ordnungsgemäßer Verwendung sehr effektiv sein. Promptfoo bietet diese modellverordneten Metriken in mehreren Formen. Die ganze Liste ist Hierund es enthält Behauptungen aus „Ist die Ausgabe für die ursprüngliche Abfrage related?“ Um die verschiedenen Testfälle zu vergleichen und mir zu sagen, welches am besten ist! “ zu „Wo steht dieser Ausgang auf dieser Rubrik, die ich definiert habe?“.

Beispiel

Nehmen wir an, ich erstelle eine Verbraucheranwendung, die kreative Geschenkideen erstellt, und ich möchte empirisch bestimmen, welche Temperatur ich mit meiner Hauptaufforderung verwenden sollte.

Vielleicht möchte ich Metriken wie Relevanz, Originalität und Machbarkeit innerhalb eines bestimmten Budgets bewerten und sicherstellen, dass ich die richtige Temperatur auswähle, um diese Faktoren zu optimieren. Wenn ich die Leistung von GPT 4O-Mini mit Temperaturen von 0 gegenüber 1 vergleiche, kann meine Testdatei so beginnen:

suppliers:
  - id: openai:gpt-4o-mini
    label: openai-gpt-4o-mini-lowtemp
    config:
      temperature: 0
  - id: openai:gpt-4o-mini
    label: openai-gpt-4o-mini-hightemp
    config:
      temperature: 1
prompts:
  - "Give you a one-sentence artistic present thought for an individual who's {{persona}}. It ought to price beneath {{price range}}."

exams:
  - description: "Mary - attainable, beneath price range, unique"
    vars:
      persona: "a 40 12 months outdated girl who loves pure wine and performs pickleball"
      price range: "$100"
    assert:
      - kind: g-eval
        worth:
          - "Test if the present is well attainable and affordable"
          - "Test if the present is probably going beneath $100"
          - "Test if the present could be thought-about unique by the common American grownup"
  - description: "Sean - reply relevance"
    vars:
      persona: "a 25 12 months outdated man who rock climbs, goes to raves, and lives in Hayes Valley"
      price range: "$50"
    assert:
      - kind: answer-relevance
        threshold: 0.7

Ich möchte wahrscheinlich die Testfälle wiederholt durchführen, um die Auswirkungen von Temperaturänderungen über mehrere Läufe in mehreren Eingängen zu testen. In diesem Fall würde ich den Wiederholungsparam verwenden wie:

promptfoo eval --repeat 3
ENTHOPFOO -Testergebnisse

Abschluss

Die Temperatur ist ein einfacher numerischer Parameter, aber nicht durch ihre Einfachheit getäuscht werden: Sie kann weitreichende Auswirkungen auf eine LLM-Anwendung haben.

Das Einstellen genau richtig ist der Schlüssel, um das gewünschte Verhalten zu erhalten – zu niedrig, und Ihr Modell spielt es zu sicher. Zu hoch, und es beginnt unvorhersehbare Antworten zu sparen. Mit Instruments wie promptfoo können Sie verschiedene Einstellungen systematisch testen und Ihre Goldillocks -Zone finden – nicht zu kalt, nicht zu heiß, aber genau richtig. Euen


Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert