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:

Python
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:

messages = [
  {"role": "user", "content": "Halo."},
  {"role": "assistant", "content": "Hai, saya Claude. Bagaimana saya bisa membantu?"},
  {"role": "user", "content": "Bisakah Anda menjelaskan Glikolisis kepada saya?"},
]

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:

Python
>>> response = anthropic.completions.create(...)
>>> response.completion
" Hai, saya Claude"

Dengan Messages, respons adalah nilai content, yang merupakan daftar blok konten:

Python
>>> response = anthropic.beta.messages.create(...)
>>> response.content
[{"type": "text", "text": "Hai, saya Claude"}]

Memasukkan kata-kata ke mulut Claude

Dengan Text Completions, Anda dapat mengisi sebagian respons Claude sebelumnya:

Python
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:

Python
messages = [
  {"role": "human", "content": "Halo"},
  {"role": "assistant", "content": "Halo, nama saya"},
]

Saat melakukannya, content respons akan melanjutkan dari content pesan input terakhir:

JSON
{
  "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:

Python
prompt = "Hari ini adalah 1 Januari 2024.\n\nHuman: Halo, Claude\n\nAssistant:"

Dengan Messages, Anda menentukan prompt sistem dengan parameter system:

Python
anthropic.Anthropic().beta.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": Entah model menghasilkan max_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.