Roo öffnen Cline Wenn Sie den Modelldienstanbieter auf OpenRouter einstellen, sehen Sie die folgenden Einstellungen:
Er wird Ihnen erklären, was OpenRouter Transforms sind. Eine einfache Erklärung: Wenn Sie auf einen zu langen Kontext stoßen, wird er Ihnen helfen, den mittleren Teil zu entfernen, bevor Sie ihn an das Modell senden.
Im Folgenden wird dies ausführlich erklärt OpenRouter und die Rolle der Middle-Out-Transformationen.
Hintergrund des Problems: Beschränkungen der Länge des Modellkontexts
Erstens müssen Sie ein Konzept verstehen:Modell Kontext Länge Grenze.
- Große Sprachmodelle (Large Language Models, LLMs) haben bei der Textverarbeitung keinen unbegrenzten Speicher für frühere Dialoge.
- Jedes Modell hat eine maximale Kontextlänge (verstanden als "Gedächtnisfenster"), über die hinaus sich das Modell nicht an frühere Eingaben erinnern kann.
- Ein Modell kann zum Beispiel 8k haben Token (das sind etwa 6000 Wörter) im Kontext. Wenn Sie mehr als 8k Token Text eingeben, kann es sein, dass das Modell den allerersten Teil des Textes vergisst, was zu einer qualitativ schlechteren Antwort führt.
Die Lösung von OpenRouter: Transformationen
Um dieses Problem zu lösen, bietet OpenRouter einen Transforms-Parameter, mit dem Sie die an das Modell gesendeten Prompts für den Hauptzweck vorverarbeiten können:
- Behandelt Prompts, die außerhalb der Kontextlänge liegen: Wenn Ihre Prompts (einschließlich des Dialogverlaufs) zu lang für die Kontextlänge des Modells sind, kann OpenRouter die Prompts über den Parameter transforms komprimieren oder kürzen, damit sie in die Beschränkungen des Modells passen.
- Benutzerdefinierte Handhabung von Queues: transforms befasst sich nicht nur mit Längenbegrenzungen, sondern kann in Zukunft weitere Funktionen bieten, z. B. für die Arbeit mit Hinweisen:
- Automatische Übersetzungswarnungen
- Hinzufügen spezifischer Anweisungen
Mittelwertbildung
middle-out ist die einzige Transformation, die derzeit in transforms verfügbar ist:Komprimieren oder Entfernen von Meldungen in der Mitte der Eingabeaufforderung, um sie an die Kontextlängenbegrenzung des Modells anzupassen.
Im Einzelnen funktioniert es folgendermaßen:
- Erkennt eine übermäßige Länge: middle-out prüft, ob die Gesamtlänge Ihres Prompts (oder der Liste von Nachrichten) die Kontextlänge des Modells überschreitet.
- Drücken Sie den mittleren Teil zusammen: Wird er überschritten, komprimiert oder löscht middle-out bevorzugt die Nachricht im mittleren Teil der Eingabeaufforderung. Dies beruht auf der Beobachtung, dass der LLM bei der Verarbeitung von Text dazu neigt, dem Anfang und dem Ende mehr Aufmerksamkeit zu schenken und dem mittleren Teil weniger. Daher sichert der Verzicht auf den mittleren Teil der Nachricht in der Regel die Qualität der Antwort des Modells.
- Behalten Sie den Kopf und den Schwanz: In der Mitte wird versucht, den Anfang und das Ende der Aufforderung so weit wie möglich beizubehalten, da dieser Teil in der Regel wichtige Informationen enthält:
- primordialer Befehl
- Jüngste Benutzereingaben
- Reduzieren Sie die Anzahl der Nachrichten: Neben der Komprimierung der Länge wird durch das Middle-Out auch die Anzahl der Nachrichten in der Nachrichtenliste reduziert, da einige Modelle (wie Anthropic Claude) Es gibt auch eine Begrenzung der Anzahl der Nachrichten.
Standardverhalten und Deaktivierung von Middle-Out
- Standardmäßig aktiviert: Wenn Sie einen OpenRouter-Endpunkt mit einer Kontextlänge kleiner oder gleich 8k verwenden, ist die Middle-Out-Konvertierung standardmäßig aktiviert. Das heißt, wenn Ihre Eingabeaufforderung die Kontextlänge überschreitet, wird sie von OpenRouter automatisch für Sie komprimiert.
- Ausdrücklich deaktiviert: Wenn Sie nicht möchten, dass OpenRouter Ihre Prompts automatisch komprimiert, können Sie transforms: [] im Request Body setzen, um anzugeben, dass keine Transformationen verwendet werden.
Wann sollte man das Middle-Out verwenden?
- Die Geschichte des Dialogs ist zu lang: Wenn Sie mehrere Dialogrunden haben und die Geschichte sich anhäuft und möglicherweise die kontextuelle Länge des Modells übersteigt, kann das Middle-out Ihnen helfen, den Dialog kohärent zu halten.
- Kleinere Modellkontextlänge: Wenn Sie ein Modell mit einer geringen Kontextlänge verwenden, können Sie mit der Funktion "Middle-out" längeren Text eingeben, ohne dass das Modell die vorherige Eingabe "vergisst".
- Vermeiden Sie den Verlust von Informationen: Obwohl beim Middle-Out einige Zwischeninformationen entfernt werden, ist es darauf ausgerichtet, die Beibehaltung wichtiger Informationen zu maximieren und die Auswirkungen von Informationsverlusten zu minimieren.
Wann man die Mitte nicht verwenden sollte
- Maßgeschneiderte Handhabung: Wenn Sie die volle Kontrolle darüber haben möchten, wie die Eingabeaufforderungen gehandhabt werden, oder einen benutzerdefinierten Komprimierungsalgorithmus verwenden möchten, können Sie auf die Verwendung von middle-out verzichten und die Länge der Eingabeaufforderungen selbst bestimmen.
- Ein vollständiger Kontext ist erforderlich: Es gibt einige Szenarien, in denen der vollständige Kontext erforderlich ist und das Entfernen der Informationen in der Mitte zu ernsthaften Problemen führen würde, und es ist möglicherweise nicht angemessen, an dieser Stelle Middle-out zu verwenden.
Zusammenfassungen
Der Hauptzweck von Transformationen und Middle-out ist:
- Vereinfachung der Handhabung von Aufforderungen zur Längenangabe außerhalb des KontextsDie Vermeidung der manuellen Verwaltung und Kürzung von Prompts ermöglicht es dem Modell, längere Texte und Dialogverläufe zu verarbeiten.
- Verbesserung des NutzererlebnissesDie Funktion ist besonders für Modelle mit kleinen Kontextlängen geeignet und erleichtert es den Benutzern, die Möglichkeiten des Modells zu nutzen.
- Optimierung der Qualität der ModellantwortenBehalten Sie so viele wichtige Informationen wie möglich innerhalb einer begrenzten Kontextlänge, um das Vergessen des Modells zu reduzieren.