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 Multi-Turn-Konversationen strukturiert und tokenisiert werden.
Importieren von Modellen mit benutzerdefinierten Chat-Vorlagen
Stellen Sie beim Import eines Modells mit benutzerdefinierten Chat-Vorlagen 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 Modell 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 einbinden:
-
chat_template.jinja— Eine auf Jinja2 basierende Vorlagendatei, die definiert, wie Nachrichten formatiert werden. -
chat_template.json— Eine JSON-Datei, die die Chat-Vorlage als Zeichenkettenwert 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 finden Sie unter Hermes-2-Pro tokenizer_config.jsonauf Hugging Face.
Der benutzerdefinierte Modellimport verarbeitet diese Dateien automatisch und nimmt sie während des Importvorgangs in die richtigen Verzeichnisse auf.
Vorrang vor Chat-Vorlagen
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 Ihre aufnehmentokenizer_config.json, wird die separate Datei verwendet und die eingebettete Vorlage in ignorierttokenizer_config.json. -
Eingebettete Vorlage als Fallback — Wenn Sie keine separate Chat-Vorlagendatei bereitstellen, verwendet Amazon Bedrock das
chat_templateFeld aus Ihrem,tokenizer_config.jsonfalls 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 (
chat_template.jinjaoderchat_template.json) bereit, ohne einchat_templateFeld in Ihre aufzunehmentokenizer_config.json. -
Option 2: Nehmen Sie das
chat_templateFeld direkt in Ihre auftokenizer_config.jsonund stellen Sie keine separaten Vorlagendateien bereit.
Wenn Sie über benutzerdefinierte Toolvorlagen oder komplexe Chat-Vorlagenkonfigurationen verfügen, empfehlen wir die Verwendung von Option 2 (Einbetten der Vorlage intokenizer_config.json), da Sie damit mehrere benannte Vorlagen (wie „default“ und „tool_use“) in einer einzigen Konfigurationsdatei definieren können.
Anmerkung
Die Chat-Vorlagendatei muss dem Hugging Face Face-Format und den Namenskonventionen 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 wurden. 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:
ChatCompletion OpenAI-API mit Nachrichten verwenden
Wenn Sie Eingaben im Nachrichtenschemaformat bereitstellen, sollten Sie die ChatCompletion OpenAI-API verwenden. Wenn Sie dieses API-Format mit einem Modell verwenden, das über eine hochgeladene Chat-Vorlage (chat_template.jinjaoderchat_template.json) verfügt, konvertiert Amazon Bedrock Ihre eingegebenen Nachrichten 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: ChatCompletion OpenAI-API mit benutzerdefinierter Chat-Vorlage verwenden
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 sie in das entsprechende Format für Ihr Modell.
Manueller Tokenisierungsansatz
Wenn Sie lieber die volle Kontrolle über die Anwendung der Chat-Vorlage 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 demonstriert, 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
Immer max_tokens Parameter verwenden: 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 Übersetzungsverwirrungen 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 Ansatz der manuellen Tokenisierung verwenden, müssen Sie das Completion-API-Format (mit prompt Feld) und nicht das ChatCompletion API-Format (mit Feld) verwenden. messages Die ChatCompletion API erwartet Rohnachrichten und versucht erneut, die Chat-Vorlage anzuwenden, was zu einer falschen Formatierung führt.
Bewährte Methoden
-
Verwenden Sie nach Möglichkeit die ChatCompletion API — Die ChatCompletion OpenAI-API mit Nachrichtenformat bietet die nahtloseste Erfahrung und ermöglicht es Amazon Bedrock, die Chat-Vorlagenanwendung automatisch zu verarbeiten.
-
Überprüfen 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 erzeugt.
-
Alle speziellen Token einbeziehen — Stellen Sie sicher, dass Ihre Chat-Vorlage alle erforderlichen speziellen Token (wie beginning-of-sequence end-of-sequence, und Rollenmarkierungen) enthält, die Ihr Modell erwartet.
-
Testen Sie mit Multi-Turn-Konversationen — Stellen Sie sicher, dass Ihre Chat-Vorlage Multi-Turn-Konversationen mit abwechselnden Benutzer- und Assistentennachrichten korrekt verarbeitet.
-
Ziehen Sie Vision-Unterstützung in Betracht — Wenn Ihr Modell multimodale Eingaben unterstützt, stellen Sie sicher, dass Ihre Chat-Vorlage Logik für den Umgang mit Bild- und Videoinhaltsmarkierungen enthält.
Warnung
Falsch formatierte Chat-Vorlagen können zu schlechter Modellleistung, unerwarteten Ergebnissen oder Inferenzfehlern führen. Testen Sie Ihre Chat-Vorlage immer gründlich, bevor Sie sie in der Produktion einsetzen.