Ubers Toolkit für Prompt Engineering
(uber.com)- Um präzise und passende Ausgaben von LLMs zu erhalten, ist ein ausgefeiltes Prompt-Design unerlässlich.
- Prompt-Design ermöglicht es auch Nutzern ohne Vertrautheit mit Machine Learning, die Modellausgabe mit minimalem Overhead zu steuern.
- Uber hat ein zentrales Toolkit entwickelt, um mit LLMs schnell iterieren und experimentieren zu können.
- Erstellung und Verwaltung von Prompt-Templates
- Nutzung von RAG und Datensätzen zur Laufzeit
- Funktionen:
- Unterstützung für Systemanweisungen, dynamische Kontextualisierung, umfangreiche Offline-Generierung (LLM-Inferenz) und Antwortbewertung
- Versionsverwaltung, Zusammenarbeit, Sicherheitsprüfungen (einschließlich Halluzinations-Checks, standardisiertem Evaluierungs-Framework und Sicherheitsrichtlinien)
Lifecycle des Prompt Engineering
Der Lebenszyklus des Prompt Engineering besteht aus zwei Phasen:
- Entwicklungsphase: Besteht aus den drei Schritten LLM-Erkundung, Iteration von Prompt-Templates und Evaluierung
- Phase der LLM-Erkundung: Verfügbare LLMs über den Modellkatalog und den GenAI Playground erkunden und LLM-Antworten mit Prompts testen
- Phase der Iteration von Prompt-Templates: Konkrete Geschäftsanforderungen erfassen, Beispieldaten sammeln, Prompts erstellen/analysieren/testen, Antworten bewerten und bei Bedarf anpassen. Durch Auto-Prompting müssen Prompt-Templates nicht von Grund auf neu erstellt werden.
- Evaluierungsphase: Prompt-Templates mit größeren Datensätzen testen, um die Leistung zu messen. Die Leistung kann bewertet werden, indem ein LLM als Bewerter eingesetzt oder ein maßgeschneiderter, codebasierter LLM-Evaluator verwendet wird.
- Productionization-Phase: Nur Prompt-Templates, die in der Evaluierungsphase den Schwellenwert überschreiten, werden in Produktion gebracht. Die Nutzung in der Produktionsumgebung wird nachverfolgt und überwacht, und Systemnutzungsdaten werden gesammelt, um den Prozess zu verbessern.
Architektur
- UI/SDK für Prompt-Templates: Verwaltung von Prompt-Templates und Revisionen. Integriert mit GetAPI und Execute API
- LLM-Modellkatalog: Schnittstelle zu bereitgestellten LLM-Modellen
- Modelle und Prompts werden in ETCD und UCS gespeichert und in der Offline-Generierungspipeline sowie in der Evaluierungspipeline für Prompt-Templates verwendet.
Erstellung von Prompt-Templates
- Der Prompt Builder des Prompt-Toolkits generiert Prompts automatisch für Nutzer.
- Er hilft dabei, fortgeschrittene Prompting-Techniken zu entdecken, die auf bestimmte AI-Anwendungsfälle zugeschnitten sind.
- Der automatische Prompt Builder auf Basis des internen Langfx-Frameworks, das auf LangChain aufsetzt, folgt diesen Schritten:
- 1. Integration von Best Practices im Prompt Engineering
- 2. Bereitstellung detaillierter Anweisungen und einiger Beispiele für Template-Listings, um die Prompt-Erstellung zu unterstützen
- 3. Nutzung von LLM-Modellen zur Unterstützung der Prompt-Erstellung
- Erweiterte Prompt-Richtlinien: Der Prompt Builder erzeugt Prompts anhand der folgenden Prinzipien
- CoT(Chain of Thought)-Prompting: Ermöglicht komplexe Schlussfolgerungen durch Zwischenschritte im Reasoning
- Auto-CoT: Verwendung des einleitenden Ausdrucks "think step by step". Zur Reduzierung manuellen Aufwands wird der Prompt "Let's think step by step" für das LLM genutzt.
- Prompt Chaining: Kann in Szenarien mit mehreren Aufgaben oder Transformationen verwendet werden
- ToT(Tree of Thought): Verallgemeinert Chain-of-Thought-Prompting und fördert das Erkunden von Gedanken, die als Zwischenschritte für allgemeine Problemlösung mit Sprachmodellen dienen können
- APE(Automatic Prompt Engineering): Framework zur Automatisierung von Anweisungs-Generierung und -Auswahl
- Multimodales CoT-Prompting: Integriert Text und Bilder in einem zweistufigen Framework. Stufe 1 erzeugt Begründungen auf Basis multimodaler Informationen, Stufe 2 leitet daraus die Antwort ab.
- Revisionsverwaltung
- Die Iteration von Prompt-Templates folgt Best Practices aus codebasierten Iterationen.
- Nutzer können Anweisungen und Modellparameter anpassen, um Antworten zu testen und mit Datensätzen zu prüfen.
- Für jede Iteration eines Prompt-Templates ist ein Code-Review erforderlich. Nach Freigabe und Merge wird eine neue Revision des Prompt-Templates erstellt.
Evaluierung von Prompt-Templates
Mehrere Komponenten arbeiten zusammen, um die Leistung von Prompt-Templates zu bewerten:
- Zwei Evaluierungsmechanismen
- Einsatz eines LLM als Bewerter. Nützlich für Aufgaben, bei denen subjektive Qualität oder sprachliche Nuancen wichtig sind
- Leistungsbewertung mithilfe von benutzerdefiniertem Code. Nützlich, um bestimmte Aspekte der Leistung zu messen
- Evaluierungs-Prompt-Template: Nutzerfreundliches Template, das Anweisungen, einfache Beispiele, Metriken, Antwortformat usw. für die Evaluierung bereitstellt
- Tatsächliches Prompt-Template: Das in der Produktion verwendete Template. Es wird zur Laufzeit hydratisiert und zur Leistungsbewertung verwendet.
- Optionen für Eingabedatensätze: Gelabelte Golden Datasets oder aus Produktions-Traffic abgeleitete Datensätze
- Jedes Template wird unter Berücksichtigung spezifischer Anweisungen, des Kontexts sowie zugehöriger Modelle und Parameter evaluiert.
Anwendungsfälle bei Uber
Offline-LLM-Service
Die Batch-Pipeline für die Offline-Generierung mit LLMs erleichtert Batch-Inferenz zur großskaligen Erzeugung von LLM-Antworten:
- Kann für den Anwendungsfall der Verifizierung von Benutzernamen für Endverbraucher eingesetzt werden
- In MA Studio müssen lediglich die relevanten Datensätze ausgewählt und eingegeben werden.
- Prompt-Templates werden dynamisch mit Datensätzen hydratisiert.
Online-LLM-Service
Prompt-Templates enthalten dynamische Platzhalter, die zur Laufzeit durch spezifische Werte ersetzt werden müssen:
- Derzeit wird mit einer Jinja-basierten Template-Syntax nur die Ersetzung von String-Typen unterstützt.
- Unterstützung für Fan-out zwischen Prompt, Template und Modell
- Template: API-Templates enthalten Funktionen, um Payloads aus dem allgemeinen Datenmodell in anbieterspezifische API-Strukturen zu formatieren
- Prompt und Modell: Ein Prompt ist an ein bestimmtes Modell und Template gebunden. Der Service ruft den Prompt ab und führt ihn aus, indem er die genAI API mit den erforderlichen Modell- und Template-Parametern aufruft.
Erkundung der obigen Funktionen anhand eines Anwendungsfalls für Zusammenfassungen:
- In einem Szenario, in dem mehrere Agenten ein Support-Ticket (Contact) bearbeiten können, müssen neue Agenten das Ticket durchgehen, um den Kontext zu verstehen, oder den Kunden bitten, das Problem erneut zu erklären.
- Dies wird gelöst, indem bei der Übergabe zwischen Agenten eine Zusammenfassung bereitgestellt wird.
Monitoring
Monitoring misst die Leistung von produktiven Prompt-Templates, die in der Produktion eingesetzt werden:
- Eine tägliche Performance-Monitoring-Pipeline führt Leistungsbewertungen auf Produktions-Traffic aus.
- Überwachung von Metriken wie Latenz, Accuracy und Korrektheit für jede produktive Iteration eines Prompt-Templates
- Das MES-Dashboard wird täglich mit Performance-Monitoring-Metriken aktualisiert.
Fazit
Ubers Toolkit für Prompt Engineering ist ein umfassendes Framework zur Verbesserung der Interaktion mit und Nutzung von LLMs in verschiedenen Phasen von Entwicklung und Produktion:
- Unterstützt von der ersten Erkundung von LLM-Funktionen im Gen AI Playground bis hin zur detaillierten Iteration und Erstellung von Prompt-Templates
- Die Architektur des Toolkits bietet einen systematischen Ansatz für Prompt-Design, der fortgeschrittene Richtlinientechniken und robuste Evaluierungsmethoden integriert
- Der strukturierte Lebenszyklus von der Entwicklung über den produktiven Einsatz bis zum Monitoring von Prompt-Templates stellt sicher, dass jedes Template gründlich getestet und auf Leistung optimiert wird
- Künftig ist eine Integration mit RAG für Online-Evaluierung und Evaluierung sowie mit RAG für Offline-Generierung geplant
Noch keine Kommentare.