Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Umgang mit benutzerdefinierten Chat-Vorlagen und Tokenizern
Benutzerdefinierte Chat-Vorlagen und Tokenizer sind wichtige Komponenten für die korrekte Formatierung von Konversationseingaben und die Verwaltung der Token-Generierung in Ihren importierten Modellen. Der Import benutzerdefinierter Modelle unterstützt den Import von Modellen mit benutzerdefinierten Chat-Vorlagen, die definieren, wie Konversationen mit mehreren Runden strukturiert und tokenisiert werden.
Modelle mit benutzerdefinierten Chat-Vorlagen importieren
Wenn Sie ein Modell mit benutzerdefinierten Chat-Vorlagen importieren, stellen Sie sicher, dass Sie die in der Hauptdokumentation zum Import benutzerdefinierter Modelle beschriebenen bewährten Methoden befolgen, einschließlich der Eingabe von Modellgewichten im sicheren Tensorformat und der Bereitstellung aller erforderlichen Konfigurationsdateien.
Anforderungen an das Format der Chat-Vorlage
Wenn Ihr Model eine benutzerdefinierte Chat-Vorlage verwendet und Sie diese Vorlage mit Amazon Bedrock verwenden möchten, müssen Sie die Chat-Vorlagendatei in einem der folgenden Formate hinzufügen:
-
chat_template.jinja— Eine Jinja2-based Vorlagendatei, die definiert, wie Nachrichten formatiert werden. -
chat_template.json— Eine JSON-Datei, die die Chat-Vorlage als Zeichenfolgenwert enthält. -
tokenizer_config.jsonmit eingebetteter Chat-Vorlage — Alternativ können Sie die Chat-Vorlage direkt alschat_templateFeld in Ihretokenizer_config.jsonDatei aufnehmen. Ein Beispiel findest du in der Datei Hermes-2-Protokenizer_config.json auf Hugging Face.
Der benutzerdefinierte Modellimport verarbeitet diese Dateien automatisch und nimmt sie während des Importvorgangs in die richtigen Verzeichnisse auf.
Vorrang der Chat-Vorlage
Wenn Sie mehrere Quellen für Chat-Vorlagen angeben, wendet Amazon Bedrock die folgenden Prioritätsregeln an:
-
Separate Chat-Vorlagendateien haben Vorrang — Wenn Sie sowohl eine separate Chat-Vorlagendatei (
chat_template.jinjaoderchat_template.json) ALS auch einchat_templateFeld in Ihrer verwendentokenizer_config.json, wird die separate Datei verwendet und die eingebettete Vorlagetokenizer_config.jsonwird ignoriert. -
Eingebettete Vorlage als Fallback — Wenn Sie keine separate Chat-Vorlagendatei bereitstellen, verwendet Amazon Bedrock das
chat_templateFeld aus Ihrertokenizer_config.jsonVorlage, falls vorhanden.
Warnung
Wählen Sie einen Ansatz: Um Verwirrung zu vermeiden und vorhersehbares Verhalten zu gewährleisten, empfehlen wir dringend, nur EINEN dieser Ansätze zu verwenden:
-
Option 1: Stellen Sie separate Chat-Vorlagendateien bereit (
chat_template.jinjaoderchat_template.json) ohne einchat_templateFeld in Ihremtokenizer_config.json. -
Option 2: Fügen Sie das
chat_templateFeld direkt in Ihre eintokenizer_config.jsonund stellen Sie keine separaten Vorlagendateien bereit.
Wenn Sie benutzerdefinierte Toolvorlagen oder komplexe Chat-Vorlagenkonfigurationen haben, empfehlen wir, Option 2 (Einbetten der Vorlagetokenizer_config.json) zu verwenden, da Sie so mehrere benannte Vorlagen (wie „default“ und „tool_use“) in einer einzigen Konfigurationsdatei definieren können.
Anmerkung
Die Chat-Vorlagendatei muss dem Format und den Benennungskonventionen von Hugging Face entsprechen. Stellen Sie sicher, dass Ihre Vorlage mit der Transformers Bibliothek kompatibel ist.
Beispiele für das Format von Chat-Vorlagen
Hier sind Beispiele für die beiden unterstützten Chat-Vorlagenformate:
Wichtig
Stellen Sie sicher, dass Ihre Chat-Vorlagendatei genau der Benennungskonvention (chat_template.jinjaoderchat_template.json) und dem Format entspricht, die in den obigen Beispielen gezeigt werden. Falsch formatierte Vorlagen können zu Import- oder Inferenzfehlern führen.
Modelle mit benutzerdefinierten Chat-Vorlagen aufrufen
Nachdem Sie ein Modell mit einer benutzerdefinierten Chat-Vorlage importiert haben, haben Sie zwei Möglichkeiten, das Modell mit korrekt formatierten Konversationseingaben aufzurufen:
Verwenden der OpenAI-API mit Nachrichten ChatCompletion
Wenn Sie Eingaben im Nachrichtenschemaformat bereitstellen, sollten Sie die ChatCompletion OpenAI-API verwenden. Wenn Sie dieses API-Format mit einem Modell verwenden, für das eine Chat-Vorlage (chat_template.jinjaoderchat_template.json) hochgeladen wurde, konvertiert Amazon Bedrock Ihre Eingabenachrichten mithilfe der Chat-Vorlage automatisch in das richtige Format.
Dies ist der empfohlene Ansatz, da er die nahtloseste Integration bietet und es Amazon Bedrock ermöglicht, die Chat-Vorlagenanwendung automatisch zu verarbeiten.
Beispiel: Verwendung der ChatCompletion OpenAI-API mit einer benutzerdefinierten Chat-Vorlage
import json import boto3 # Initialize Bedrock Runtime client client = boto3.client('bedrock-runtime', region_name='us-east-1') # Define the model ARN for your imported model with custom chat template model_id = 'arn:aws:bedrock:us-east-1:123456789012:imported-model/your-model-id' # Prepare the request payload using messages format payload = { "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello, how are you?" } ], "max_tokens": 150, "temperature": 0.7 } # Invoke the model response = client.invoke_model( modelId=model_id, body=json.dumps(payload), accept='application/json', contentType='application/json' ) # Parse and display the response response_body = json.loads(response['body'].read()) print(json.dumps(response_body, indent=2))
In diesem Beispiel wendet Amazon Bedrock Ihre benutzerdefinierte Chat-Vorlage automatisch auf das Nachrichten-Array an und konvertiert es in das für Ihr Modell geeignete Format.
Manueller Tokenisierungsansatz
Wenn Sie lieber die volle Kontrolle über die Chat-Vorlagenanwendung und den Tokenisierungsprozess haben möchten, können Sie die Chat-Vorlage auch manuell auf Ihre Konversation anwenden und dann die Completion-API (nicht ChatCompletion) mit dem vorformatierten Text verwenden.
Dieser Ansatz ist nützlich, wenn Sie die Anwendungslogik der Vorlage anpassen müssen oder wenn Sie mit speziellen Tokenisierungsanforderungen arbeiten.
Schritt 1: Chat-Vorlage lokal anwenden
Verwenden Sie den folgenden Codeausschnitt, um Ihre benutzerdefinierte Chat-Vorlage zu laden und sie lokal auf eine Konversation anzuwenden:
from transformers import AutoTokenizer # Configuration paths - update these with your actual paths TOKENIZER_PATH = "" # Path to tokenizer directory # Load tokenizer with updated chat template tokenizer = AutoTokenizer.from_pretrained(TOKENIZER_PATH) # Test chat template with sample conversation chat_history = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Hello, how are you?"}, ] # Apply chat template and display formatted output to make sure chat template works as expected formatted_chat = tokenizer.apply_chat_template(chat_history, tokenize=False) print(formatted_chat)
Dieser Code zeigt, wie Sie:
-
Laden Sie Ihre Tokenizer-Konfiguration aus den Modelldateien
-
Fügen Sie die benutzerdefinierte Chat-Vorlage zur Tokenizer-Konfiguration hinzu
-
Wenden Sie die Chat-Vorlage auf einen Konversationsverlauf an
-
Generieren Sie den formatierten Text, der an das Modell gesendet werden kann
Schritt 2: Mit Completion API aufrufen
Nachdem Sie die Chat-Vorlage lokal angewendet haben, verwenden Sie den formatierten Text mit der Completion-API:
import json import boto3 # Initialize Bedrock Runtime client client = boto3.client('bedrock-runtime', region_name='us-east-1') # Define the model ARN for your imported model model_id = 'arn:aws:bedrock:us-east-1:123456789012:imported-model/your-model-id' # Use the formatted_chat output from Step 1 as the prompt payload = { "prompt": formatted_chat, "max_tokens": 150, "temperature": 0.7 } # Invoke the model using Completion format (not ChatCompletion) response = client.invoke_model( modelId=model_id, body=json.dumps(payload), accept='application/json', contentType='application/json' ) # Parse and display the response response_body = json.loads(response['body'].read()) print(json.dumps(response_body, indent=2))
Warnung
Verwenden Sie immer den max_tokens Parameter: Wenn Sie die Completion-API mit benutzerdefinierten Modellimporten verwenden, verwenden Sie immer den max_tokens Parameter, um die Kompatibilität des OpenAI-Vervollständigungsschemas sicherzustellen. Dies vermeidet jegliche Übersetzungsverwirrung und gewährleistet ein konsistentes Verhalten in verschiedenen SDK-Implementierungen. Verwenden Sie keine modellspezifischen Parameternamen wie max_gen_len oder ähnliche Varianten.
Wichtig
Wenn Sie den manuellen Tokenisierungsansatz verwenden, müssen Sie das Completion-API-Format (mit prompt Feld) verwenden, nicht das ChatCompletion API-Format (mit Feld). messages Die ChatCompletion API erwartet unformatierte Nachrichten und versucht erneut, die Chat-Vorlage anzuwenden, was zu einer falschen Formatierung führt.
Bewährte Methoden
-
Verwenden Sie die ChatCompletion API, wenn möglich — Die ChatCompletion OpenAI-API mit dem Nachrichtenformat bietet die reibungsloseste Erfahrung und ermöglicht es Amazon Bedrock, die Anwendung der Chat-Vorlage automatisch zu verarbeiten.
-
Validieren Sie Ihre Chat-Vorlage — Bevor Sie Ihr Modell importieren, testen Sie Ihre Chat-Vorlage lokal mithilfe der Transformers Bibliothek, um sicherzustellen, dass sie das erwartete Ausgabeformat liefert.
-
Alle speziellen Token einbeziehen — Stellen Sie sicher, dass Ihre Chat-Vorlage alle erforderlichen speziellen Token (wie Sequenzanfang, Sequenzende und Rollenmarkierungen) enthält, die Ihr Modell erwartet.
-
Testen Sie mit Konversationen mit mehreren Runden — Stellen Sie sicher, dass Ihre Chat-Vorlage Konversationen mit wechselnden Benutzer- und Assistentennachrichten korrekt verarbeitet.
-
Erwägen Sie die visuelle Unterstützung — Wenn Ihr Modell multimodale Eingaben unterstützt, stellen Sie sicher, dass Ihre Chat-Vorlage eine Logik für den Umgang mit Bild- und Videoinhaltsmarkierungen enthält.
Warnung
Falsch formatierte Chat-Vorlagen können zu einer schlechten Modellleistung, unerwarteten Ausgaben oder Inferenzfehlern führen. Testen Sie Ihre Chat-Vorlage immer gründlich, bevor Sie sie für die Produktion bereitstellen.