

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
<a name="custom-chat-templates-tokenizers"></a>

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
<a name="import-chat-template"></a>

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
<a name="chat-template-format-requirements"></a>

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.json`mit eingebetteter Chat-Vorlage** — Alternativ können Sie die Chat-Vorlage direkt als `chat_template` Feld in Ihre `tokenizer_config.json` Datei aufnehmen. Ein Beispiel finden Sie unter [Hermes-2-Pro tokenizer\$1config.json](https://huggingface.co/NousResearch/Hermes-2-Pro-Llama-3-8B/blob/main/tokenizer_config.json#L2059) auf 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
<a name="chat-template-precedence"></a>

Wenn Sie mehrere Quellen für Chat-Vorlagen angeben, wendet Amazon Bedrock die folgenden Prioritätsregeln an:

1. **Separate Chat-Vorlagendateien haben Vorrang** — Wenn Sie sowohl eine separate Chat-Vorlagendatei (`chat_template.jinja`oder`chat_template.json`) ALS auch ein `chat_template` Feld in Ihre aufnehmen`tokenizer_config.json`, wird die separate Datei verwendet und die eingebettete Vorlage in ignoriert`tokenizer_config.json`.

1. **Eingebettete Vorlage als Fallback** — Wenn Sie keine separate Chat-Vorlagendatei bereitstellen, verwendet Amazon Bedrock das `chat_template` Feld aus Ihrem, `tokenizer_config.json` 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 (`chat_template.jinja`oder`chat_template.json`) bereit, ohne ein `chat_template` Feld in Ihre aufzunehmen`tokenizer_config.json`.
**Option 2: Nehmen** Sie das `chat_template` Feld direkt in Ihre auf `tokenizer_config.json` und 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 in`tokenizer_config.json`), da Sie damit mehrere benannte Vorlagen (wie „default“ und „tool\$1use“) 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
<a name="chat-template-examples"></a>

Hier sind Beispiele für die beiden unterstützten Chat-Vorlagenformate:

------
#### [ Jinja Format (chat\$1template.jinja) ]

Ein vereinfachtes Beispiel für eine auf Jinja2 basierende Chat-Vorlage:

```
{% for message in messages %}
{% if loop.first and message['role'] != 'system' %}
<|im_start|>system
You are a helpful assistant.<|im_end|>
{% endif %}
<|im_start|>{{ message['role'] }}
{{ message['content'] }}<|im_end|>
{% endfor %}
{% if add_generation_prompt %}
<|im_start|>assistant
{% endif %}
```

Ein vollständiges Beispiel finden Sie in der [GPT-OSSChat-Vorlage](https://huggingface.co/openai/gpt-oss-20b/blob/main/chat_template.jinja) auf Hugging Face.

------
#### [ JSON Format (chat\$1template.json) ]

Ein vereinfachtes Beispiel für eine JSON-basierte Chat-Vorlage mit Vision-Unterstützung:

```
{
    "chat_template": "{% for message in messages %}{% if loop.first and message['role'] != 'system' %}<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n{% endif %}<|im_start|>{{ message['role'] }}\n{% if message['content'] is string %}{{ message['content'] }}<|im_end|>\n{% else %}{% for content in message['content'] %}{% if content['type'] == 'image' %}<|vision_start|><|image_pad|><|vision_end|>{% elif 'text' in content %}{{ content['text'] }}{% endif %}{% endfor %}<|im_end|>\n{% endif %}{% endfor %}{% if add_generation_prompt %}<|im_start|>assistant\n{% endif %}"
}
```

Ein vollständiges Beispiel mit multimodaler Unterstützung finden Sie in der [Qwen2-VLChat-Vorlage](https://huggingface.co/Qwen/Qwen2-VL-72B-Instruct/blob/main/chat_template.json) auf Hugging Face.

------

**Wichtig**  
Stellen Sie sicher, dass Ihre Chat-Vorlagendatei genau der Benennungskonvention (`chat_template.jinja`oder`chat_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
<a name="invoke-custom-chat-templates"></a>

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
<a name="chatcompletion-api-approach"></a>

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.jinja`oder`chat_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
<a name="manual-tokenization-approach"></a>

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
<a name="apply-chat-template-locally"></a>

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:

1. Laden Sie Ihre Tokenizer-Konfiguration aus den Modelldateien

1. Fügen Sie die benutzerdefinierte Chat-Vorlage zur Tokenizer-Konfiguration hinzu

1. Wenden Sie die Chat-Vorlage auf einen Konversationsverlauf an

1. Generieren Sie den formatierten Text, der an das Modell gesendet werden kann

#### Schritt 2: Mit Completion API aufrufen
<a name="invoke-with-completion-api"></a>

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
<a name="chat-template-best-practices"></a>
+ **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.