Saat melakukan migrasi dari Text Completions ke Messages, pertimbangkan perubahan-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 berupa string mentah:

Python
prompt = "\n\nHuman: Hello there\n\nAssistant: Hi, I'm Claude. How can I help?\n\nHuman: Can you explain Glycolysis to me?\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: yang bergantian, tetapi API Messages mengharapkan peran user dan assistant. Anda mungkin melihat dokumentasi yang merujuk ke giliran “human” atau “user”. Ini merujuk ke 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
" Hi, I'm Claude"

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

Python
>>> response = anthropic.messages.create(...)
>>> response.content
[{"type": "text", "text": "Hi, I'm Claude"}]

Memasukkan kata-kata ke dalam mulut Claude

Dengan Text Completions, Anda dapat mengisi terlebih dahulu bagian dari respons Claude:

Python
prompt = "\n\nHuman: Hello\n\nAssistant: Hello, my name is"

Dengan Messages, Anda dapat mencapai hasil yang sama dengan membuat pesan input terakhir memiliki peran assistant:

Python
messages = [
  {"role": "human", "content": "Hello"},
  {"role": "assistant", "content": "Hello, my name is"},
]

Saat melakukan ini, content respons akan melanjutkan dari content pesan input terakhir:

JSON
{
  "role": "assistant",
  "content": [{"type": "text", "text": " Claude. How can I assist you today?" }],
  ...
}

System prompt

Dengan Text Completions, system prompt ditentukan dengan menambahkan teks sebelum giliran \n\nHuman: pertama:

Python
prompt = "Today is January 1, 2024.\n\nHuman: Hello, Claude\n\nAssistant:"

Dengan Messages, Anda menentukan system prompt dengan parameter system:

Python
anthropic.Anthropic().messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    system="Today is January 1, 2024.", # <-- system prompt
    messages=[
        {"role": "user", "content": "Hello, 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 berupa:

  • "stop_sequence": Model mengakhiri gilirannya secara alami, atau salah satu urutan stop kustom Anda dihasilkan.
  • "max_tokens": Model menghasilkan max_tokens konten yang Anda tentukan, atau mencapai maksimum absolutnya.

Messages memiliki stop_reason dengan salah satu nilai berikut:

  • "end_turn": Giliran percakapan berakhir secara alami.
  • "stop_sequence": Salah satu urutan stop kustom yang Anda tentukan dihasilkan.
  • "max_tokens": (tidak berubah)

Menentukan max tokens

  • Text Completions: parameter max_tokens_to_sample. Tidak ada validasi, tetapi nilai dibatasi per model.
  • Messages: parameter max_tokens. Jika melewatkan nilai yang lebih tinggi dari yang didukung model, mengembalikan error validasi.

Format streaming

Saat menggunakan "stream": true dengan Text Completions, respons mencakup event server-sent completion, ping, dan error. Lihat Text Completions streaming untuk detailnya.

Messages dapat berisi beberapa blok konten dengan berbagai tipe, sehingga format streamingnya agak lebih kompleks. Lihat Messages streaming untuk detailnya.

Was this page helpful?