Menggunakan Converse API - Amazon Bedrock

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan Converse API

Untuk menggunakan ConverseAPI, Anda memanggil ConverseStream operasi Converse atau untuk mengirim pesan ke model. Untuk meneleponConverse, Anda memerlukan izin untuk bedrock:InvokeModel operasi. Untuk meneleponConverseStream, Anda memerlukan izin untuk bedrock:InvokeModelWithResponseStream operasi.

Permintaan

Anda menentukan model yang ingin Anda gunakan dengan mengatur modelId bidang. Untuk daftar model IDs yang didukung Amazon Bedrock, lihatModel Amazon Bedrock IDs.

Percakapan adalah serangkaian pesan antara pengguna dan model. Anda memulai percakapan dengan mengirim pesan sebagai pengguna (peran pengguna) ke model. Model, bertindak sebagai asisten (peran asisten), kemudian menghasilkan respons yang dikembalikan dalam pesan. Jika diinginkan, Anda dapat melanjutkan percakapan dengan mengirimkan pesan peran pengguna lebih lanjut ke model. Untuk mempertahankan konteks percakapan, pastikan untuk menyertakan pesan peran asisten yang Anda terima dari model dalam permintaan berikutnya.

Anda memberikan pesan yang ingin diteruskan ke model di messages bidang, yang memetakan ke array objek Pesan. Setiap Pesan berisi konten untuk pesan dan peran yang dimainkan pesan dalam percakapan.

catatan

Amazon Bedrock tidak menyimpan teks, gambar, atau dokumen apa pun yang Anda berikan sebagai konten. Data hanya digunakan untuk menghasilkan respons. Saat menggunakan ConverseAPI, Anda harus menggunakan dokumen yang tidak dikompresi dan diterjemahkan yang berukuran kurang dari 4,5 MB.

Anda menyimpan konten untuk pesan di content bidang, yang memetakan ke array ContentBlockobjek. Dalam masing-masing ContentBlock, Anda dapat menentukan salah satu bidang berikut (untuk melihat model apa yang mendukung modalitas apa, lihatModel dan fitur model yang didukung):

text

textBidang memetakan ke string yang menentukan prompt. textBidang ditafsirkan bersama bidang lain yang ditentukan dalam hal yang sama ContentBlock.

Berikut ini menunjukkan objek Message dengan content array yang hanya berisi teks ContentBlock:

{ "role": "user | assistant", "content": [ { "text": "string" } ] }
image

imageBidang memetakan ke sebuah ImageBlock. Lulus byte mentah, dikodekan dalam base64, untuk gambar di lapangan. bytes Jika Anda menggunakan AWS SDK, Anda tidak perlu menyandikan byte di base64.

Jika Anda mengecualikan text bidang, model akan menggambarkan gambar.

Berikut ini menunjukkan objek Message dengan content array yang hanya berisi gambar ContentBlock:

{ "role": "user", "content": [ { "image": { "format": "png | jpeg | gif | webp", "source": { "bytes": "image in bytes" } } } ] }
document

documentBidang memetakan ke sebuah DocumentBlock. Jika Anda menyertakanDocumentBlock, periksa apakah permintaan Anda sesuai dengan batasan berikut:

  • Di content bidang objek Pesan, Anda juga harus menyertakan text bidang dengan prompt yang terkait dengan dokumen.

  • Lulus byte mentah, dikodekan dalam base64, untuk dokumen di lapangan. bytes Jika Anda menggunakan AWS SDK, Anda tidak perlu menyandikan byte dokumen di base64.

  • nameBidang hanya dapat berisi karakter berikut:

    • Karakter alfanumerik

    • Karakter spasi (tidak lebih dari satu berturut-turut)

    • Tanda hubung

    • Tanda kurung

    • Kurung persegi

    catatan

    nameBidang ini rentan terhadap suntikan cepat, karena model mungkin secara tidak sengaja menafsirkannya sebagai instruksi. Oleh karena itu, kami menyarankan Anda menentukan nama netral.

Berikut ini menunjukkan objek Message dengan content array yang hanya berisi dokumen ContentBlockdan teks yang menyertainya diperlukan. ContentBlock

{ "role": "user", "content": [ { "text": "string" }, { "document": { "format": "pdf | csv | doc | docx | xls | xlsx | html | txt | md", "name": "string", "source": { "bytes": "document in bytes" } } } ] }

Bidang lainnya ContentBlock adalah untuk penggunaan alat.

Anda menentukan peran di role lapangan. Peran tersebut dapat berupa salah satu dari yang berikut:

  • pengguna — Manusia yang mengirim pesan ke model.

  • asisten — Model yang mengirim pesan kembali ke pengguna manusia.

catatan

Pembatasan berikut berkaitan dengan content bidang:

  • Anda dapat menyertakan hingga 20 gambar. Ukuran, tinggi, dan lebar setiap gambar harus tidak lebih dari 3,75 MB, 8.000 px, dan 8.000 px, masing-masing.

  • Anda dapat memasukkan hingga lima dokumen. Ukuran setiap dokumen harus tidak lebih dari 4,5 MB.

  • Anda hanya dapat menyertakan gambar dan dokumen jika role adauser.

Dalam messages contoh berikut, pengguna meminta daftar tiga lagu pop, dan model menghasilkan daftar lagu.

[ { "role": "user", "content": [ { "text": "Create a list of 3 pop songs." } ] }, { "role": "assistant", "content": [ { "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"As It Was\" by Harry Styles\n2. \"Easy On Me\" by Adele\n3. \"Unholy\" by Sam Smith and Kim Petras" } ] } ]

Prompt sistem adalah jenis prompt yang memberikan instruksi atau konteks kepada model tentang tugas yang harus dilakukan, atau persona yang harus diadopsi selama percakapan. Anda dapat menentukan daftar prompt sistem untuk permintaan di bidang system (SystemContentBlock), seperti yang ditunjukkan pada contoh berikut.

[ { "text": "You are an app that creates play lists for a radio station that plays rock and pop music. Only return song names and the artist. " } ]

Parameter inferensi

Converse API mendukung kumpulan dasar parameter inferensi yang Anda tetapkan di inferenceConfig bidang () InferenceConfiguration. Set dasar parameter inferensi adalah:

  • maxTokens— Jumlah maksimum token untuk memungkinkan dalam respons yang dihasilkan.

  • stopSequences— Daftar urutan berhenti. Urutan berhenti adalah urutan karakter yang menyebabkan model berhenti menghasilkan respons.

  • suhu — Kemungkinan model memilih opsi probabilitas yang lebih tinggi sambil menghasilkan respons.

  • TopP — Persentase kandidat yang paling mungkin yang dipertimbangkan model untuk token berikutnya.

Untuk informasi selengkapnya, lihat Mempengaruhi generasi respons dengan parameter inferensi.

Contoh berikut JSON menetapkan parameter temperature inferensi.

{"temperature": 0.5}

Jika model yang Anda gunakan memiliki parameter inferensi tambahan, Anda dapat mengatur parameter tersebut dengan menentukannya seperti JSON di additionalModelRequestFields bidang. Contoh berikut JSON menunjukkan cara mengaturtop_k, yang tersedia di Anthropic Claude model, tetapi bukan parameter inferensi dasar dalam pesanAPI.

{"top_k": 200}

Anda dapat menentukan jalur untuk parameter model tambahan di additionalModelResponseFieldPaths lapangan, seperti yang ditunjukkan pada contoh berikut.

[ "/stop_sequence" ]

APIMengembalikan bidang tambahan yang Anda minta di additionalModelResponseFields bidang.

Respons

Respons yang Anda dapatkan dari Converse API tergantung pada operasi yang Anda panggil, Converse atauConverseStream.

Tanggapan Converse

Dalam tanggapan dariConverse, output bidang (ConverseOutput) berisi pesan (Pesan) yang dihasilkan model. Konten pesan ada di bidang content (ContentBlock) dan peran (useratauassistant) yang sesuai dengan pesan ada di role bidang.

metricsBidang (ConverseMetrics) menyertakan metrik untuk panggilan. Untuk menentukan mengapa model berhenti menghasilkan konten, periksa stopReason bidangnya. Anda bisa mendapatkan informasi tentang token yang diteruskan ke model dalam permintaan, dan token yang dihasilkan dalam respons, dengan memeriksa usage bidang (TokenUsage). Jika Anda menentukan bidang respons tambahan dalam permintaan, API mengembalikannya seperti JSON di additionalModelResponseFields bidang.

Contoh berikut menunjukkan respons dari Converse saat Anda meneruskan prompt yang dibahas diPermintaan.

{ "output": { "message": { "role": "assistant", "content": [ { "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"Wannabe\" by Spice Girls\n2. \"Bitter Sweet Symphony\" by The Verve \n3. \"Don't Look Back in Anger\" by Oasis" } ] } }, "stopReason": "end_turn", "usage": { "inputTokens": 125, "outputTokens": 60, "totalTokens": 185 }, "metrics": { "latencyMs": 1175 } }

ConverseStream respon

Jika Anda memanggil ConverseStream untuk mengalirkan respons dari model, aliran dikembalikan di bidang stream respons. Aliran memancarkan peristiwa berikut dalam urutan sebagai berikut.

  1. messageStart(MessageStartEvent). Acara awal untuk sebuah pesan. Termasuk peran untuk pesan.

  2. contentBlockStart(ContentBlockStartEvent). Acara mulai blok Konten. Hanya menggunakan alat.

  3. contentBlockDelta(ContentBlockDeltaEvent). Acara delta blok Konten. Termasuk sebagian teks yang dihasilkan model atau json masukan sebagian untuk penggunaan alat.

  4. contentBlockStop(ContentBlockStopEvent). Peristiwa penghentian blok Konten.

  5. messageStop(MessageStopEvent). Acara berhenti untuk pesan. Termasuk alasan mengapa model berhenti menghasilkan output.

  6. metadata(ConverseStreamMetadataEvent). Metadata untuk permintaan. Metadata mencakup penggunaan token in usage (TokenUsage) dan metrik untuk panggilan in metrics (). ConverseStreamMetadataEvent

ConverseStream mengalirkan blok konten lengkap sebagai ContentBlockStartEvent acara, satu atau beberapa ContentBlockDeltaEvent acara, dan ContentBlockStopEvent acara. Gunakan contentBlockIndex bidang sebagai indeks untuk mengkorelasikan peristiwa yang membentuk blok konten.

Contoh berikut adalah sebagian respon dariConverseStream.

{'messageStart': {'role': 'assistant'}} {'contentBlockDelta': {'delta': {'text': ''}, 'contentBlockIndex': 0}} {'contentBlockDelta': {'delta': {'text': ' Title'}, 'contentBlockIndex': 0}} {'contentBlockDelta': {'delta': {'text': ':'}, 'contentBlockIndex': 0}} . . . {'contentBlockDelta': {'delta': {'text': ' The'}, 'contentBlockIndex': 0}} {'messageStop': {'stopReason': 'max_tokens'}} {'metadata': {'usage': {'inputTokens': 47, 'outputTokens': 20, 'totalTokens': 67}, 'metrics': {'latencyMs': 100.0}}}