Migrasi dari Text Completions
Migrasi dari Text Completions ke Messages
Saat bermigrasi dari Text Completions ke Messages, pertimbangkan perubahan berikut.
Input dan output
Perubahan terbesar antara Text Completions dan Messages adalah cara Anda menentukan input model dan menerima output dari model.
Dengan Text Completions, input adalah string mentah:
prompt = "\n\nHuman: Halo\n\nAssistant: Hai, saya Claude. Bagaimana saya bisa membantu?\n\nHuman: Bisakah Anda menjelaskan Glikolisis kepada saya?\n\nAssistant:"
Dengan Messages, Anda menentukan daftar pesan input alih-alih prompt mentah:
Setiap pesan input memiliki role
dan content
.
Nama peran
API Text Completions mengharapkan giliran \n\nHuman:
dan \n\nAssistant:
secara bergantian, tetapi API Messages mengharapkan peran user
dan assistant
. Anda mungkin melihat dokumentasi yang merujuk ke giliran “human” atau “user”. Ini mengacu pada peran yang sama, dan akan menjadi “user” ke depannya.
Dengan Text Completions, teks yang dihasilkan model dikembalikan dalam nilai completion
dari respons:
>>> response = anthropic.completions.create(...)
>>> response.completion
" Hai, saya Claude"
Dengan Messages, respons adalah nilai content
, yang merupakan daftar blok konten:
>>> response = anthropic.messages.create(...)
>>> response.content
[{"type": "text", "text": "Hai, saya Claude"}]
Memasukkan kata-kata ke dalam mulut Claude
Dengan Text Completions, Anda dapat mengisi sebagian respons Claude sebelumnya:
prompt = "\n\nHuman: Halo\n\nAssistant: Halo, nama saya"
Dengan Messages, Anda dapat mencapai hasil yang sama dengan membuat pesan input terakhir memiliki peran assistant
:
messages = [
{"role": "human", "content": "Halo"},
{"role": "assistant", "content": "Halo, nama saya"},
]
Saat melakukannya, content
respons akan melanjutkan dari content
pesan input terakhir:
{
"role": "assistant",
"content": [{"type": "text", "text": " Claude. Bagaimana saya bisa membantu Anda hari ini?" }],
...
}
Prompt sistem
Dengan Text Completions, prompt sistem ditentukan dengan menambahkan teks sebelum giliran \n\nHuman:
pertama:
prompt = "Hari ini adalah 1 Januari 2024.\n\nHuman: Halo, Claude\n\nAssistant:"
Dengan Messages, Anda menentukan prompt sistem dengan parameter system
:
anthropic.Anthropic().messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
system="Hari ini adalah 1 Januari 2024.", # <-- prompt sistem
messages=[
{"role": "user", "content": "Halo, Claude"}
]
)
Nama model
API Messages mengharuskan Anda menentukan versi model lengkap (misalnya claude-3-opus-20240229
).
Sebelumnya kami mendukung penentuan hanya nomor versi utama (misalnya claude-2
), yang menghasilkan peningkatan otomatis ke versi minor. Namun, kami tidak lagi merekomendasikan pola integrasi ini, dan Messages tidak mendukungnya.
Alasan berhenti
Text Completions selalu memiliki stop_reason
salah satu dari:
"stop_sequence"
: Model berakhir secara alami, atau salah satu urutan berhenti khusus Anda dihasilkan."max_tokens"
: Model menghasilkanmax_tokens
konten yang Anda tentukan, atau mencapai maksimum mutlak.
Messages memiliki stop_reason
salah satu dari nilai berikut:
"end_turn"
: Giliran percakapan berakhir secara alami."stop_sequence"
: Salah satu urutan berhenti khusus yang Anda tentukan dihasilkan."max_tokens"
: (tidak berubah)
Menentukan token maksimum
- Text Completions: Parameter
max_tokens_to_sample
. Tidak ada validasi, tetapi nilai dibatasi per model. - Messages: Parameter
max_tokens
. Jika melewati nilai yang lebih tinggi dari yang didukung model, mengembalikan kesalahan validasi.
Format streaming
Saat menggunakan "stream": true
dengan Text Completions, respons menyertakan salah satu dari completion
, ping
, dan error
server-sent-events. Lihat Text Completions streaming untuk detailnya.
Messages dapat berisi beberapa blok konten dengan berbagai jenis, sehingga format streamingnya agak lebih kompleks. Lihat Messages streaming untuk detailnya.