Arbeiten mit Textvervollständigungen in Azure OpenAI
Die GPT-35-Turbo- und GPT-4-Modelle sind Sprachmodelle, die für Unterhaltungsschnittstellen optimiert sind. Die Modelle verhalten sich anders als die älteren GPT-3-Modelle. Frühere Modelle basierten auf einer Texteingabe und Textausgabe, was bedeutet, dass sie eine Prompt-Zeichenfolge akzeptierten und eine Vervollständigung zurückgaben, die an die Prompt angefügt werden konnte, wie Sie gerade gelernt haben.
Die GPT-35-Turbo- und GPT-4-Modelle basieren jedoch auf der Eingabe einer Unterhaltung und der Ausgabe einer Nachricht. Die Modelle erwarten eine Eingabe, die in einem bestimmten chatähnlichen Transkriptformat formatiert ist, und geben eine Vervollständigung zurück, die eine vom Modell geschriebene Nachricht im Chat darstellt.
GPT-35-Turbo und GPT-4 können weiterhin Textvervollständigungen akzeptieren und generieren, aber beim Chat glänzen sie.
In Azure OpenAI stehen zwei verschiedene Optionen für die Interaktion mit solchen Modellen zur Verfügung:
- Chatvervollständigungs-API
- Vervollständigungs-API mit Chat Markup Language (ChatML)
Die Chatvervollständigungs-API ist eine neue dedizierte API für die Interaktion mit den Modellen GPT-35-Turbo und GPT-4, die wir im Folgenden verwenden werden.
Grundlegendes zu den Rollen der Chatvervollständigungs-API
OpenAI hat die GPT-35-Turbo- und GPT-4-Modelle dafür trainiert, als Unterhaltung formatierte Eingaben zu akzeptieren. Jede Eingabe oder Eingabeaufforderung, die an das Modell gesendet wird, und jede vom Modell zurückgegebene Antwort wird einer allgemeinen Unterhaltung in der Chatvervollständigungs-API hinzugefügt.
Die Chatvervollständigungs-API bezieht sich auf die eingehenden Eingabeaufforderungen und ausgehenden Antworten als Nachrichten.
Das Modell akzeptiert ein Array von Nachrichtenobjekten mit einer nach Rollen organisierten Unterhaltung. Es gibt drei Rollentypen: System, Benutzer und Assistent.
Die Systemrolle
Die Systemrolle, die auch als Systemnachricht bezeichnet wird, ist am Anfang des Arrays enthalten. Diese Nachricht enthält die ersten Anweisungen für das Modell. Sie können verschiedene Informationen in der Systemnachricht angeben, z. B.:
- Eine kurze Beschreibung des Assistenten
- Persönlichkeitsmerkmale des Assistenten
- Anweisungen oder Regeln, die der Assistent befolgen soll
- Daten oder Informationen, die für das Modell benötigt werden, z. B. relevante Fragen aus FAQ
Sie können die Systemrolle für Ihren Anwendungsfall anpassen oder lediglich einfache Anweisungen einschließen. Die Systemrolle bzw. -nachricht ist optional. Um die besten Ergebnisse zu erzielen, wird jedoch empfohlen, mindestens eine einfache Nachricht einzuschließen.
Benutzer- und Assistentrollen
Die Unterhaltung findet zwischen einem Benutzer und dem Assistenten statt. Der Benutzer ist die Person, die Eingabeaufforderungen eingibt und mit dem Modell interagiert. Die Antworten aus dem Modell werden durch die Systemrolle dargestellt.
Die Nachricht, die der Benutzer an das Modell sendet, sollte bewährte Methoden zum Entwerfen von Eingabeaufforderungen befolgen, um Antworten mit höchster Qualität zu erhalten.
Beispiele für Nachrichteneingabeaufforderungen
Im folgenden Abschnitt werden Beispiele für verschiedene Eingabeaufforderungsstile gezeigt, die Sie mit den GPT-35-Turbo- und GPT-4-Modellen verwenden können. Die Beispiele sind nur ein Ausgangspunkt, und Sie können mit verschiedenen Eingabeaufforderungen experimentieren, um das Verhalten anzupassen.
Einfaches Beispiel
Wenn sich das GPT-35-Turbo-Modell ähnlich wie chat.openai.com verhalten soll, können Sie eine einfache Systemnachricht wie „Der Assistent ist ein großes, von OpenAI trainiertes Sprachmodell.“ verwenden.
In der nächsten Lerneinheit erfahren Sie, wie Sie das .NET SDK der Chatvervollständigungs-API verwenden. Vorerst bleiben wir bei Variablennamen als Beispiel.
string systemMessage = "Assistant is a large language model trained by OpenAI";
string userMessage = "Who were the founders of Microsoft?";
Beispiel mit Anweisungen
Für einige Szenarien möchten Sie dem Modell vielleicht zusätzliche Anweisungen geben, um Schutzmaßnahmen für die Möglichkeiten des Modells festzulegen.
string systemMessage = """
Assistant is an intelligent chatbot designed to help users answer their tax related questions.
Instructions:
- Only answer questions related to taxes.
- If you're unsure of an answer, you can say "I don't know" or "I'm not sure" and recommend users go to the IRS website for more information.
""";
string userMessage = "When are my taxes due?";
Verwalten von Unterhaltungen
Das Modell hat keinen Arbeitsspeicher, daher benötigt es bei jeder neuen Frage ein aktualisiertes Transkript mit allen Fragen und Antworten, da es sonst den Kontext verliert.
Das bedeutet, dass Sie jedes Mal, wenn Sie mit dem Modell interagieren, die gesamte, aktualisierte Konversation an das Modell senden müssen, und dann könnte der Token-Grenzwert für jedes Modell leicht erreicht werden.
Das Tokenlimit für gpt-35-turbo
beträgt 4.096 Token, während die Tokenlimits für gpt-4
und gpt-4-32k
8.192 bzw. 32.768 sind. Sie müssen unter diesen Grenzwerten bleiben, andernfalls erhalten Sie eine Fehlermeldung.
Sie können die Token-Anzahl nachverfolgen und die ältesten Nachrichten aus dem an das Modell gesendeten Array entfernen. Es ist am besten, die Systemnachricht immer beizubehalten und nur Assistent- oder Benutzernachrichten zu entfernen. Im Laufe der Zeit kann diese Methode zur Verwaltung der Unterhaltung dazu führen, dass die Qualität der Unterhaltung abnimmt, da der Kontext früherer Teile der Unterhaltung verloren geht.
Alternativ können Sie den Benutzer nach Erreichen des Token-Grenzwerts auffordern, eine neue Unterhaltung zu starten.