Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menangani Template Obrolan Kustom dan Tokenizers
Template obrolan khusus dan tokenizer adalah komponen penting untuk memformat input percakapan dengan benar dan mengelola pembuatan token dalam model impor Anda. Impor Model Kustom mendukung mengimpor model dengan templat obrolan khusus yang menentukan bagaimana percakapan multi-putaran terstruktur dan diberi token.
Mengimpor Model dengan Template Obrolan Kustom
Saat mengimpor model dengan templat obrolan khusus, pastikan Anda mengikuti praktik terbaik yang diuraikan dalam dokumentasi Impor Model Kustom utama, termasuk memasukkan bobot model dalam format tensor aman dan menyediakan semua file konfigurasi yang diperlukan.
Persyaratan Format Templat Obrolan
Jika model Anda menggunakan templat obrolan khusus dan Anda ingin menggunakan templat itu dengan Amazon Bedrock, Anda harus menyertakan file templat obrolan dalam salah satu format berikut:
-
chat_template.jinja— File template berbasis Jinja2 yang mendefinisikan bagaimana pesan diformat. -
chat_template.json- File JSON yang berisi template obrolan sebagai nilai string. -
tokenizer_config.jsondengan template obrolan tertanam - Atau, Anda dapat menyertakan template obrolan langsung di dalamtokenizer_config.jsonfile Anda sebagaichat_templatebidang. Sebagai contoh, lihat Hermes-2-Pro tokenizer_config.jsondi Hugging Face.
Impor Model Kustom akan secara otomatis memproses file-file ini dan memasukkannya ke dalam direktori yang benar selama proses impor.
Prioritas Templat Obrolan
Jika Anda menyediakan beberapa sumber templat obrolan, Amazon Bedrock menerapkan aturan prioritas berikut:
-
File template obrolan terpisah diutamakan - Jika Anda menyertakan file template obrolan terpisah (
chat_template.jinjaatauchat_template.json) DANchat_templatebidang di Andatokenizer_config.json, file terpisah akan digunakan dan templat yang disematkantokenizer_config.jsonakan diabaikan. -
Template tertanam sebagai fallback - Jika Anda tidak menyediakan file template obrolan terpisah, Amazon Bedrock akan menggunakan
chat_templatebidang dari jika ada.tokenizer_config.json
Awas
Pilih satu pendekatan: Untuk menghindari kebingungan dan memastikan perilaku yang dapat diprediksi, kami sangat menyarankan hanya menggunakan SATU dari pendekatan ini:
-
Opsi 1: Menyediakan file template obrolan terpisah (
chat_template.jinjaatauchat_template.json) tanpa menyertakanchat_templatebidang di file Andatokenizer_config.json. -
Opsi 2: Sertakan
chat_templatebidang langsung di Andatokenizer_config.jsondan jangan berikan file template terpisah.
Jika Anda memiliki templat alat khusus atau konfigurasi templat obrolan yang kompleks, sebaiknya gunakan Opsi 2 (menyematkan templat ditokenizer_config.json) karena memungkinkan Anda untuk menentukan beberapa templat bernama (seperti “default” dan “tool_use”) dalam satu file konfigurasi.
catatan
File template obrolan harus mengikuti format Hugging Face dan konvensi penamaan. Pastikan template Anda kompatibel dengan Transformers perpustakaan.
Contoh Format Templat Obrolan
Berikut adalah contoh dari dua format template obrolan yang didukung:
penting
Pastikan file templat obrolan Anda mengikuti konvensi penamaan yang tepat (chat_template.jinjaatauchat_template.json) dan format yang ditunjukkan pada contoh di atas. Templat yang diformat dengan tidak benar dapat menyebabkan kegagalan impor atau inferensi.
Memanggil Model dengan Template Obrolan Kustom
Setelah Anda mengimpor model dengan templat obrolan khusus, Anda memiliki dua opsi untuk menjalankan model dengan input percakapan yang diformat dengan benar:
Menggunakan OpenAI ChatCompletion API dengan Pesan
Jika Anda memberikan input dalam format skema pesan, Anda harus menggunakan OpenAI API. ChatCompletion Saat Anda menggunakan format API ini dengan model yang memiliki templat obrolan yang diunggah (chat_template.jinjaatauchat_template.json), Amazon Bedrock akan secara otomatis mengonversi pesan masukan Anda ke format yang benar menggunakan templat obrolan.
Ini adalah pendekatan yang disarankan karena menyediakan integrasi yang paling mulus dan memungkinkan Amazon Bedrock untuk menangani aplikasi template obrolan secara otomatis.
Contoh: Menggunakan OpenAI ChatCompletion API dengan template obrolan khusus
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))
Dalam contoh ini, Amazon Bedrock akan secara otomatis menerapkan template obrolan kustom Anda ke array pesan, mengubahnya menjadi format yang sesuai untuk model Anda.
Pendekatan Tokenisasi Manual
Atau, jika Anda lebih suka memiliki kontrol penuh atas aplikasi templat obrolan dan proses tokenisasi, Anda dapat menerapkan templat obrolan secara manual ke percakapan Anda dan kemudian menggunakan API Penyelesaian (bukan ChatCompletion) dengan teks yang telah diformat sebelumnya.
Pendekatan ini berguna ketika Anda perlu menyesuaikan logika aplikasi template atau ketika bekerja dengan persyaratan tokenisasi khusus.
Langkah 1: Terapkan Template Obrolan Secara Lokal
Gunakan cuplikan kode berikut untuk memuat templat obrolan khusus Anda dan menerapkannya ke percakapan secara lokal:
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)
Kode ini menunjukkan cara:
-
Muat konfigurasi tokenizer Anda dari file model
-
Tambahkan template obrolan khusus ke konfigurasi tokenizer
-
Terapkan templat obrolan ke riwayat percakapan
-
Hasilkan teks yang diformat yang dapat dikirim ke model
Langkah 2: Panggil dengan API Penyelesaian
Setelah menerapkan template obrolan secara lokal, gunakan teks yang diformat dengan 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))
Awas
Selalu gunakan max_tokens parameter: Saat menggunakan Completion API dengan impor model khusus, selalu gunakan max_tokens parameter untuk memastikan kompatibilitas skema penyelesaian OpenAI. Ini menghindari kebingungan terjemahan dan memastikan perilaku yang konsisten di berbagai implementasi SDK. Jangan gunakan nama parameter khusus model seperti max_gen_len atau varian serupa.
penting
Saat menggunakan pendekatan tokenisasi manual, Anda harus menggunakan format API Penyelesaian (dengan prompt bidang), bukan format ChatCompletion API (dengan messages bidang). ChatCompletion API mengharapkan pesan mentah dan akan mencoba menerapkan template obrolan lagi, yang mengakibatkan pemformatan yang salah.
Praktik Terbaik
-
Gunakan ChatCompletion API bila memungkinkan - ChatCompletion API OpenAI dengan format pesan memberikan pengalaman paling mulus dan memungkinkan Amazon Bedrock menangani aplikasi template obrolan secara otomatis.
-
Validasi templat obrolan Anda — Sebelum mengimpor model Anda, uji templat obrolan Anda secara lokal menggunakan Transformers pustaka untuk memastikannya menghasilkan format keluaran yang diharapkan.
-
Sertakan semua token khusus — Pastikan templat obrolan Anda mencakup semua token khusus yang diperlukan (seperti beginning-of-sequence end-of-sequence,, dan penanda peran) yang diharapkan model Anda.
-
Uji dengan percakapan multi-putaran — Validasi bahwa template obrolan Anda menangani percakapan multi-putaran dengan benar dengan pesan pengguna dan asisten bergantian.
-
Pertimbangkan dukungan visi - Jika model Anda mendukung input multimodal, pastikan template obrolan Anda menyertakan logika untuk menangani penanda konten gambar dan video.
Awas
Templat obrolan yang salah diformat dapat mengakibatkan kinerja model yang buruk, output yang tidak terduga, atau kegagalan inferensi. Selalu uji template obrolan Anda secara menyeluruh sebelum menerapkan ke produksi.